Développement logiciel

Présentation de Nix (et de son univers)

Nix est un gestionnaire de paquets logiciels. Encore un.

Qu’ils soient liés à un système d’exploitation (APT pour Debian, RPM pour Red Hat, Pacman pour Archlinux …) ou à une technologie de développement logiciel (NPM pour Node.js, repris ensuite par d’autres), ces gestionnaires de paquets sont légion. Ils permettent d’installer des logiciels désirés et leurs dépendances à partir de dépôts en ligne (idéalement) de confiance.

Chacun y va de sa spécificité technique … ou pas, quand la seule distinction d’un gestionnaire de paquet est d’être celui choisi officiellement par telle ou telle organisation (typiquement, une distribution Linux).

Alors pourquoi Nix ? A t’il quelque chose de concret à apporter ?

Oui !

La spécificité de Nix est son approche fonctionnelle, c’est à dire inspirée par le modèle de la programmation fonctionnelle.

Un Gestionnaire de paquet fonctionnel

Nix s’inspire de la programmation fonctionnelle et des types de données fonctionnels. Cela induit plusieurs caractéristiques :

L’Univers autour de Nix

Dans le monde Linux, quand on a un gestionnaire de paquets, il sert inévitablement de fondation à tout un univers bâti autour : distributions logiciels (c’est à dire systèmes d’exploitations), dépôts logiciels divers et variés …

Le Système d’exploitation : NixOS

Dans le monde des distributions Linux, il est courant qu’un gestionnaire de paquet soit fait uniquement pour constituer l’élément central d’une distribution donnée (même s’il peut ensuite être récupéré par d’autres distributions qui seront alors dites « dérivées »).

Nix, quant à lui, est un gestionnaire de paquets disponible sur de multiples distributions. Sur ces distributions, il fait donc figure de gestionnaire de paquets secondaire par rapport au gestionnaire officiel de la distribution.

NixOS est une distribution Linux faite autour de Nix, comme la distribution Debian est faite autour d’APT ou la distribution Red Hat autour de RPM.

L’intérêt d’utiliser NixOS, plutôt que simplement Nix sur une autre distribution, est de pouvoir bénéficier de la puissance de Nix sur l’intégralité du système installé (jusqu’au noyau) plutôt que seulement pour les applications installées par dessus le système.

Dépôts logiciels

Nixpkgs, la collection standard de paquets Nix, contient plus de 80 000 paquets, ce qui est considérable. Cela fait de NixOS la distribution la plus à jour en logiciels et la fait systématiquement figurer dans le top 3 des distributions les plus fournies en paquets.

Ces paquets sont organisés en canaux, qui peuvent correspondre à des versions successives de NixOS ou à des dépôts thématiques.

Nix pour le développement logiciel

Nix n’est pas seulement un gestionnaire de paquets destinés à être installés sur un système d’exploitation, comme APT ou RPM, mais également un gestionnaire de paquets de développement, comme Maven dans le monde Java ou NPM dans le monde Javascript.

Mais à la différence de ces derniers, Nix n’est pas dédié à un langage de programmation particulier.

C’est peut être dans la communauté des développeurs Haskell, qui (logiquement) se sentent des affinités avec son approche fonctionnelle, qu’il est le plus utilisé. Mais je l’ai également vu utilisé par des développeurs C++ et Python.

Là aussi, l’approche fonctionnelle fait des merveilles. Il est ainsi possible d’installer des dépendances de développement correspondant à différents projets dans des environnements parfaitement isolés les uns des autres. On a donc la possibilité de travailler, sur un même poste de développement, sur des projets qui nécessitent des dépendances antinomiques (par exemple des versions différentes d’une même dépendance).

Copyright © 2023 Guillaume Ponce
Creative Commons - Attribution - Partage dans les mêmes conditions