- Basado en el gestor de paquetes Nix, NixOS tiene una arquitectura que define todo el sistema como código y permite restaurarlo en cualquier momento a un estado determinista y reproducible
- Gestiona todas las configuraciones y paquetes con un único archivo de configuración declarativo, lo que permite reconstruir el mismo entorno desde una sola fuente incluso en un equipo nuevo
- Ofrece lanzamientos estables cada 6 meses, actualizaciones automáticas y, cuando hace falta, soporte para probar software más reciente mediante el canal unstable
- Proporciona entornos de desarrollo aislados para experimentar con distintos lenguajes y herramientas sin contaminar el sistema, manteniendo una experiencia de desarrollo consistente entre macOS y Linux
- También se adapta a la rápida rotación de herramientas en la era de la programación con LLM, y asegura consistencia hasta el despliegue con un modelo de compilación más determinista y en capas que Docker
La filosofía y el atractivo de NixOS
- El núcleo de NixOS no es la distribución Linux, sino el gestor de paquetes Nix
- NixOS es el resultado de un gestor de paquetes funcional, determinista y reproducible, capaz de configurar todo el sistema operativo según la entrada definida en el DSL de Nix
- Ofrece una estructura que permite reconstruir el sistema o modificar solo una parte y, si no convence el resultado, hacer rollback
- Mientras la mayoría de los sistemas operativos se vuelven inestables con el tiempo, en NixOS se puede definir y construir el estado
- Evita la acumulación de estados ambiguos causada por instalación de paquetes, cambios de configuración y adición o eliminación de herramientas
- Al definir el sistema como código, es posible reproducir el mismo resultado en cualquier momento
Configuración declarativa y gestión desde una sola fuente
- En NixOS se puede definir todo el sistema —paquetes, configuración, mapeo de teclado y más— con una sola configuración declarativa
- Igual que en los ejemplos de configuración de extensiones de GNOME o de mapeos de teclado, incluso los comportamientos detallados pueden describirse con el DSL de Nix
- También es posible reconstruir todo el sistema desde una sola fuente en una computadora nueva
- Esto permite mantener un estado del sistema consistente sin configuraciones manuales ni scripts dispersos
Estabilidad y gestión de actualizaciones
- NixOS mantiene lanzamientos predecibles cada 6 meses y soporta actualizaciones automáticas
- Minimiza la inestabilidad, las notificaciones molestas y los problemas de system drift que suelen aparecer en actualizaciones de otros sistemas operativos
- Si se necesita, se puede activar el canal unstable para usar de forma experimental software más reciente
- Incluso en una laptop HP ofrece alta compatibilidad de hardware y estabilidad, y puede usarse de inmediato sin configuración adicional
Aislamiento para experimentación y desarrollo
- NixOS ofrece un entorno de experimentación seguro y de bajo costo
- En lugar de instalar paquetes directamente en el sistema, se pueden ejecutar dentro de entornos shell aislados
- Con el DSL de Nix se pueden definir declarativamente dependencias, pasos de compilación y resultados para mantener un entorno de desarrollo sin contaminación
- Como el mismo gestor de paquetes Nix puede usarse tanto en macOS como en Linux, se logra consistencia en las herramientas de desarrollo y en la gestión de dependencias
- También existe soporte de la comunidad para FreeBSD
Afinidad con la era de la programación con LLM
- Las herramientas de programación basadas en LLM suelen requerir cambios frecuentes de versiones específicas de utilidades, compiladores y runtimes
- Nix responde a esa necesidad al tratar las herramientas como entradas declarativas y ejecutarlas en entornos aislados
- Por ejemplo, al compilar un agente de voz a texto en Rust, Nix carga automáticamente el toolchain de Rust y configura un entorno de compilación aislado
- No modifica el entorno del sistema (
~/.cargo, ~/.rustup, PATH, etc.)
- Con
flake.nix y nix flake check, es posible fijar el entorno de experimentación del agente como un artefacto reproducible
- Convierte sesiones temporales en unidades de compilación verificables
Despliegue y modelo de desarrollo consistente
- Nix ofrece un método de construcción de imágenes más determinista y en capas que Docker
- Con
dockerTools.buildLayeredImage se pueden crear imágenes Docker pequeñas y reproducibles
- Con la misma configuración, se puede compilar el mismo resultado en otras arquitecturas
- Ese mismo modelo se aplica de forma consistente a laptops, shells, dependencias de proyectos, pipelines de CI y artefactos de despliegue
- En lugar de combinar muchas herramientas, permite gestionar todo el sistema de software con una sola forma de pensar
Conclusión
- NixOS es una implementación de un sistema declarativo, reproducible, reversible y estable
- Permite experimentar y actualizar sin miedo, y no contamina el sistema incluso en entornos de herramientas que cambian rápidamente
- También en flujos modernos de desarrollo como los agentes de programación con LLM ofrece al mismo tiempo estabilidad y flexibilidad
- NixOS es la forma en que esta filosofía se materializa de la manera más completa en el uso diario
8 comentarios
Yo también usé NixOS por casi medio año hace tiempo, y un día no pude resolver, por más que buscara en Google, una tarea muy simple que en otros sistemas operativos ni siquiera requiere buscar nada aparte. Entonces vi en un lugar como el foro de NixOS una solución que había dejado registrada algún experto en NixOS, y cuando vi que esa solución hacky de varias decenas de líneas era la que tenía más likes, sentí que mi vida futura con NixOS se veía muy oscura, así que me volví a Arch...
Y no lo recuerdo bien, pero era
flakeo alguna función así, que en unos lados la llaman best practice, en otros experimental y en otros ambas cosas, y ver que eso lleva años así me dejó clarísimo que me esperaba un camino lleno de sufrimiento..Claro, la experiencia de poder convertir en código todo el entorno de escritorio sí fue agradable.
Firebase Studio también usa Nix
Oh... ¡ya veo!
Por cierto, R.I.P. Firebase Studio ;_;
Es demasiado difícil, lo intenté un poco y luego me rendí T_T
(I use Arch btw)
Quien sabe, lo usa de boca en boca jajaja
Una configuración reproducible implementada con un lenguaje funcional declarativo
La curva de aprendizaje es ridículamente empinada. Te exige un nivel alto, tanto como garantiza la reproducibilidad.
Incluso usando
flake, sigue siendo complicado.Además, parece que internamente usa SQLite, y el rendimiento también es inconsistente, así que hay cierta fluctuación en el tiempo que tarda volver a reproducir un entorno.
Comentarios en Hacker News
Creo que NixOS es insuperable en compatibilidad con herramientas de IA
En otros OS es difícil dejarle la configuración del sistema a una IA, pero NixOS resulta confiable gracias a su estructura declarativa y con rollback
No le encargaría a Claude ni a Codex cambiar de Pulseaudio a Pipewire o instalar Hyprland, pero con NixOS tendría la confianza suficiente como para dejárselo hasta a Grok
La clave es la estabilidad de poder revisar los cambios de antemano y revertirlos en cualquier momento
Si eres desarrollador, te recomiendo probar NixOS soñando con un “Linux de escritorio administrado por IA”. Puedes empezar diciéndole a Claude: “hazme una configuración de Gnome basada en Flake que pueda demostrar en una VM”
Sorprende ver a Claude ajustar de forma declarativa la configuración dconf de GNOME
Eso sí, a veces la IA produce resultados raros porque no entiende el complejo contexto del ecosistema Nix
Se nota que la estructura lambda no convencional de Nix y el scope implícito entre módulos lo hacen difícil no solo para las personas, sino también para la IA
Por eso es importante definir con claridad la estructura y los patrones del proyecto. Aun así, crear plantillas basadas en Nix es un proceso divertido y productivo
¿De verdad hace falta usar un LLM para instalar Hyprland? Con simplemente
sudo dnf install hyprlandbastaMás que que Nix sea “amigable con la IA”, parece que la gente termina usando LLM porque manejarlo directamente es engorroso
Administro la configuración de varias máquinas como “perfiles de negocio” y despliego automáticamente en cada una los repos y ajustes necesarios
Un compañero de trabajo usaba Windows originalmente, pero ahora ya usa NixOS en su día a día
También gestiono de forma declarativa toda la configuración del hardware, y mis ajustes están en un repositorio público de GitHub. Se agradece cualquier feedback
Incluso al mover configuraciones a una nueva estructura o al crear varios entornos de prueba de WM/DE, Claude se encarga de la mayor parte del trabajo repetitivo
Ahora el sistema está completamente estable, así que casi no tengo nada que hacer manualmente
En otros OS es difícil tener ese nivel de confianza
En su lugar administraba mis entornos de desarrollo con scripts de Docker, pero ahora siento que la compatibilidad entre Nix e IA es perfecta
Parece que en adelante saldrán muchos más programas que la IA podrá manejar con facilidad
Después de usar Windows durante 30 años, hace 1 año me cambié por completo a Nix
Ahora no tengo ninguna intención de volver a Windows
Me encanta que toda la configuración del OS esté dentro de un repositorio Git
Desarrollar sin Nix es casi tan ineficiente como programar sin Git
Una vez que dejas todo configurado, preparar un sistema nuevo después es muy sencillo
Quiero que cada app corra en un entorno independiente sin afectar al sistema completo
Creo que NixOS es uno de los caminos hacia ese futuro
La GPU de Nvidia también funciona bien, y es mucho más estable que Gamescope
Me gustaría poder querer más a NixOS, pero el mayor problema es la falta de documentación
La información está dispersa entre varios foros, blogs viejos e issues
Ambas se actualizan, pero al buscar nunca está claro cuál está más al día
Clonar nixpkgs y leerlo directamente es lo más rápido
Probé NixOS como sistema operativo para laptop, y tenía ventajas y desventajas muy marcadas
La configuración declarativa y las funciones de snapshot son revolucionarias, pero la distinción entre paquetes y servicios y el concepto de Flake me resultaron confusos
Al instalar KDE solo se instaló la configuración mínima, así que hizo falta ajustar cosas extra, y además la documentación cambiaba según la versión, por lo que era difícil seguirla
Al final lo dejé porque necesitaba una máquina estable, pero me parece una excelente opción para administradores de sistemas
El instalador de Determinate Systems activa Flake por defecto
Puedes mover la configuración de
/etc/nixosa un repositorio Git, y con el comandonixos-install --flake <repo>es posible desplegar una configuración completaSi además usas Home-manager, también puedes gestionar de forma declarativa hasta el directorio de usuario
Los archivos de
/etcpueden gestionarse conenvironment.etc, y los archivos de.configcon opciones de home-managerEnlaces relacionados: opción environment.etc, opciones de home-manager
mkOutOfStoreSymlinky me dio risa ver una respuesta que decía “es tan simple que no hace falta documentación”Aun así, las ventajas de NixOS son tan grandes que estoy migrando por completo en el orden homelab → laptop → desktop
Pero la situación de la documentación sigue siendo desesperante
Es decir, cumple a nivel de Nix el papel de un package.json y su lock file
Siempre me gustó NixOS, pero desde la era de los LLM me gusta todavía más
Le pides a Codex “modifica esta configuración del servidor para que funcione un certificado wildcard” y en 5 minutos queda resuelto
Nunca antes había sido tan fácil la administración reproducible de servidores
Desde que me cambié a NixOS, la época en que manejaba todo con apt o brew me parece tecnología de la Edad de Piedra
También combina excelente con herramientas de IA como Copilot
Para resolver problemas hace falta una comprensión más profunda que en Linux normal
A cambio, la estructura hace que pagues esa complejidad de una sola vez al inicio
Lo mejor es poder hacer instalaciones temporales con nix-shell o ver todos los paquetes instalados en un solo archivo de configuración
Gracias a los snapshots automáticos, experimentar no da miedo. Si algo sale mal, basta con arrancar la generación anterior
Antes me daba miedo modificar parámetros del kernel, pero ahora puedo probar lo que quiera
Como me gusta Lisp, también consideré Guix System, pero en términos de uso práctico NixOS es mejor
Ojalá NixOS no tuviera esa estructura de sistema de archivos tan rara
Sé que es un enfoque para resolver el problema de usar varias versiones de Python al mismo tiempo, pero para mí eso no hace falta
Solo quiero mantener la misma configuración en todas mis máquinas
Ahora mismo estoy experimentando con imágenes Fedora bootc y Podman, pero es incómodo no tener algo como
nixos-rebuild switchque aplique los cambios al instanteAl final es un trade-off entre Nix, que permite experimentar fácilmente, y Fedora, con sistema de archivos estándar
La mayor ventaja de NixOS es la reproducibilidad determinista del caché de CI
No hace falta reconstruir paquetes cada vez, y configurar entornos de desarrollo también es sencillo
Por ejemplo, Tangled construyó todo su sistema de CI con Nix, y resolvió por completo los problemas de caché de GitHub Actions
No para todo el sistema, pero uso mucho devenv.sh
Permite configurar entornos de desarrollo mucho más fácilmente que con contenedores locales
Me decepciona que no haya una forma sencilla de alinear versiones como con
.tool-versionsde asdfEn el mundo de Nix dicen “ese enfoque está mal”, pero yo igual quiero poder fijar versiones individuales
pkgs.mkShelltambién puedes crear un entorno parecido, así que me pregunto por qué haría falta usar devenvMe gusta NixOS, pero prefiero Guix
El lenguaje Guile me resulta más familiar y la documentación también está mejor hecha. Veo ambos sistemas como hermanos
Usar un lenguaje de programación real (Scheme) es una gran ventaja
Tiene una base mucho más potente que un simple lenguaje de configuración