NixOS 25.11 Xantusia: todas las novedades y cambios clave

NixOS vuelve a la carga con, NixOS 25.11, una versión que trae cambios muy profundos tanto en el propio sistema como en el enorme ecosistema de paquetes que lo rodea. Con nombre en clave “Xantusia”, ya está disponible y viene cargada de novedades interesantes para escritorio, servidores, desarrollo y despliegues cloud, pero también con un buen puñado de incompatibilidades y paquetes retirados que conviene revisar con calma antes de actualizar.
En este artículo vamos a ver todas las novedades importantes de NixOS 25.11 y de la base de paquetes Nixpkgs: actualizaciones clave como GNOME 49, LLVM 21 o ROCm 6.3, cambios profundos en Go, Rust, Node.js, PostgreSQL o Docker, servicios que cambian de nombre, módulos nuevos y opciones de configuración adicionales. Además, comentaremos un caso real con problemas de proxy al compilar Discord y cómo afrontarlos en este nuevo contexto.
NixOS 25.11 “Xantusia”: ciclo de vida y cifras del lanzamiento
La nueva versión estable, NixOS 25.11 “Xantusia”, ya se puede instalar y actualizar en cualquier sistema que utilice canales estables. Esta edición mantendrá parches de seguridad y correcciones de errores durante un periodo de siete meses, hasta el 30 de junio de 2026, así que se trata del nuevo objetivo recomendado si vienes de una versión anterior.
La anterior estable, NixOS 25.05 “Warbler”, pasa a estar oficialmente obsoleta y dejará de recibir actualizaciones de seguridad a partir del 31 de diciembre de 2025. Si todavía sigues en 25.05 o en una rama aún más antigua, es un buen momento para planificar la migración a 25.11 con calma, revisando los cambios incompatibles que detallaremos a lo largo del texto.
Este lanzamiento es también un escaparate del ritmo de desarrollo del proyecto. Entre NixOS 25.05 y NixOS 25.11 han participado 2742 personas colaboradoras, que en conjunto han firmado nada menos que 59.430 commits en Nixpkgs y en la configuración del sistema. Detrás de estas cifras hay desde pequeñas correcciones de paquetes marginales hasta rediseños importantes de módulos críticos de la distribución.
Nixpkgs: paquetes añadidos, actualizados y eliminados de NixOS 25.11
La colección de paquetes de Nixpkgs, que es la columna vertebral no solo de NixOS sino de cualquier sistema que use el gestor de paquetes Nix en Linux o macOS, ha recibido un mantenimiento masivo en este ciclo.
Por un lado, se han añadido 7002 paquetes nuevos, ampliando todavía más el abanico de software disponible. Esto incluye desde herramientas de desarrollo de última hornada hasta aplicaciones de escritorio, utilidades de administración y software científico.
Al mismo tiempo, el equipo ha actualizado 25.252 paquetes existentes, de forma que la mayoría de software popular se alinea con versiones recientes y, sobre todo, con correcciones de seguridad y mejoras de rendimiento. Esto es clave en entornos donde se exige reproducibilidad pero también estar razonablemente al día.
Para mantener el repositorio manejable y seguro, Nixpkgs ha eliminado 6338 paquetes antiguos que ya no tenían mantenimiento, estaban rotos o se habían quedado obsoletos aguas arriba. En muchos casos existen alternativas directas en el propio árbol de Nixpkgs, pero en otros simplemente dejan de estar disponibles para evitar problemas de seguridad o de compilación.
Módulos de NixOS y opciones de configuración
Además de los paquetes, NixOS se distingue por su potente sistema de módulos declarativos. En este ciclo se han incorporado 107 módulos nuevos, que añaden soporte para nuevos servicios, demonios, aplicaciones y configuraciones del sistema. Con ellos llegan también 1778 nuevas opciones de configuración, lo que aumenta aún más la granularidad con la que se puede describir un sistema.
Por otro lado, se han retirado 41 módulos y 807 opciones de configuración que habían quedado obsoletos, rotos o sustituidos por alternativas más modernas. Si reutilizas configuraciones antiguas, es buena idea revisar los avisos de deprecación para adaptar tus ficheros antes de hacer el cambio de generación.
Novedades destacadas en el escritorio: GNOME 49 “Brescia”
Una de las grandes novedades para usuarios de escritorio es la actualización a GNOME 49 “Brescia”. Esta versión del entorno de escritorio da un paso decidido hacia Wayland y elimina la sesión basada en X11, lo que puede suponer un cambio relevante si mantenías configuraciones o extensiones antiguas que dependían explícitamente de Xorg.
GNOME 49 incorpora nuevas aplicaciones como un reproductor de vídeo renovado y un visor de documentos actualizado, además de un calendario rediseñado y multitud de pequeños cambios en la experiencia de usuario. Conviene revisar las notas de lanzamiento oficiales de GNOME si dependes de alguna funcionalidad muy específica o de extensiones complejas.
Compiladores C y toolchains: LLVM, GCC y CMake
En el apartado de compilación, NixOS 25.11 actualiza LLVM a la versión 21, un salto relevante para quienes desarrollan en C, C++ o Rust usando el toolchain de Clang. Esta versión trae mejoras de optimización, nuevos objetivos soportados y ajustes en las advertencias que pueden provocar cambios de comportamiento en algunos proyectos.
El compilador GCC se mantiene en la rama 14, una versión ya consolidada y probada en producción. Esto facilita mantener compatibilidad con proyectos que aún dependen de esta familia de compiladores sin encontrarse con cambios disruptivos en cada actualización del sistema.
Por su parte, CMake se actualiza a la versión 4, lo que puede activar nuevas características en sistemas de build modernos pero también requerir ajustes en proyectos que utilizaban sintaxis o comandos desfasados. Si tienes plantillas de CMake antiguas, es buena idea ejecutar las pruebas de compilación antes de dar por cerrada la migración.
GPU, cómputo y cambios en ROCm y CUDA
Para quienes trabajan con aceleración por GPU, la rama rocmPackages_6 actualiza a ROCm 6.3, mientras que rocmPackages_5 se elimina del árbol. Algunas piezas se reestructuran: rocmPackages.rocm-thunk desaparece como paquete separado y se integra en rocmPackages.clr, y rocmPackages.clang-ocl se retira tras haber sido abandonado por AMD en 2023.
En paralelo, se pierde el soporte oficial para CUDA 10, tal como ya se adelantó en las notas de NixOS 24.11. Los usuarios que todavía daban soporte a hardware muy antiguo deben plantearse la actualización de GPU o revisar si hay alternativas mantenidas de otros fabricantes o backends.
Navegador, proxies y problemas al compilar Discord
Una cuestión práctica que ha salido a la luz con esta versión es el uso de proxies durante las compilaciones. Un usuario describe cómo puede descargar perfectamente el archivo discord-0.0.116.tar.gz desde el navegador mediante el proxy corporativo, pero al ejecutar nixos-rebuild la descarga con curl falla repetidamente con un error curl: (35) Recv failure: Connection reset by peer hasta agotar los reintentos.
El mensaje de error de Nix indica que no se ha podido descargar el tarball de Discord desde ningún mirror, rompiendo así la derivación discord-0.0.116.tar.gz.drv y, en cascada, la construcción del entorno de usuario y del sistema completo. Aunque en el log aparecen advertencias de reintentos automáticos, en ningún momento se reflejan variables como https_proxy o all_proxy, lo que da pistas de que el entorno de ejecución dentro del build sandbox no está viendo la configuración de red del usuario.
En NixOS, las variables de entorno estándar de proxy pueden no propagarse de forma directa a las derivaciones si se usa sandboxing estricto o si la configuración del sistema no las exporta a los builds. La solución típica pasa por configurar las opciones de Nix como nix.extraOptions para incluir http_proxy, https_proxy y compañía, o bien desactivar temporalmente el sandbox para esa máquina (no recomendado a largo plazo) mientras se ajusta el servidor proxy para permitir tráfico desde la IP del builder.
Otra vía es recurrir a binary caches que ya contengan Discord u otros paquetes problemáticos, evitando así que Nix tenga que descargar los orígenes directamente. En cualquier caso, este tipo de errores de red cobran mayor relevancia en una versión como 25.11, que mueve tantas piezas a la vez y puede hacer aflorar comportamientos diferentes en la forma de resolver URLs.
Red, contenedores y servicios web
En el terreno de redes y contenedores, NixOS 25.11 introduce cambios importantes. El proxy HTTP squid sube a la versión 7, una edición con varios cambios incompatibles y, por ejemplo, eliminación de la funcionalidad ESI. Para ajustar tus configuraciones personalizadas se recomienda revisar las notas de la propia versión de Squid.
A nivel de orquestación, containerd se actualiza a su rama 2.x, lo que trae un buen número de modificaciones de comportamiento. Si usas containerd de forma directa o como componente de una plataforma, es imprescindible repasar la documentación de containerd 2.0 para evitar sorpresas en producción.
En el mundo Docker, docker_24 se elimina del árbol por estar fuera de soporte y arrastrar vulnerabilidades conocidas desde junio de 2024. La idea es empujar a las instalaciones a versiones de Docker más recientes y mantenidas.
En cuanto a servidores y paneles, NetBox se actualiza a la rama 4.2, con cambios importantes a nivel de esquema y comportamiento. La versión 4.0.x desaparece del árbol, y se pide seguir los avisos de las actualizaciones 4.1 y 4.2 antes de dar el salto. Otros servicios como matomo pasan a usar por defecto la versión 5 (la 4 ha quedado fuera de soporte), y se retira el paquete matomo-beta dado que ahora es sencillo sobreescribir la versión desde overrideAttrs.
Kafka también protagoniza un salto relevante: Apache Kafka se actualiza a la rama 4.0, que ya no soporta ZooKeeper. Todas las instalaciones deben migrarse a modo KRaft, siguiendo las indicaciones de la propia fundación Apache. En NixOS esto implica revisar las configuraciones para eliminar referencias a ZooKeeper y adaptar el despliegue de brokers.
Servicios, demonios y aplicaciones que cambian o desaparecen de NixOS 25.11
La lista de paquetes y servicios que se renombran, actualizan de forma incompatible o se retiran es muy larga en este ciclo, una muestra de la voluntad de limpiar el árbol de software antiguo o problemático.
Algunos ejemplos destacados: gkraken desaparece y se recomienda usar coolercontrol como alternativa; opensmtpd-extras se retira al no ser compatible con OpenSMTPD 7.6.0+, dando paso a paquetes específicos opensmtpd-table-*; zammad deja de soportar MySQL y obliga a migrar a PostgreSQL siguiendo la guía oficial.
En el mundo de los nombres, minetest pasa a llamarse luanti para reflejar el cambio aguas arriba, pero se mantienen alias para evitar roturas inmediatas. De forma similar, poac cambia a cabinpkg, xdragon pasa a dragon-drop (con xdragon como alias) y siduck76-st se renombra a st-snazzy. También hay letras pequeñas: la fuente serious-sans se retira porque upstream ha cambiado el nombre a Serious Shanns, aún sin empaquetar.
Otros proyectos simplemente se archivan: gkraken, ephemeral, vocal, fluxus, sm64ex-coop, nexusmods-app, nodePackages.ganache y muchos más se marcan como rotos, sin mantenimiento o inseguros y se eliminan de Nixpkgs. En varios casos se sugiere una alternativa (por ejemplo, sm64coopdx para reemplazar a sm64ex-coop, o gnome-podcasts y kasts para sustituir a vocal).
En el entorno de mensajería y privacidad, los paquetes signald, signaldctl y purple-signald se descatalogan por incompatibilidad prolongada con los servidores oficiales de Signal, y el servidor Matrix conduwuit se marca como vulnerable tras ser discontinuado por sus desarrolladores.
Versiones nuevas y cambios de comportamiento en aplicaciones populares
Al margen de las desapariciones, muchas aplicaciones se actualizan con cambios de comportamiento que rompen compatibilidad. Por ejemplo, Grafana Agent y su módulo salen de escena en favor de Grafana Alloy, que ya cuenta con su propio servicio services.alloy. Grafana recomienda migrar a grafana-alloy y proporciona documentación para hacer el traspaso.
El ecosistema de monitores y paneles también se mueve: prometheus da el salto a la rama 3.x, con notas de migración oficiales, mientras que kanata, authelia, helmfile, open-policy-agent y otros muchos paquetes se actualizan a versiones mayores con cambios en sintaxis, formatos de configuración y valores por defecto. En particular, OPA hace que rego.v1 sea ahora el estilo por defecto, marcando la sintaxis v0 como heredada, aunque todavía existe un modo de compatibilidad.
El mundo del escritorio no se queda atrás: GIMP 3.0 aparece como gimp3, strawberry se actualiza a la serie 1.2 y abandona el backend VLC y Qt5 (desaparecen el paquete strawberry-qt5 y algunas opciones con GStreamer/VLC), rofi pasa de la 1.7.5 a la 1.7.6 con cambios de ABI en plugins binarios, y tauon 7.9.0+ migra su base de datos a un esquema incompatible hacia atrás, por lo que conviene hacer copia de ~/.local/share/TauonMusicBox antes de abrir la nueva versión.
En el ámbito del desarrollo web y JavaScript, nodejs_latest evoluciona a la serie 24.x, se eliminan nodejs_23 y nodejs_18, y se hace limpieza de paquetes Node que nunca debieron ser globales (como webpack-dev-server, copy-webpack-plugin, expo-cli o create-react-native-app), con la recomendación de instalarlos a nivel de proyecto. Herramientas como pnpm dan el salto a la versión 10 con un paquete secundario pnpm_9 para quien necesite compatibilidad.
También hay ajustes en tipografías: nerdfonts se divide en paquetes individuales bajo el espacio de nombres nerd-fonts y cambian las rutas de instalación de las fuentes, que pasan a tener directorios por tipo de fuente (<fontDirName>). Esto obliga a adaptar configuraciones que apuntaban a las rutas antiguas.
Cambios en kernel, hardware y entorno del sistema
A nivel de sistema, se abandona todo soporte para Darwin de 32 bits, manteniendo solo plataformas modernas. Además, el triple de configuración de aarch64-darwin se ajusta a arm64-apple-darwin, alineándose con las expectativas de Apple y LLVM.
El paquete tinycc pasa a separar outputs en dev, doc y lib, haciendo que tinycc.out contenga únicamente los binarios de tcc y los compiladores cruzados. En TPM, tpm2-pkcs11 se compila sin soporte de abrmd por defecto, priorizando el gestor de recursos del kernel; si necesitas la variante con abrmd, existe tpm2-pkcs11.abrmd, y el módulo de NixOS elige automáticamente según security.tpm2.abrmd.
En udev, las reglas de libjaylink exigen ahora pertenecer al grupo jlink en lugar de plugdev, ya que este último era muy poco común en NixOS. También se permite acceso a través de sesiones de seat, de modo que el impacto es limitado si utilizas un escritorio estándar.
La utilería mkBinaryCache se moderniza y pasa a usar zstd como compresión por defecto
Para los caches binarios generados, se deja la opción de seguir con xz mediante compression = "xz";. Esto mejora el rendimiento en la generación y el consumo de binarios en la mayoría de casos.
En opciones de red, networking.nat.externalIP y externalIPv6 cambian su comportamiento: las reglas de networking.nat.forwardPorts ahora solo aplican a paquetes destinados a las IPs indicadas explícitamente. Esto evita redirecciones inesperadas, pero puede requerir ajustar definiciones de NAT existentes.
En el manejo de sistemas de ficheros, las definiciones fileSystems (como fileSystems.»/») pasan a establecerse con lib.mkDefault desde los módulos de NixOS, lo que permite reemplazarlas de golpe pero provoca errores si solo se sobrescriben atributos individuales sin indicar device. De lo contrario, es posible encontrarse mensajes como No device specified for mount point '/'.
Edición de texto, entornos de desarrollo y utilidades varias de NixOS 25.11
En el universo Emacs, NixOS 25.11 elimina Emacs 28 y 29, tanto en versión estándar como en el Macport para la 28. La edición Macport de Emacs 29 se mantiene pero con parches para vulnerabilidades conocidas. Racket también sufre podas: racket_7_9 se retira por inseguro, empujando a usar Racket 8, y con ello se elimina fluxus, que dependía de esa versión sin mantenimiento desde hacía años.
El buscador de texto binwalk 3.1.0 se reescribe en Rust, y el módulo Python asociado deja de estar disponible; la herramienta de cuentas personales python3Packages.beancount sube a la 3.1 con la serie anterior mantenida como beancount_2. En correo y CLI, tldr pasa a usar el cliente Python en lugar del C, y himalaya actualiza a la 1.1.0 con cambios rompientes que obligan a revisar la configuración.
En herramientas varias, nq 1.0 renombra fq y tq a nqtail y nqterm, zf 0.10.2 cambia la forma en que trata Unicode y secuencias de escape, y ast-grep retira el comando sg para evitar conflictos con shadow-utils, permitiendo aún una versión con compatibilidad heredada mediante enableLegacySg = true;.
Al mismo tiempo, la familia de funciones de log estándar nixLog* se reescribe para anteponer el nivel de depuración y el nombre de la función llamante, reintroduciendo nixLog como logger incondicional que añade también el contexto de función. Esto facilita depurar derivaciones y hooks complejos.
Por último, algunas utilidades de pruebas como testers.shellcheck ahora avisan si no se proporciona el atributo name, que pasará a ser obligatorio en futuras versiones. Y en Haskell, testTarget se marca como obsoleto en favor de testTargets, que acepta una lista explícita de objetivos en lugar de una cadena separada por espacios.
La versión 25.11 de NixOS consolida así una enorme cantidad de cambios, desde el escritorio GNOME 49 y las actualizaciones masivas de paquetes hasta ajustes profundos en toolchains, servicios de red y políticas de compatibilidad, convirtiéndose en una edición clave para quien quiera mantener su entorno Nix al día sin perder de vista la estabilidad y la reproducibilidad que caracterizan al proyecto.
