Introduction à GNU Guix

Qu'est-ce que GNU Guix ?

GNU Guix est un gestionnaire de paquets fonctionnel et une distribution GNU/Linux complète. L'approche ressemble à NixOS, mais avec quelques différences notables.

Le problème

Les problèmes classiques :

  • Configuration système fragmentée
  • Mises à jour qui cassent l'environnement
  • Impossible de reproduire l'environnement de prod
  • "Ça marchait hier…"

La solution : programmation fonctionnelle

Guix applique les principes fonctionnels à la gestion de paquets.

Principes de base

  • Packages immuables dans /gnu/store avec hash unique
  • Configuration déclarative complète dans un fichier
  • Même config = même système, toujours
  • Versionnable avec git

Reproductibilité

  • Time-machine : revenir à un commit spécifique de Guix
  • Générations : rollback instantané, sélection au boot via GRUB
  • Reproductibilité bit-à-bit : même binaire à chaque compilation

Guix vs NixOS

Points communs

Configuration déclarative, rollbacks, générations, store isolé.

Différences

Aspect Guix NixOS
Langage Scheme (Guile) DSL dédié
Philosophie 100% libre (GNU) Pragmatique
Packages ~30k (HPC, recherche) ~80k (entreprise)
Bootstrap Minimal, auditable Plus de binaires initiaux
Communauté Petite, académique Large, entreprise

Cas d'usage

Guix excelle pour :

  • Recherche scientifique (reproductibilité long terme)
  • Lorque l'on recherche de la reproductibilité bit à bit
  • Stabilité de son OS

GNU Guix ≠ Guix System

  • GNU Guix : gestionnaire de paquets, fonctionne sur n'importe quelle distro
  • Guix System : distribution GNU/Linux complète

Tu peux installer Guix sur Arch/Debian/etc. et bénéficier des environnements isolés sans changer ton système.

Pour qui ?

Guix convient si :

  • Tu veux une maîtrise totale du système
  • La reproductibilité est critique
  • Tu apprécies Scheme/Lisp
  • Tu fais de la recherche ou du calcul scientifique

Courbe d'apprentissage raide, mais gain en maîtrise considérable.

Conclusion

Guix transforme ton système en code : versionnable, testable, reproductible.