← Tornar als articles
Notícies· 5 min de lectura

Història de NixOS: el sistema operatiu reproduïble

Concepte de configuracio reproduible i codi declaratiu que inspira NixOS
Foto: Pixabay · Pexels

Poques distribucions de Linux trenquen tants esquemes com NixOS. La majoria de sistemes arrosseguen la mateixa filosofia dels anys noranta: instal·lar paquets a /usr, anar mutant el sistema sobre la marxa i pregar perquè res no es trenqui. NixOS va partir de zero amb una idea més atrevida, tractar la configuració del sistema operatiu com si fos codi matemàtic, pur i reproduïble. El resultat és un Linux que no s’assembla a res, i saber d’on surt ajuda a entendre per què ara viu un moment dolç.

L’origen acadèmic: la tesi d’Eelco Dolstra

Això va començar a la universitat. El 2003 Eelco Dolstra va arrencar a la Universitat d’Utrecht (Països Baixos), sota la supervisió d’Eelco Visser, un projecte per repensar com es desplega el programari. El punt culminant va ser la seva tesi doctoral de 2006, The Purely Functional Software Deployment Model (“El model de desplegament de programari purament funcional”).

El que proposava la tesi grinyolava en aquell moment: portar els principis dels llenguatges funcionals purs a la instal·lació de programes. Una funció matemàtica sempre retorna el mateix resultat per a la mateixa entrada, i un paquet s’havia de construir igual, de manera totalment determinista a partir de les seves dependències declarades. D’aquí va sortir Nix, el gestor de paquets que acabaria sent el cor de tota la resta.

De gestor de paquets a sistema operatiu complet

Logotip de NixOS, la distribucio basada en el gestor de paquets Nix
El logotip de NixOS, distribucio derivada del gestor Nix creat per Eelco Dolstra. · Imagen: Tim Cuthbertson / CC BY 4.0 · Wikimedia Commons

Nix va demostrar que el programari es podia gestionar de manera reproduïble. La pregunta següent queia pel seu propi pes: i si tot el sistema operatiu funcionés així? Qui ho va portar a la pràctica va ser Armijn Hemel el 2006, també dins del seu treball de màster, amb un prototip anomenat NixOS: The Nix Based Operating System.

La distribució va anar madurant durant anys fins a la seva primera versió estable, la 13.10, el 2013. El 2015 es va constituir la NixOS Foundation, una organització sense ànim de lucre neerlandesa que sosté el desenvolupament i la infraestructura comunitària del projecte. Aquell experiment acadèmic ja era una distribució real i usable.

El cor tècnic: /nix/store i la configuració declarativa

Escriptori GNOME per defecte de NixOS 21.11 en funcionament
Escriptori GNOME per defecte de NixOS 21.11, on tot el sistema es materialitza des de la configuracio declarativa. · Imagen: NixOS contributors (NixOS Foundation) / GPL · Wikimedia Commons

El que separa NixOS de Debian, Ubuntu o Arch és com col·loca els fitxers. Tots els paquets, biblioteques, kernels i configuracions viuen en un directori especial, /nix/store. Cada element porta per nom un hash criptogràfic que resumeix totes les seves dependències i opcions de compilació. Així, dues versions diferents de la mateixa biblioteca conviuen sense trepitjar-se, perquè ocupen rutes diferents i immutables.

Sobre aquesta base s’aixeca la característica que més crida l’atenció, la configuració declarativa. En lloc d’instal·lar paquets un a un amb ordres imperatives, defineixes l’estat complet del sistema en un únic fitxer (/etc/nixos/configuration.nix): quins paquets vols, quins serveis arrenquen, quins usuaris existeixen. Llences una reconstrucció i NixOS materialitza exactament aquest estat.

Builds aïllats i rollbacks atòmics

Cada derivació de Nix referencia de manera determinista totes les seves dependències i es compila en un entorn aïllat, un sandbox. Per això els builds són reproduïbles: si un paquet funciona en una màquina, funcionarà igual en una altra, sense dependències ocultes. Això fa de Nix un punt de partida excel·lent per als famosos Reproducible Builds, un objectiu que persegueixen l’ecosistema del kernel Linux i moltes distribucions per motius de seguretat.

L’altra joia són els rollbacks atòmics. Cada cop que reconstrueixes el sistema, NixOS crea una nova “generació” sense tocar l’anterior. Si una actualització trenca alguna cosa, reinicies i tries la generació prèvia des de l’arrencada. No queden estats intermedis a mitges ni actualitzacions penjades: el canvi és atòmic, com una transacció.

Flakes i l’auge recent per la reproduïbilitat

Durant anys es podien fixar versions de dependències a Nix, però la cosa era força artesanal. Això va canviar amb els flakes, que van arribar a Nix 2.4 l’1 de novembre de 2021. Els flakes donen una estructura uniforme als projectes i, sobretot, un fitxer de bloqueig (lock file) que fixa amb precisió cada dependència. Compartir un entorn reproduïble va passar a ser tan fàcil com compartir un repositori.

L’avenç no podia arribar en millor moment. La por a la seguretat de la cadena de subministrament de programari, la necessitat d’entorns de desenvolupament idèntics entre equips i l’estirada del machine learning i la infraestructura cloud han disparat l’interès. L’ecosistema Nix va sumar un 50 % més de paquets el 2024 respecte al 2023, amb un creixement especialment fort en eines cloud-native i d’IA.

Una raresa que conquereix terreny

NixOS continua sent una distribució exigent. La seva corba d’aprenentatge espanta qui arriba des de Linux Mint o Pop!_OS, i el llenguatge Nix té les seves manies. Però el que proposa —reproduïbilitat total, configuració com a codi i poder desfer qualsevol canvi— respon a problemes de debò que altres distribucions, des de Fedora fins a openSUSE, resolen per camins més convencionals.

D’una tesi doctoral de 2006 a ser la resposta de moda per a infraestructura reproduïble el 2026. La història de NixOS deixa clar que les idees radicals, quan resolen problemes autèntics, acaben trobant el seu moment.