Descubre NixOS y Guix: sistemas inmutables para Linux

¿Te imaginas un sistema Linux donde cada actualización sea fácilmente reversible sin comprometer tus datos? ¿O donde la configuración de paquetes sea totalmente reproducible y aislada? Bienvenido al mundo de los sistemas inmutables, un enfoque cada vez más popular gracias a distribuciones como NixOS y Guix, unos sistemas que nos permiten tener un sistema más seguro a la hora de actualizarlo.

NixOs instalado con Gnome

En este artículo exploraremos:

  1. El concepto de sistema inmutable y sus ventajas (rollback, reproducibilidad…).
  2. El gestor de paquetes Nix y su contraparte en Guix.
  3. Pasos prácticos para probar una instalación mínima de NixOS o GuixSD.

1. ¿Qué es un sistema inmutable en Linux?

Un sistema inmutable es aquel cuyo conjunto de archivos base y configuración están diseñados para no cambiar o cambiarse únicamente de forma controlada. Esto implica que la parte “mutable” (es decir, los datos de usuario o la configuración puntual) se separa del sistema base, permitiendo revertir cambios o actualizaciones con facilidad.

1.1 Ventajas principales

  • Rollback sencillo: En sistemas inmutables, es posible volver a un estado anterior del sistema con solo indicarlo en el arranque o incluso al reiniciar el sistema.
  • Reproducibilidad: Dado que las versiones de cada paquete y configuración se definen de forma declarativa, podemos reproducir el mismo entorno en diferentes máquinas o en el futuro. Esto es similar al funcionamiento de, por ejemplo, Docker.
  • Menor propensión a errores: Al no “tocar” el sistema base de forma arbitraria, se evitan conflictos entre paquetes o librerías.
  • Entornos aislados: Cada actualización y paquete se almacenan de manera separada (en “store” o “profiles”), evitando la sobreescritura de versiones anteriores.

1.2 Ejemplos de sistemas inmutables

  • NixOS: Distribución que gira en torno al gestor de paquetes Nix y un fichero de configuración declarativo (configuration.nix).
  • Guix/GuixSD: Proyecto GNU que toma la filosofía de Nix, pero implementada 100% en software libre de la FSF y con el lenguaje Guile Scheme para las definiciones.
  • Otros ejemplos: Fedora Silverblue o openSUSE MicroOS también usan la idea de inmutabilidad, aunque con tecnologías diferentes (OSTree, Btrfs, etc.).

2. Nix y Guix: Gestores de Paquetes Declarativos

Logo NixOs Linux

Lo más característico de NixOS y Guix es su gestor de paquetes. Ambos permiten instalar software en rutas únicas (hash del paquete en disco), evitando la sobreescritura de versiones.

2.1 Gestor de paquetes Nix

  • Store y perfiles: Nix instala cada paquete en /nix/store con un hash único. Luego, tu usuario crea un “perfil” que apunta a esos paquetes instalados.
  • Declaratividad: Podemos definir el sistema o un entorno de usuario en un archivo .nix, describiendo exactamente la versión de cada paquete.
  • Rollback: Si una actualización falla, Nix conserva la generación anterior, lo que facilita revertir.
  • Reproducibilidad: Mismo archivo .nix, mismo resultado, sin importar la máquina (en la medida de lo posible).

Ejemplo de instalación con Nix

# Instalar un paquete de forma imperativa
nix-env -i firefox

# Buscar paquetes
nix-env -qaP | grep firefox

Pero la magia real está en declarar tu configuración y luego ejecutar nixos-rebuild switch (en NixOS) o nix-env -i en tu usuario.

2.2 Gestor de paquetes Guix

Guix se inspira directamente en Nix, pero usando Guile Scheme y bajo la sombrilla del proyecto GNU.

  • Guix System: También llamado GuixSD, es la “distro” que adopta este gestor como base (similar a NixOS).
  • Declaraciones en Scheme: Todo el sistema se configura con expresiones Scheme, donde defines servicios, paquetes, etc.
  • Reproducibilidad extrema: Guix se compromete a la filosofía de software 100% libre, y cada derivación (paquete) se construye con scripts también libres.
  • Rollbacks y perfiles: De igual forma, mantiene historiales de generaciones.

3. Pasos para instalar NixOS o GuixSD

Si te animas a experimentar o incluso instalar estas distribuciones de forma definitiva, ambos proyectos ofrecen ISOs de instalación. Veamos cómo hacerlo en cada distribución:

3.1 Cómo instalar NixOS

Descarga e instala la ISO: Visita el sitio oficial de NixOS para descargar la ISO de instalación. Hay dos opciones: con interfaz gráfica (Plasma o Gnome) o solamente la terminal. Para seguir la instalación, podemos seguir el tutorial general de instalación.

Configuration.nix: Tras la instalación (con la herramienta nixos-install), personalizas configuration.nix. Ahí definimos usuarios, servicios, paquetes. Por ejemplo:

{ config, pkgs, ... }: { imports = [ ./hardware-configuration.nix ]; boot.loader.grub.device = "/dev/sda"; networking.hostName = "mi-nix"; environment.systemPackages = with pkgs; [ vim firefox git ]; }

Rebuild: Cada vez que cambies la configuración, hay que ejecutar:

sudo nixos-rebuild switch

3.2 Cómo instalar GuixSD

GuixOs logo

Descarga e instala la ISO: Desde guix.gnu.org podemos descargar la imagen ISO. Para ver más detalles, tenemos las instrucciones desde su web oficial.

Instalación: Usa la herramienta guix system para generar un sistema a partir de un archivo de configuración en Scheme.

Archivo de configuración: De forma similar a Nix, podemos definir servicios, paquetes, cuentas de usuario. Un ejemplo parcial (en Scheme) sería el siguiente:

(operating-system (host-name "mi-guix") (timezone "Europe/Madrid") (locale "es_ES.utf8") (bootloader (bootloader-configuration (bootloader grub-bootloader) (target "/dev/sda"))) (file-systems (list (file-system (mount-point "/") (device "/dev/sda1") (type "ext4")))) (packages (append (list (specification->package "vim") (specification->package "git")) %base-packages)))

Activar cambios: Tras editar el archivo, hay que aplicar los cambios:

guix system reconfigure /ruta/a/config.scm

Rollbacks: Guix mantiene generaciones de configuración, permitiendo revertir con el siguiente comando:

guix system roll-back

5. Otros Ejemplos de Inmutabilidad

Aunque NixOS y Guix son los referentes, existen otros proyectos que adoptan la filosofía inmutable de manera distinta:

  • Fedora Silverblue: Usa OSTree para gestionar imágenes atómicas del sistema, con la capa de Flatpak para aplicaciones.
  • openSUSE MicroOS: Emplea Btrfs y snapshots automáticos con cada actualización.
  • Vanilla OS: Otro experimento inmutable basado en Ubuntu, con un gestor lateral (apx) para instalar paquetes sin romper la base.

Conclusiones

NixOS y Guix representan un cambio radical en cómo concebimos una distro Linux, apostando por la inmutabilidad y la reproducibilidad. Sus gestores de paquetes (Nix y Guix) son la clave para lograr rollbacks inmediatos sin riesgos, paquetes “limpios” en entornos aislados y configuraciones declarativas que facilitan la clonación exacta de sistemas.

Si te apasiona la idea de un sistema siempre listo para deshacer cambios y con cada paquete perfectamente versionado, no dudes en probar NixOS o Guix. Su curva de aprendizaje puede ser algo más pronunciada que la de distros convencionales, pero la recompensa es grande: control total y fiabilidad.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *