# Nix (gestor d'empaqueta)

Nix és un gestor de paquets per ordinadors que és purament funcional. Igual que el Gestor de paquets RPM, APT i molts altres gestor de paquets, controla la instal·lació de paquets, és a dir, grups de fitxers (com ara aplicacions i les configuracions corresponents) amb un nom col·lectiu i un número de versió.

## Funcionament

El paquets de Nix es configuren mitjançant un llenguatge purament funcional i tardà que es va dissenyar expressament per fer aquesta tasca; per crear els paquets a partir del codi font, es poden utilitzar shell scripts o qualsevol altre programa extern (com ara Make). La naturalesa purament funcional del sistema permet fer un seguiment molt precís de les dependències entre els paquets; per exemple, un paquet binari té una dependència del corresponent paquet de codi font, del compilador i d'altres paquets necessaris per compilar-lo. Les dependències exactes de compilació i d'execució de cada paquet es determinen mitjançant resums (hashes) criptogràfics, i així cada paquet (de codi font o binari) es representa amb un d'aquests resums. Com a resultat, els repositoris de paquets binaris són una optimització transparent del funcionament bàsic del gestor de paquets (una cosa similar a un "cau" (cache) de paquets indexats per un resum criptogràfic).
Les dependències es resolen mitjançant un sistema funcionalment equivalent als enllaços físics, en el sentit que les versions de programes de què depèn un paquet no s'eliminen fins que ja no en depengui cap paquet. Això pot comportar que s'utilitzi més espai d'emmagatzematge, però també fa que totes les actualitzacions siguin segures (està garantit que no perjudiquen les aplicacions existents) i atòmiques. També permet que coexisteixin sense interferència diverses versions de qualsevol paquet, fins i tot paquets parametritzats com ara un programa amb una funcionalitat i sense.
Nix necessita tenir la seva pròpia estructura de directoris per instal·lar-hi els paquets: instal·la tots els paquets a subdirectoris del directori "nix". Les diferents versions d'un paquet es distingeixen afegint-ne el resum (hash) davant del nom.
Amb algunes precaucions, Nix es pot utilitzar com a gestor de paquets d'un sistema operatiu existent, per exemple d'una distribució de GNU/Linux. També es pot fer servir per gestionar tota mena de fitxers de configuració (com ara la instal·lació de servidors), més enllà dels paquets en sentit estricte.

## NixOS

NixOS és una distribució de GNU/Linux que utilitza Nix per gestionar tots els programes del sistema.

## Referències

* ↑ Prins, P., Suresh, J. i Dolstra, E., "Nix fixes dependency hell on all Linux distributions," linux.com, 22 desembre 2008
* ↑ Dolstra, E., de Jonge, M. i Visser, E. "Nix: A Safe and Policy-Free System for Software Deployment." Arxivat 2012-03-05 a Wayback Machine. A Damon, L. (Ed.), 18th Large Installation System Administration Conference (LISA '04), pàgines 79–92, Atlanta, Georgia, USA. USENIX, Novembre 2004.
* ↑ Dolstra, E. The Purely Functional Software Deployment Model. Arxivat 2012-03-05 a Wayback Machine. tesi doctoral, Faculty of Science, Utrecht, Països Baixos. Gener 2006. ISBN 90-393-4130-3
* ↑ http://nixos.org/
* ↑ Dolstra, E. i Löh, A. "NixOS: A Purely Functional Linux Distribution Arxivat 2012-03-05 a Wayback Machine.." A ICFP 2008: 13th ACM SIGPLAN International Conference on Functional Programming, pàgines 367–378, Victoria, British Columbia, Canadà. Setembre 2008.

## Vegeu també

* GNU Guix: Un altre gestor de paquets declaratiu per distribucions de GNU/Linux, basat en Nix però que per configurar i personalitzar utilitza GNU Guile, un intèrpret més general que el llenguatge dedicat de Nix.
* Zero Install

## Enllaços externs

* Nix - Lloc web oficial
* Comparació de Zero Install i sistemes com Nix
* Crítica d'un desenvolupador de Debian (2008)
* Introducció: Purely Functional Configuration Management with Nix and NixOS