Skip to content

Pourquoi J'aime NixOS — L'OS Qui Traite Votre Machine Comme du Code

La plupart des systèmes d'exploitation se transforment lentement en tas d'état. Vous installez des paquets, tweakz des settings, essayez des outils au hasard, en supprimez certains, mettez à jour au fil du temps, et après un moment vous avez une machine qui fonctionne mais d'une façon que vous ne pouvez pas expliquer de premiers principes. NixOS propose une alternative radicale : définir l'intégralité du système de manière déclarative, le reconstruire à volonté, et revenir en arrière si le résultat ne plaît pas.

Ce qui rend NixOS séduisant n'est pas le branding de distribution, mais le gestionnaire de paquets Nix sous-jacent. Nix est un gestionnaire de paquets fonctionnel, déterministe et reproductible. L'OS n'est que l'artefact d'une idée plus importante : la possibilité de construire un système d'exploitation entier comme résultat déterministe de l'alimentation d'un DSL Nix au compilateur Nix.

La philosophie centrale repose sur la configuration déclarative dans un seul fichier. Plus besoin de chasser les choix de paquets à un endroit, les paramètres de bureau ailleurs, et le comportement du clavier dans un troisième. Tout réside dans configuration.nix. Les extensions GNOME, les mappings de touches, les services système, les paramètres de réseau : tout est défini au même endroit, versionné dans Git, reconstruisable à l'identique.

L'exemple des extensions GNOME illustre la puissance de l'approche. Au lieu d'installer manuellement dash-to-dock, unite et appindicator via une interface graphique et de prier pour qu'ils survivent à la prochaine mise à jour, NixOS permet de déclarer les paquets et leurs configurations dans un bloc unique. Les positions, le comportement d'autohide, les niveaux de transparence : tout est spécifié en code, tout est reproductible.

Le mapping de touches par clavier démontre la flexibilité granulaire. Sur un laptop avec un clavier USB externe, les préférences de touches peuvent différer. NixOS permet de spécifier des comportements distincts pour chaque périphérique d'entrée via keyd. Les swaps Alt/Control sur le clavier USB, le comportement différent sur le clavier intégré : tout est déclaré, rien n'est laissé au hasard.

L'expérimentation devient bon marché et sûre. Essayer un paquet ne mute pas le système de base. Construire un shell de paquet complètement isolé pour un script ponctuel ou un projet complet se fait via nix-shell. Si le durcissement est nécessaire, le DSL Nix spécifie les dépendances, les étapes de build et les artefacts résultants de manière déclarative. C'est une méthode de travail supérieure à la pollution lente de la machine quotidienne en espérant pouvoir reconstruire ce qui a été fait.

La stabilité et la prévisibilité des releases renforcent l'argument. NixOS suit une cadence de release tous les six mois avec des mises à jour automatiques possibles sans la crainte habituelle des upgrades d'OS. Pas de prompts intrusifs, pas de notifications desktop, pas de dérive système en arrière-plan. Le canal unstable permet l'expérimentation avec des logiciels plus récents sans sacrifier la stabilité du système principal.

Le rollback natif change la relation avec les changements système. Chaque modification crée une nouvelle génération. Si une mise à jour casse le WiFi ou le serveur X, un redémarrage dans le menu GRUB restaure la génération précédente. Pas de live USB, pas de réparation manuelle, juste une sélection dans un menu. Cette sécurité psychologique encourage l'expérimentation.

La portabilité cross-platform du gestionnaire de paquets Nix étend l'approche au-delà de Linux. macOS bénéficie du même gestionnaire de paquets, permettant la gestion déclarative des outils de développement sur Mac. Les environnements de développement deviennent portables entre machines et systèmes d'exploitation via les flakes Nix.

L'article original mentionne une dimension particulièrement pertinente en 2026 : la gestion saine du système dans l'ère du coding agentique. Quand des agents IA génèrent du code et installent des dépendances, la capacité à encapsuler ces expérimentations dans des shells Nix isolés devient précieuse. Le code non vérifié téléchargé depuis internet peut tourner dans un environnement jetable, avec la garantie que le pire scénario est la destruction de son propre conteneur.

Les critiques existent. La courbe d'apprentissage du DSL Nix est raide. La syntaxe n'est pas intuitive pour les développeurs habitués à YAML ou JSON. La documentation, bien que complète, peut être difficile à naviguler. Le temps initial de configuration d'un système NixOS dépasse largement celui d'une Ubuntu standard. Mais l'investissement se rentabilise en maintenance réduite et en reproductibilité garantie.

La question de savoir si NixOS est le futur de Linux ou une abstraction de plus reste ouverte. L'adoption croissante suggère que la proposition de valeur résonne avec une population d'ingénieurs fatigués de maintenir des systèmes fragiles. Traiter l'OS comme du code versionné, testable et rollbackable répond à des problèmes réels que les conteneurs et les approches traditionnelles n'ont pas résolus.