- Basé sur le gestionnaire de paquets Nix, NixOS permet de définir l’ensemble du système comme du code et de le restaurer à tout moment dans un état déterministe et reproductible
- Tous les réglages et paquets sont gérés dans un unique fichier de configuration déclaratif, ce qui permet de reconstruire le même environnement à partir d’une source unique même sur une nouvelle machine
- Il propose des versions stables publiées tous les 6 mois, les mises à jour automatiques, ainsi que la possibilité de tester les logiciels les plus récents via le canal unstable si nécessaire
- Il fournit des environnements de développement isolés permettant d’expérimenter différents langages et outils sans polluer le système, tout en conservant une expérience de développement cohérente entre macOS et Linux
- Il s’adapte aussi à l’ère du coding avec les LLM, où les outils changent vite, et garantit une cohérence jusqu’au déploiement grâce à un modèle de build déterministe et en couches plus robuste que Docker
La philosophie et l’attrait de NixOS
- Le cœur de NixOS n’est pas la distribution Linux, mais le gestionnaire de paquets Nix
- NixOS est le résultat d’un gestionnaire de paquets fonctionnel, déterministe et reproductible qui permet de configurer l’ensemble du système d’exploitation selon les entrées fournies en Nix DSL
- Il permet de reconstruire le système, de ne modifier qu’une partie, puis de faire un rollback si le résultat ne convient pas
- Alors que la plupart des systèmes d’exploitation deviennent plus instables avec le temps, NixOS permet de définir et de construire l’état du système
- Cela évite l’accumulation d’états flous causés par l’installation de paquets, les changements de configuration ou l’ajout et la suppression d’outils
- En définissant le système comme du code, on peut reproduire à tout moment exactement le même résultat
Configuration déclarative et gestion depuis une source unique
- Dans NixOS, il est possible de définir l’ensemble du système — paquets, configuration, mapping clavier, etc. — dans une configuration déclarative unique
- Jusqu’aux comportements détaillés, comme les réglages d’extensions GNOME ou le mapping clavier, qui peuvent être décrits en Nix DSL
- Même sur un nouvel ordinateur, il est possible de reconstruire l’ensemble du système à partir d’une source unique
- Cela permet de maintenir un état système cohérent sans configuration manuelle ni scripts dispersés
Stabilité et gestion des mises à jour
- NixOS conserve un cycle de publication prévisible de 6 mois et prend en charge les mises à jour automatiques
- Cela réduit les problèmes d’instabilité, de notifications intrusives ou de dérive du système souvent rencontrés lors des mises à niveau d’un OS classique
- Si nécessaire, on peut activer le canal unstable pour tester de manière expérimentale les logiciels les plus récents
- Même sur un portable HP, la compatibilité matérielle et la stabilité sont élevées, avec une utilisation immédiate sans configuration supplémentaire
Expérimentation et isolation des environnements de développement
- NixOS offre un environnement d’expérimentation sûr et peu coûteux
- Les paquets ne sont pas installés directement dans le système, mais exécutés dans des environnements shell isolés
- Grâce au Nix DSL, les dépendances, les étapes de build et les artefacts sont définis déclarativement, ce qui permet de préserver un environnement de développement sans pollution
- Le même gestionnaire de paquets Nix peut être utilisé sur macOS comme sur Linux, assurant une gestion cohérente des outils de développement et des dépendances
- Il existe aussi un support communautaire pour FreeBSD
Une bonne adéquation avec l’ère du coding assisté par LLM
- Les outils de développement basés sur les LLM exigent souvent de changer rapidement de versions spécifiques d’utilitaires, de compilateurs et de runtimes
- Nix répond à ce besoin en traitant les outils comme des entrées déclaratives et en les exécutant dans des environnements isolés
- Par exemple, pour construire un agent Rust de transcription vocale, Nix peut charger automatiquement la toolchain Rust et créer un environnement de build isolé
- Il ne modifie pas l’environnement système (
~/.cargo, ~/.rustup, PATH, etc.)
- Avec
flake.nix et nix flake check, il devient possible de figer l’environnement d’expérimentation d’un agent sous forme d’artefact reproductible
- Une session temporaire peut ainsi être transformée en unité de build vérifiable
Déploiement et modèle de développement cohérent
- Nix propose une méthode de build d’images plus déterministe et en couches que Docker
- Avec
dockerTools.buildLayeredImage, on peut créer des images Docker petites et reproductibles
- La même configuration permet d’obtenir le même résultat sur d’autres architectures
- Ce même modèle s’applique de manière cohérente aux portables, shells, dépendances de projet, pipelines CI et artefacts de déploiement
- Au lieu d’assembler plusieurs outils, on peut gérer l’ensemble du système logiciel avec une seule manière de penser
Conclusion
- NixOS est une implémentation d’un système déclaratif, reproductible, réversible et stable
- Il permet d’expérimenter et d’effectuer des mises à niveau sans crainte, tout en évitant de polluer le système même dans des environnements d’outils en évolution rapide
- Il offre à la fois stabilité et flexibilité, y compris dans les flux de développement modernes comme les agents de coding basés sur les LLM
- NixOS est la forme qui met le plus complètement en pratique cette philosophie au quotidien
Aucun commentaire pour le moment.