Nix es un gestor de paquetes multiplataforma para sistemas tipo Unix y un lenguaje funcional para configurar esos sistemas, inventado en 2003 [ 7 ] por Eelco Dolstra.
Acercarse
El gestor de paquetes Nix emplea un modelo en el que cada paquete de software se instala en directorios únicos con contenido inmutable. Estos nombres de directorio corresponden a hashes criptográficos que tienen en cuenta todas las dependencias de un paquete, incluidos otros paquetes gestionados por Nix. Como resultado, los nombres de los paquetes de Nix identifican el contenido, ya que los paquetes con el mismo nombre habrán tenido las mismas entradas y la misma plataforma de compilación, y por lo tanto, el mismo resultado de compilación. [ 8 ]
Implementación
Las recetas de paquetes para Nix están escritas en el lenguaje Nix, un lenguaje de programación declarativo, puramente funcional , de evaluación diferida y tipado dinámico . [ 9 ] Las características distintivas del lenguaje Nix son las cadenas con "contexto", la interpolación de cadenas, las rutas de sistema de archivos de primera clase y las "cadenas con sangría", que en conjunto permiten expresar de forma concisa las dependencias entre los datos del sistema de archivos al especificar el contenido de nuevos archivos.
Las dependencias entre archivos, tal como se declaran en el lenguaje Nix, se rastrean y persisten automáticamente en el "almacén Nix". [ 10 ] Los nuevos archivos en el almacén Nix se crean mediante "derivaciones". Una derivación es una estructura de datos persistente que especifica un ejecutable, argumentos y variables de entorno para su invocación (véase execve), y otros archivos que se leerán del almacén Nix. El ejecutable se ejecuta en un entorno aislado que prohíbe el acceso a cualquier cosa que no sean los archivos de entrada especificados explícitamente y solo permite la escritura en la ruta de salida designada. Nix conserva la información de dependencia en los archivos de salida mediante el escaneo de los hashes distintivos utilizados para los nombres de los directorios de paquetes. [ 8 ]
El seguimiento automático de referencias garantiza la integridad de los paquetes, incluso cuando se transfieren entre máquinas. También permite la recolección de basura de paquetes no utilizados cuando ningún otro paquete depende de ellos. A costa de mayores requisitos de almacenamiento, todas las actualizaciones en Nix están garantizadas para ser atómicas y capaces de revertirse de manera eficiente . Los nombres de directorio únicos permiten instalar muchos paquetes con diferentes versiones de bibliotecas compartidas y se afirma que eliminan el llamado infierno de dependencias . [ 11 ] Esto también permite que varios usuarios instalen software de forma segura en el mismo sistema sin privilegios de administrador . Como resultado, el modelo de gestión e implementación de paquetes de Nix promueve paquetes más confiables, reproducibles y portátiles. [ 8 ] [ 12 ]
Nix ofrece soporte completo para Linux , macOS y WSL , y puede instalarse sin problemas junto con otro gestor de paquetes.
Paquetes sin imagen
Nixpkgs es el repositorio de paquetes construido sobre el gestor de paquetes Nix. Según Repology , a partir de enero de 2025 Contiene más de 122.000 paquetes [ 13 ] y tiene un mayor número de paquetes actualizados que cualquier otro repositorio de paquetes. [ 14 ] Los sistemas operativos compatibles con Nixpkgs son principalmente Linux y Darwin, con cierto soporte para Windows y variantes de BSD. Las arquitecturas de CPU compatibles incluyen x86 de 64 bits y ARM . Los paquetes para estas arquitecturas se compilan regularmente, utilizando un servicio de integración continua llamado Hydra, [ 15 ] y los resultados de estas compilaciones se cargan en una caché binaria pública. [ 16 ] Cuando Nix instala un paquete, comprueba esta caché y descarga el paquete binario para evitar compilarlo localmente.
Nixpkgs se desarrolla en un único repositorio Git en GitHub. [ 17 ] Además de los paquetes, también contiene el código fuente de NixOS .
Proyectos que utilizan Nix
NixOS [ 18 ] es una distribución de Linux que utiliza Nix para gestionar toda la configuración del sistema, incluido el núcleo de Linux. [ 19 ]
Nix se utiliza para el empaquetado y la distribución de software en el experimento LHCb del CERN . [ 20 ] Nix es la base de las plataformas de desarrollo de software distribuido Replit [ 21 ] y Firebase Studio . [ 22 ]
Bifurcaciones e implementaciones alternativas
En 2021, se anunció una reimplementación con el nombre Tvix, [ 23 ] con los objetivos de modularidad, compatibilidad total con Nixpkgs y un rendimiento mejorado del evaluador. A partir de 2024, Tvix cuenta con un evaluador [ 24 ] y una implementación de almacenamiento, [ 25 ] aunque los autores no consideran que el proyecto sea aún estable o esté listo para su uso en producción. [ 26 ] Tvix está escrito principalmente en Rust . [ 27 ]
En 2024, un equipo de voluntarios lanzó la primera versión de Lix, [ 28 ] una bifurcación de Nix centrada en la corrección y la compatibilidad que utiliza el sistema de automatización de compilación Meson . El proyecto pretende reescribir gradualmente partes del código en Rust. [ 28 ]
En marzo de 2025 se creó una bifurcación de Tvix, llamada Snix. [ 29 ]
Véase también
- GNU Guix : otro gestor de paquetes declarativo y un clon temprano de Nix, que utiliza GNU Guile para la configuración y personalización.
- Maak : una utilidad de automatización de compilación similar a make, y precursora temprana de Nix.
- Automatización de manuales de procedimientos
Referencias
- ↑ "Versión 2.34.8" .
- ↑ "Nix, el gestor de paquetes puramente funcional" . GitHub . Consultado el 9 de diciembre de 2025 .
- ↑ "Nix, el gestor de paquetes puramente funcional" . GitHub . Consultado el 9 de diciembre de 2025 .
- ↑ "NixBSD" . Consultado el 15 de marzo de 2025 .
- ↑ "OpenBSD Ports Readme: port sysutils/nix" . Consultado el 15 de marzo de 2025 .
- ↑ "nix/COPYING en master" . 26 de abril de 2006. Consultado el 18 de mayo de 2024 .
- ↑ Dolstra, Eelco (2003). «Integración de la construcción y el despliegue de software» (PDF) . Gestión de la configuración de software . Notas de clase en informática. Vol. 2649. págs. 102–117 . doi : 10.1007/3-540-39195-9_8 . ISBN 978-3-540-14036-8Archivado del original (PDF) el 21 de abril de 2019.
- 1 2 3 Dolstra, Eelco; de Jonge, Merijn; Visser, Eelco (noviembre de 2004). "Nix: un sistema seguro y sin políticas para la implementación de software" (PDF) . LISA '04: Actas de la 18.ª Conferencia USENIX sobre Administración de Sistemas . págs. 79–92 . Recuperado el 11 de julio de 2023 .
- ↑ "Manual de referencia de Nix: Lenguaje Nix" . Consultado el 4 de marzo de 2024 .
- ↑ "Manual de referencia de Nix: Tienda Nix" . 4 de marzo de 2024.
- ↑ Prins, Pjotr; Suresh, Jeeva; Dolstra, Eelco (22 de diciembre de 2008). "Nix soluciona el infierno de dependencia en todas las distribuciones de Linux" . Linux.com . Consultado el 11 de julio de 2023 .
- ↑ Dolstra, Eelco (2006). El modelo de despliegue de software puramente funcional (PDF) (Ph.D.). Universidad de Utrecht . Recuperado el 11 de julio de 2023 .
- ↑ "Información sobre el repositorio inestable de Nixpkgs - Repology" . Archivado del original el 15 de enero de 2025.
- ↑ "Estadísticas del repositorio - Repology" .
- ↑ "RFC 0046 - Niveles de soporte de plataforma" . GitHub .
- ↑ "Caché binaria oficial de NixOS" .
- ↑ "Repositorio de GitHub de Nixpkgs" . GitHub .
- ↑ "Nix y NixOS | Compilaciones y despliegues reproducibles" . nixos.org .
- ↑ Dolstra, Eelco; Löh, Andres; Pierron, Nicolas (septiembre de 2008). NixOS: Una distribución Linux puramente funcional (PDF) . ICFP 2008: 13.ª Conferencia Internacional ACM SIGPLAN sobre Programación Funcional. págs. 367–378 .
- ↑ Burr, Chris; Clemencic, Marco; Couturier, Ben (2018). "Empaquetado y distribución de software para LHCb usando Nix" (PDF) .
- ↑ Replit (25/05/2023). "Replit: Super Colliding Nix Stores: Nix Flakes para millones de desarrolladores" . Blog de Replit . Consultado el 05/03/2024 .
- ↑ "Personaliza tu espacio de trabajo IDX | Proyecto IDX" . Google para desarrolladores . Consultado el 5 de marzo de 2024 .
- ↑ "Blog de TVL: Tvix: Estamos reescribiendo Nix" . tvl.fyi . Consultado el 19 de mayo de 2024 .
- ↑ «Blog de TVL: Tvix Status - Septiembre '22» . tvl.para tu información . Consultado el 19 de mayo de 2024 .
- ↑ "Blog de TVL: Estado de Tvix - Febrero de 2024" . tvl.fyi . Consultado el 19 de mayo de 2024 .
- ↑ tvlfyi/tvix , The Virus Lounge, 18 de mayo de 2024 , consultado el 19 de mayo de 2024
- ↑ "tvix - depot - Sourcegraph" . cs.tvl.fyi . Consultado el 19-05-2024 .
- 1 2 "Lix | Acerca de Lix" . lix.systems . Consultado el 19 de mayo de 2024 .
- ↑ "Anuncio de Snix" . Proyecto Snix. 16 de marzo de 2025. Consultado el 18 de noviembre de 2025 .
Enlaces externos
- Sitio web oficial

- Nix en GitHub
- Discusión entre desarrolladores en la lista de correo de Debian (2008)
- Software de 2012
- Gestión de la configuración
- Software de gestión de datos
- Herramientas de programación informática gratuitas
- Sistemas de gestión de paquetes gratuitos
- Software libre programado en C++
- Programación funcional
- Software relacionado con la gestión de paquetes de Linux
- Software que utiliza la Licencia Pública General Reducida de GNU.
- Software Unix