← Volver a artículos
Noticias· 5 min de lectura

Historia de NixOS: el sistema operativo reproducible

Concepto de configuracion reproducible y codigo declarativo que inspira a NixOS
Foto: Pixabay · Pexels

Pocas distribuciones de Linux rompen tantos esquemas como NixOS. La mayoría de sistemas arrastran la misma filosofía de los años noventa: instalar paquetes en /usr, ir mutando el sistema sobre la marcha y rezar para que nada se rompa. NixOS empezó de cero con una idea bastante atrevida, tratar la configuración del sistema operativo como si fuera código matemático, puro y reproducible. El resultado es un Linux que no se parece a nada, y saber de dónde sale ayuda a entender por qué ahora vive un momento dulce.

El origen académico: la tesis de Eelco Dolstra

Esto empezó en la universidad. En 2003 Eelco Dolstra arrancó en la Universidad de Utrecht (Países Bajos), bajo la supervisión de Eelco Visser, un proyecto para repensar cómo se despliega el software. El punto culminante fue su tesis doctoral de 2006, The Purely Functional Software Deployment Model (“El modelo de despliegue de software puramente funcional”).

Lo que proponía la tesis chirriaba en aquel momento: llevar los principios de los lenguajes funcionales puros a la instalación de programas. Una función matemática siempre devuelve el mismo resultado para la misma entrada, y un paquete debía construirse igual, de forma totalmente determinista a partir de sus dependencias declaradas. De ahí salió Nix, el gestor de paquetes que acabaría siendo el corazón de todo lo demás.

De gestor de paquetes a sistema operativo completo

Logotipo de NixOS, la distribucion basada en el gestor de paquetes Nix
El logotipo de NixOS, distribucion derivada del gestor Nix creado por Eelco Dolstra. · Imagen: Tim Cuthbertson / CC BY 4.0 · Wikimedia Commons

Nix demostró que el software se podía gestionar de forma reproducible. La siguiente pregunta caía por su propio peso: ¿y si todo el sistema operativo funcionara así? Quien lo llevó a la práctica fue Armijn Hemel en 2006, también dentro de su trabajo de máster, con un prototipo llamado NixOS: The Nix Based Operating System.

La distribución fue madurando durante años hasta su primera versión estable, la 13.10, en 2013. En 2015 se constituyó la NixOS Foundation, una organización sin ánimo de lucro neerlandesa que sostiene el desarrollo y la infraestructura comunitaria del proyecto. Aquel experimento académico ya era una distribución real y usable.

El corazón técnico: /nix/store y la configuración declarativa

Escritorio GNOME por defecto de NixOS 21.11 en funcionamiento
Escritorio GNOME por defecto de NixOS 21.11, donde todo el sistema se materializa desde la configuracion declarativa. · Imagen: NixOS contributors (NixOS Foundation) / GPL · Wikimedia Commons

Lo que separa a NixOS de Debian, Ubuntu o Arch está en cómo coloca los archivos. Todos los paquetes, bibliotecas, kernels y configuraciones viven en un directorio especial, /nix/store. Cada elemento lleva por nombre un hash criptográfico que resume todas sus dependencias y opciones de compilación. Así, dos versiones distintas de la misma biblioteca conviven sin pisarse, porque ocupan rutas diferentes e inmutables.

Sobre esa base se levanta la característica que más llama la atención, la configuración declarativa. En vez de instalar paquetes uno a uno con comandos imperativos, defines el estado completo del sistema en un único archivo (/etc/nixos/configuration.nix): qué paquetes quieres, qué servicios arrancan, qué usuarios existen. Lanzas una reconstrucción y NixOS materializa exactamente ese estado.

Builds aislados y rollbacks atómicos

Cada derivación de Nix referencia de forma determinista todas sus dependencias y se compila en un entorno aislado, un sandbox. Por eso los builds son reproducibles: si un paquete funciona en una máquina, funcionará igual en otra, sin dependencias ocultas. Eso hace de Nix un punto de partida estupendo para los famosos Reproducible Builds, un objetivo que persiguen el ecosistema del kernel Linux y muchas distribuciones por motivos de seguridad.

La otra joya son los rollbacks atómicos. Cada vez que reconstruyes el sistema, NixOS crea una nueva “generación” sin tocar la anterior. Si una actualización rompe algo, reinicias y eliges la generación previa desde el arranque. No quedan estados intermedios a medias ni actualizaciones colgadas: el cambio es atómico, como una transacción.

Flakes y el auge reciente por la reproducibilidad

Durante años se podían fijar versiones de dependencias en Nix, pero la cosa era bastante artesanal. Eso cambió con los flakes, que llegaron en Nix 2.4 el 1 de noviembre de 2021. Los flakes dan una estructura uniforme a los proyectos y, sobre todo, un archivo de bloqueo (lock file) que fija con precisión cada dependencia. Compartir un entorno reproducible pasó a ser tan fácil como compartir un repositorio.

El avance no pudo llegar en mejor momento. El miedo a la seguridad de la cadena de suministro de software, la necesidad de entornos de desarrollo idénticos entre equipos y el tirón del machine learning y la infraestructura cloud han disparado el interés. El ecosistema Nix sumó un 50 % más de paquetes en 2024 respecto a 2023, con un crecimiento especialmente fuerte en herramientas cloud-native y de IA.

Una rareza que conquista terreno

NixOS sigue siendo una distribución exigente. Su curva de aprendizaje asusta a quien llega desde Linux Mint o Pop!_OS, y el lenguaje Nix tiene sus manías. Pero lo que propone —reproducibilidad total, configuración como código y poder deshacer cualquier cambio— responde a problemas de verdad que otras distribuciones, desde Fedora hasta openSUSE, resuelven por caminos más convencionales.

De una tesis doctoral de 2006 a ser la respuesta de moda para infraestructura reproducible en 2026. La historia de NixOS deja claro que las ideas radicales, cuando resuelven problemas auténticos, acaban encontrando su momento.