Qu’est-ce que NixOS ?
NixOS est une distribution Linux basée sur le gestionnaire de paquets Nix. Sa particularité : le système entier est décrit dans des fichiers de configuration déclaratifs.
Pourquoi NixOS ?
- Reproductibilité : la même configuration produit le même système, à chaque fois
- Rollback : possibilité de revenir à une configuration précédente en cas de problème
- Déclaratif : on décrit l’état souhaité du système, pas les étapes pour y arriver
- Isolation : les paquets n’interfèrent pas entre eux (pas de “dependency hell”)
- Atomique : les mises à jour sont tout-ou-rien, pas d’état intermédiaire cassé
Concepts clés
Le Nix Store
Tous les paquets sont installés dans /nix/store/ avec un hash unique :
/nix/store/abc123...-nginx-1.24.0/
/nix/store/def456...-vim-9.0/
Deux versions du même logiciel peuvent coexister sans conflit.
Configuration déclarative
Le système est décrit dans /etc/nixos/configuration.nix. Exemple minimal :
{ config, pkgs, ... }:
{
networking.hostName = "mon-serveur";
environment.systemPackages = with pkgs; [
vim
git
];
services.openssh.enable = true;
system.stateVersion = "24.05";
}
Générations
Chaque nixos-rebuild switch crée une nouvelle génération. Au boot, on peut choisir une génération précédente si la nouvelle pose problème.
Différences avec les distributions classiques
| Aspect | Debian/Ubuntu | NixOS |
|---|---|---|
| Installation paquets | apt install nginx | Modifier configuration.nix puis nixos-rebuild switch |
| Configuration | Fichiers éparpillés dans /etc/ | Centralisée dans /etc/nixos/ |
| Rollback | Difficile | Natif, au boot |
| Reproductibilité | Approximative | Garantie |
Cas d’usage idéaux
- Serveurs nécessitant une configuration reproductible
- Infrastructure as Code
- Environnements de développement isolés
- Clusters de machines identiques