Gnu Guix The Motherland of the Power User

Guix System est une distribution Linux fonctionnelle, déclarative et reproductible, construite sur Guile Scheme, qui offre des rollbacks atomiques, des environnements éphémères et une configuration système entièrement décrite dans un fichier unique, le tout sous l’égide de la ...

Voir la source

SYNTHÈSE STRUCTURÉE

Le modèle fonctionnel : un store immuable et des hashs

Chaque paquet vit dans le store sous un chemin haché qui dépend de l’intégralité de son graphe de dépendances. « Rien, et j’insiste sur rien, n’est jamais écrasé. » Cela permet de cohabiter plusieurs versions d’un même paquet sans conflit, de réaliser des mises à jour transactionnelles et d’effectuer des rollbacks atomiques garantis. La commande guix install ajoute un paquet dans votre profil utilisateur, qui n’est qu’un ensemble de liens symboliques pointant vers le store.

La gestion des paquets sans sudo et en langage humain

Les commandes quotidiennes sont des verbes simples : guix search, guix install, guix remove, guix upgrade. L’intervenant insiste : « Nous sommes des êtres humains comme les autres, et je ne comprends vraiment pas pourquoi cette habitude vieille de 40 ans refuse de mourir. » Chaque utilisateur possède son propre profil, et il est possible d’en créer plusieurs pour des projets distincts sans interférence.

Les générations et le rollback instantané

Chaque modification de profil crée une « génération » numérotée. Vous pouvez lister toutes les générations avec guix system list generations et revenir à la précédente avec guix system rollback. « Si une mise à jour casse quelque chose, vous êtes de nouveau opérationnel en une seconde. Pas de downgrade manuel, pas de travail de détective. » Ce mécanisme s’applique aussi bien au profil utilisateur qu’au système entier.

Les environnements éphémères avec guix shell

Pour tester un paquet ou créer un environnement de développement sans salir le système, utilisez guix shell suivi des paquets souhaités. Avec l’option --container, l’isolation est totale. « Au moment où je ferme ce shell, c’est comme si ces paquets n’avaient jamais existé. » Cette fonctionnalité remplace l’ancienne guix environment.

La configuration système déclarative

Au lieu de configurer le système via des commandes éparses, vous décrivez l’intégralité de la machine (utilisateurs, services, noyau, partitions, paquets globaux) dans un seul fichier Scheme, généralement /etc/config.scm. La commande guix system reconfigure construit une nouvelle génération système et l’ajoute au menu de démarrage. « Si une reconfiguration laisse votre machine incapable de démarrer, vous redémarrez, choisissez la génération précédente dans le chargeur d’amorçage, et vous êtes sauvé. »

Guix Home : la déclaration de l’environnement utilisateur

Tout ce qui se trouve habituellement dans les dotfiles (shell, variables, services utilisateur, paquets) se déclare dans un fichier unique. La commande guix home reconfigure applique cette configuration. « Le même fichier déposé sur une machine neuve reconstruit mon environnement à l’identique. » C’est, selon l’intervenant, « la partie la plus élégante de tout le système ».

Les canaux et les substituts

Les substituts sont les binaires précompilés téléchargés depuis les serveurs de build du projet (CI principal et serveur de Bordeaux). Sans eux, Guix compile depuis les sources, ce qui est lent. Les canaux (channels) sont un fichier de configuration dans le dossier personnel qui ajoute des sources de paquets supplémentaires, comme le fameux canal nonguix pour les logiciels non libres.

La différence fondamentale avec NixOS

Nix et Guix partagent le même modèle de base (store immuable, profils, rollbacks, builds reproductibles). Les différences se situent au-dessus :

  • Langage : Nix utilise un DSL propriétaire ; Guix utilise Guile Scheme, un Lisp généraliste avec REPL, macros et débogage. « Avec Guix, vous obtenez un langage complet, du haut en bas. »
  • Init : NixOS est indissociable de systemd ; Guix utilise GNU Shepherd, écrit en Guile, asynchrone et basé sur les dépendances.
  • Liberté logicielle : Guix est un projet GNU, utilise Linux-libre par défaut et ne référence aucun logiciel propriétaire. NixOS est pragmatique et inclut un paramètre pour autoriser les paquets non libres.
  • Taille de l’écosystème : Nixpkgs est immense ; Guix est bien plus petit, ce qui signifie plus de compilations locales.

Le bootstrap et la confiance

Guix a investi massivement dans le bootstrap complet depuis les sources, réduisant la graine binaire à une taille vérifiable à la main avec Mes et Stage0. « C’est un assaut direct contre le problème de la confiance dans le compilateur de Thompson. » Nix n’a pas poursuivi cet agenda avec la même obsession.

La gouvernance et la communauté

Guix vit sous l’égide du GNU et de la FSF, avec une communauté petite, cohérente et lente. Nix a connu des bouleversements récents (démissions, conflits, forks comme Lix). L’intervenant note que c’est « un facteur réel si vous pesez où investir votre énergie à long terme ».

CONCEPTS CLÉS

  • Store immuable : Répertoire (généralement /gnu/store) où chaque paquet est stocké sous un chemin haché unique, garantissant qu’aucun fichier n’est jamais écrasé.
  • Génération : Instantané d’un profil ou d’une configuration système à un moment donné, permettant un rollback atomique.
  • Substitut : Binaire précompilé téléchargé depuis un serveur de build pour éviter la compilation locale.
  • Canal (channel) : Source supplémentaire de définitions de paquets, configurable dans ~/.config/guix/channels.scm.
  • G-Expression (Gexp) : Mécanisme de Guile Scheme permettant de décrire des phases de build sans changer de langage, contrairement à Nix qui utilise Bash.
  • Shepherd : Init système de Guix, écrit en Guile, asynchrone et basé sur les dépendances, conçu comme une alternative à systemd.

CONCLUSION

Guix System est une distribution d’une qualité technique rare, qui mérite d’être sur toutes les lèvres des power users. Son modèle fonctionnel, sa configuration déclarative, ses rollbacks garantis et son engagement pour la liberté logicielle en font un outil puissant et cohérent. L’intervenant conclut : « C’est la patrie du véritable utilisateur Linux. L’endroit où, après un an de distributions essayées et abandonnées, je me suis enfin senti chez moi. » Le principal frein reste la taille réduite de l’écosystème et la nécessité de compiler plus souvent, mais pour ceux qui privilégient l’élégance, la reproductibilité et l’éthique, Guix est une révélation.

Du même canal

Tout voir