Skip to main content

Introduction à NixOS

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

AspectDebian/UbuntuNixOS
Installation paquetsapt install nginxModifier configuration.nix puis nixos-rebuild switch
ConfigurationFichiers éparpillés dans /etc/Centralisée dans /etc/nixos/
RollbackDifficileNatif, au boot
ReproductibilitéApproximativeGarantie

Cas d’usage idéaux

  • Serveurs nécessitant une configuration reproductible
  • Infrastructure as Code
  • Environnements de développement isolés
  • Clusters de machines identiques