Un OS come codice
Nix — package manager sviluppato da Eelco Dolstra durante il suo PhD (2003-2006, Utrecht University) — introduce un paradigma radicale: ogni pacchetto vive in /nix/store/<hash>-name-version/, immutabile, identificato dall’hash delle sue dipendenze transitive. Due installazioni con gli stessi input producono lo stesso hash → builds riproducibili.
NixOS, distribuzione Linux costruita su Nix, evolve dal 2005. La release 15.09 (ottobre 2015) consolida il naming scheme YY.MM e la maturità produzione. Licenza MIT.
Caratteristiche
- Configurazione dichiarativa in
/etc/nixos/configuration.nix:
{
services.nginx.enable = true;
services.postgresql.enable = true;
users.users.alice = {
isNormalUser = true;
extraGroups = [ "wheel" ];
};
}
nixos-rebuild switch applica la configurazione. L’intero sistema è deterministico: stessa configurazione, stesso sistema bit-identico.
- Rollback atomici — ogni generazione del sistema è un link; si può tornare indietro con
nixos-rebuild --rollback - Multiple versioni coesistenti —
python-3.9epython-3.11nello stesso sistema, nessun conflitto - User profile — utenti diversi con pacchetti diversi, senza sudo
- Development shells —
nix-shell -p foo barcrea ambiente temporaneo con pacchetti
Reproducibilità
Nix è conforme a reproducible builds: un pacchetto compilato da Nix file identici dà bit-identical output. Valore per:
- Supply chain security — verifica di build integrity
- Scientific computing — reproducibility di analisi
- DevOps — dev/staging/prod bit-identici
- Fix di bug legacy — riproduzione esatta di vecchi build environment
NixOS, Guix, Nix standalone
- NixOS — distribuzione completa basata su Nix
- Nix (package manager standalone) — installabile su macOS, altre Linux, WSL
- Guix (GNU) — fork filosofia Nix con Guile Scheme e focus FSF-pure
Nel contesto italiano
Adoption limitata ma crescente:
- HPC scientifico — per reproducibility
- DevOps sofisticati — piccoli cluster gestiti in Nix
- Developer individuali — dev environment per-progetto
- Ricerca accademica — università di Torino, Trento, Pisa
Curva di apprendimento ripida (linguaggio Nix funzionale è peculiare) ma impatto architetturale significativo.
Riferimenti: NixOS 15.09 (ottobre 2015). Eelco Dolstra, Utrecht University (PhD thesis 2006). Nix package manager. Licenza MIT. /nix/store content-addressed. Configuration.nix dichiarativa. Determinismo e reproducible builds.
