NixOS
Aperçu
NixOS est une distribution Linux construite autour du gestionnaire de paquets Nix et d’un modèle de configuration déclarative. Première version en 2003 par Eelco Dolstra, c’est l’exemple le plus proéminent d’un système d’exploitation déclaratif.
Dans NixOS, la configuration complète du système est définie dans un seul fichier déclaratif (configuration.nix). Le système est reproductible, fiable et atomique — tout changement peut être annulé instantanément.
Fonctionnalités clés
- Configuration déclarative : L’état du système est défini dans
configuration.nix— la source de vérité. - Gestionnaire de paquets Nix : Gestion de paquets fonctionnelle pure ; chaque paquet est isolé dans
/nix/store. - Mises à jour atomiques : Les mises à jour sont atomiques — si quelque chose échoue, vous pouvez redémarrer sur la génération précédente.
- Reproductibilité : Des configurations identiques produisent des systèmes identiques.
- Rollback : Chaque entrée de boot est une génération système précédente ; rollback instantané en cas d’échec.
- Expressions Nix (Nixpkgs) : Plus de 80 000 paquets dans le dépôt Nixpkgs.
- Support conteneur et VM : Support natif pour la construction de conteneurs et de VM avec Nix.
Licence
Principalement GPL et autres licences FOSS. Nixpkgs utilise un mélange de licences (majoritairement permissives).
Faits notables
- Le langage Nix de NixOS est un langage purement fonctionnel conçu pour la gestion de paquets.
- Le /nix/store utilise des chemins adressés par contenu — aucun conflit de paquets n’est possible.
- Home Manager étend NixOS pour gérer les environnements utilisateurs de manière déclarative.
- NixOS est populaire parmi les développeurs, ingénieurs DevOps et chercheurs pour la reproductibilité.
Cas d’utilisation
- Stations de développement avec des environnements reproductibles
- Infrastructure CI/CD
- Déploiements cloud (NixOS peut s’exécuter dans des conteneurs/VM)
- Environnements de recherche nécessitant de la reproductibilité
- Gestion de configuration à grande échelle
Technologies liées
- Docker
- Terraform
- Ansible
- GuixSD — projet GNU avec un modèle déclaratif similaire
- Nix — le gestionnaire de paquets sous-jacent
Ressources officielles
- Site web : https://nixos.org/
- Documentation : https://nixos.wiki/
- Nixpkgs : https://github.com/NixOS/nixpkgs
- Manuel du langage Nix : https://nix.dev/manual/nix/language