Aller au contenu
Administration Linux medium

Nix : maîtriser le gestionnaire de paquets reproductible

8 min de lecture

Nix Logo

Nix est un gestionnaire de paquets qui fonctionne sur n’importe quelle distribution Linux et macOS. Contrairement à APT, DNF ou Pacman, chaque paquet est isolé dans /nix/store/ avec ses dépendances exactes — deux versions de Python ou d’OpenSSL coexistent sans conflit. Chaque modification crée un instantané réversible, et un fichier déclaratif suffit à reproduire un environnement identique sur n’importe quelle machine. Cette section couvre 12 guides progressifs, du premier contact avec l’écosystème jusqu’aux flakes et aux cas pratiques DevOps.

Gérer des paquets avec les outils traditionnels pose des problèmes que chaque administrateur et développeur finit par rencontrer. Nix les résout structurellement :

Problème courantAvec apt / dnfAvec Nix
Deux projets exigent des versions différentes de PythonConflit — une seule version systèmeCoexistence native dans /nix/store/
Une mise à jour casse un service en productionRollback impossible ou risquéRetour à la génération précédente en une commande
« Ça marche sur ma machine »Versions dépendent de l’historique d’installationMême fichier déclaratif = même résultat partout
Tester un outil sans polluer le systèmeInstallation manuelle + nettoyagenix shell nixpkgs#outil — rien ne reste après
Reproduire un environnement de CI identique au poste de devScripts d’installation fragilesflake.lock verrouille chaque dépendance

Le concept clé : Nix calcule un hash cryptographique à partir de tout ce qui entre dans la construction d’un paquet (sources, dépendances, compilateur, options). Deux builds identiques sur deux machines différentes produisent le même hash — c’est la reproductibilité garantie.

Ces guides sont conçus pour :

  • Les administrateurs système qui veulent des environnements reproductibles, un rollback fiable et une gestion propre de plusieurs versions d’un même outil.
  • Les DevOps et SRE qui cherchent à standardiser les environnements de développement, fiabiliser les pipelines CI/CD et distribuer un outillage cohérent à toute l’équipe.
  • Les développeurs qui passent du temps à configurer Python, Node.js ou Rust sur chaque machine au lieu de coder.

Prérequis : être à l’aise avec la ligne de commande Linux et des bases d’administration système (variables d’environnement, PATH, gestion des paquets). Aucune connaissance préalable de Nix n’est nécessaire — le premier guide part de zéro.

Parcours A — Découverte : suivez les guides 1 à 4 dans l’ordre. Vous comprendrez l’écosystème, saurez installer Nix, naviguer dans le store et utiliser les commandes modernes au quotidien. Comptez environ 2 heures.

Parcours B — Configuration système et environnements : après le parcours A, enchaînez avec les guides 6 (langage), 7 (configuration NixOS) et 8 (environnements de développement). Vous saurez déclarer un système NixOS complet et créer des shell.nix reproductibles pour vos projets. Comptez 3 à 4 heures supplémentaires.

Parcours C — Flakes et production : ajoutez les guides 9 (factorisation), 10 (flakes) et 11 (cas pratiques DevOps) pour modulariser votre configuration, verrouiller les dépendances avec flake.lock et intégrer Nix dans votre CI/CD. Ce parcours suppose une bonne compréhension des guides précédents.

Nix introduit un vocabulaire spécifique qu’il est utile de connaître avant de plonger dans les guides :

ConceptRôle
Store (/nix/store/)Répertoire où chaque paquet est stocké avec ses dépendances, identifié par un hash unique. Rien n’est modifié en place — chaque version coexiste.
ProfilEnsemble de liens symboliques pointant vers les paquets actifs. Votre PATH pointe vers le profil, pas directement vers le store.
GénérationInstantané de votre profil à un moment donné. Chaque installation ou suppression crée une nouvelle génération. Le rollback restaure une génération précédente.
NixpkgsLe dépôt principal de paquets Nix — plus de 100 000 paquets, le plus grand dépôt de paquets au monde.
DérivationLa « recette de construction » d’un paquet : sources, dépendances, étapes de build, le tout hashé pour garantir la reproductibilité.
FlakeUnité de composition avec inputs verrouillés (flake.lock). Remplace les channels pour une reproductibilité garantie entre machines.
ChannelMéthode classique (pré-flakes) pour pointer vers une branche de nixpkgs. Encore utilisé mais progressivement remplacé par les flakes.
PiègeImpactCorrectif
Mélanger nix-env et nix profileProfils corrompus, paquets invisiblesChoisir un seul mode — de préférence nix profile (guide 4)
Ne jamais lancer le garbage collector/nix/store/ grossit indéfiniment (50 Go+ facilement)Planifier nix-collect-garbage -d régulièrement (guide 3)
Oublier git add avec les flakesnix develop ne voit pas les fichiers non suivisToujours git add avant nix build ou nix develop (guide 10)
Utiliser <nixpkgs> sans figer la versionRésultats différents selon la machine et le channelPinner avec fetchTarball (guide 9) ou passer aux flakes (guide 10)
Copier un shell.nix sans comprendre le langageImpossible de diagnostiquer ou d’adapterApprendre les bases du langage Nix (guide 6)
Ignorer nix flake check en CIErreurs de structure non détectéesAjouter nix flake check dans le pipeline (guide 10)
  • Nix isole chaque paquet dans /nix/store/ avec un hash unique — pas de « dependency hell ».
  • Les profils et générations permettent un rollback instantané après toute modification.
  • Les commandes modernes (nix shell, nix develop, nix build) remplacent progressivement les classiques (nix-env, nix-shell).
  • Le langage Nix est fonctionnel et déclaratif — vous décrivez l’état souhaité, Nix calcule comment y arriver.
  • Les flakes verrouillent les dépendances avec flake.lock pour une reproductibilité garantie entre machines.
  • Nixpkgs contient plus de 100 000 paquets — le plus grand dépôt de paquets au monde.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn