Le projet GNU annonce en novembre 2012 la sortie d’un gestionnaire de paquets purement fonctionnel utilisant Guile comme interface de programmation[5]. Le projet est initié dès juin 2012 par l’un des principaux hackeurs GNU du projet Guile, Ludovic Courtès, lequel présenta la solution un an plus tard, à Madrid, lors de la conférence European Lisp Symposium 2013[6].
Caractéristiques
Transactionnel
GNU Guix est transactionnel. Il est possible à tout moment de revenir en arrière dans les versions des paquets installés. De la même façon, si une mise à jour échoue au milieu du processus, le système n'est pas altéré[7].
Reproductible
GNU Guix est reproductible. Le même paquet avec les mêmes informations de compilation donnent toujours le même résultat binaire. Cela permet de simplifier le déploiement d'environnements identiques[7].
Profils
Chaque utilisateur dispose de son propre profil. Cela permet à différents utilisateurs d'avoir un même paquet dans une version différente. Aussi, chaque utilisateur peut avoir ses propres paquets sans forcément les partager avec les autres utilisateurs[8].
Environnements
Il est possible de créer des environnements avec des paquets spécifiques. Cela permet de disposer de certains paquets seulement le temps de l'existence de l'environnement et de ne pas avoir à installer les paquets sur son profil. Il est aussi possible d'ignorer les variables d'environnement existantes pour disposer d'un environnement qui ne contient que les paquets spécifiés[9].