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/storeavec 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.