
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.
Ce que couvre cette section
Section intitulée « Ce que couvre cette section »| # | Guide | Niveau |
|---|---|---|
| 1 | Comprendre l’écosystème Nix | Débutant |
| 2 | Installer Nix sur Linux | Débutant |
| 3 | Store, profils et générations | Débutant |
| 4 | Commandes modernes : shell, profile, search, run | Débutant / Intermédiaire |
| 5 | Commandes classiques : nix-env, nix-shell, nix-build | Intermédiaire |
| 6 | Bases du langage Nix | Intermédiaire |
| 7 | Écrire une première configuration NixOS | Intermédiaire |
| 8 | Environnements de développement reproductibles | Intermédiaire |
| 9 | Import, factorisation et pinning | Intermédiaire / Avancé |
| 10 | Comprendre et utiliser les flakes | Avancé |
| 11 | Cas pratiques DevOps | Avancé |
| 12 | NixOS : installer et évaluer un premier système en VM KVM | Avancé |
Pourquoi Nix
Section intitulée « Pourquoi Nix »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 courant | Avec apt / dnf | Avec Nix |
|---|---|---|
| Deux projets exigent des versions différentes de Python | Conflit — une seule version système | Coexistence native dans /nix/store/ |
| Une mise à jour casse un service en production | Rollback 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’installation | Même fichier déclaratif = même résultat partout |
| Tester un outil sans polluer le système | Installation manuelle + nettoyage | nix shell nixpkgs#outil — rien ne reste après |
| Reproduire un environnement de CI identique au poste de dev | Scripts d’installation fragiles | flake.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.
À qui s’adresse cette formation
Section intitulée « À qui s’adresse cette formation »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 recommandé
Section intitulée « Parcours recommandé »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.
Les concepts clés de Nix
Section intitulée « Les concepts clés de Nix »Nix introduit un vocabulaire spécifique qu’il est utile de connaître avant de plonger dans les guides :
| Concept | Rô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. |
| Profil | Ensemble de liens symboliques pointant vers les paquets actifs. Votre PATH pointe vers le profil, pas directement vers le store. |
| Génération | Instantané 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. |
| Nixpkgs | Le dépôt principal de paquets Nix — plus de 100 000 paquets, le plus grand dépôt de paquets au monde. |
| Dérivation | La « recette de construction » d’un paquet : sources, dépendances, étapes de build, le tout hashé pour garantir la reproductibilité. |
| Flake | Unité de composition avec inputs verrouillés (flake.lock). Remplace les channels pour une reproductibilité garantie entre machines. |
| Channel | Méthode classique (pré-flakes) pour pointer vers une branche de nixpkgs. Encore utilisé mais progressivement remplacé par les flakes. |
Pièges courants avec Nix
Section intitulée « Pièges courants avec Nix »| Piège | Impact | Correctif |
|---|---|---|
Mélanger nix-env et nix profile | Profils corrompus, paquets invisibles | Choisir 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 flakes | nix develop ne voit pas les fichiers non suivis | Toujours git add avant nix build ou nix develop (guide 10) |
Utiliser <nixpkgs> sans figer la version | Résultats différents selon la machine et le channel | Pinner avec fetchTarball (guide 9) ou passer aux flakes (guide 10) |
Copier un shell.nix sans comprendre le langage | Impossible de diagnostiquer ou d’adapter | Apprendre les bases du langage Nix (guide 6) |
Ignorer nix flake check en CI | Erreurs de structure non détectées | Ajouter nix flake check dans le pipeline (guide 10) |
Les guides
Section intitulée « Les guides »À retenir
Section intitulée « À retenir »- 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.lockpour une reproductibilité garantie entre machines. - Nixpkgs contient plus de 100 000 paquets — le plus grand dépôt de paquets au monde.