Skip to content
Logo
GitHubLinkedIn

Installation de Guix

GNU Guix est un gestionnaire de paquets purement fonctionnel et une distribution GNU/Linux déclarative. Nonguix est un canal complémentaire qui ajoute les paquets non-libres nécessaires pour une utilisation quotidienne (pilotes, firmware, etc.).

Téléchargez l’image ISO depuis le site officiel :

Terminal window
wget https://ftp.gnu.org/gnu/guix/guix-system-install-1.4.0.x86_64-linux.iso

Créez une clé USB bootable :

Terminal window
sudo dd if=guix-system-install-1.4.0.x86_64-linux.iso of=/dev/sdX bs=4M status=progress && sync

Deux options s’offrent à vous pour l’installation :

  • Mode graphique : un installateur guidé accessible depuis le menu de démarrage
  • Mode manuel : partitionnement et configuration via la ligne de commande

Suivez l’installateur pour configurer votre système (partitions, utilisateur, réseau, etc.).

Un canal dans Guix est un dépôt Git contenant des définitions de paquets. C’est l’équivalent des PPA sous Ubuntu ou des repositories sous Arch. Par défaut, Guix utilise le canal officiel qui ne contient que des logiciels libres. Le canal Nonguix étend cette collection avec des paquets non-libres indispensables : pilotes propriétaires, firmware, noyau Linux complet, etc.

Les canaux permettent de :

  • Étendre le catalogue de paquets disponibles
  • Maintenir vos propres définitions de paquets
  • Contrôler précisément les versions utilisées

Les substituts sont des binaires pré-compilés. Sans eux, Guix compile tout depuis les sources, ce qui peut prendre des heures. Le serveur de substituts officiel fournit des binaires pour accélérer les installations.

Pour installer le serveur de substitutions de Nonguix, vous pouvez ajouter dans votre fichier /etc/config.scm, dans les services le code suivant :

(operating-system
(services (modify-services %desktop-services
(guix-service-type config => (guix-configuration
(inherit config)
(substitute-urls
(append (list "https://substitutes.nonguix.org")
%default-substitute-urls))
(authorized-keys
(append (list (local-file "./signing-key.pub"))
%default-authorized-guix-keys))))))
...)

Si on regarde attentivement, on voit que l’on a besoin d’une clé d’authorisation, qui est téléchargeable (faites attention à ce que le chemin corresponde) ici : https://substitutes.nonguix.org/signing-key.pub

Testez la disponibilité des substituts :

Terminal window
guix weather firefox

Cette commande va vous permettre de connaître le taux de disponibilité de firefox, savoir si cela va être +/- longs et si un substitut est disponible sur un serveur.

Créez le fichier de configuration des canaux :

Terminal window
mkdir -p ~/.config/guix
nano ~/.config/guix/channels.scm

Ajoutez le contenu suivant :

(cons* (channel
(name 'nonguix)
(url "https://gitlab.com/nonguix/nonguix")
(branch "master")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
%default-channels)

L’introduction et l’empreinte GPG permettent de vérifier l’authenticité du canal.

Mettez à jour Guix avec les nouveaux canaux :

Terminal window
guix pull
hash guix

La commande guix pull télécharge les nouvelles définitions de paquets depuis tous vos canaux. L’opération peut prendre plusieurs minutes.

Vérifiez que Nonguix est bien configuré :

Terminal window
guix describe

Vous devriez voir les canaux guix et nonguix listés avec leurs commits respectifs.

Le noyau Linux-libre fourni par défaut exclut les blobs propriétaires. Cela pose problème pour le WiFi, les GPU récents, etc. Le noyau Linux complet depuis Nonguix résout ces limitations.

Éditez votre configuration système :

Terminal window
sudo nano /etc/config.scm

Importez les modules nécessaires au début du fichier :

(use-modules (gnu)
(nongnu packages linux)
(nongnu system linux-initrd))
(use-service-modules networking ssh)

Ajoutez le noyau Linux, le microcode CPU et les firmware dans la configuration :

(operating-system
(kernel linux)
(initrd microcode-initrd)
(firmware (list linux-firmware))
(host-name "guix-system")
(timezone "Europe/Paris")
(locale "fr_FR.utf8")
;; ... reste de la configuration
)

Explications :

  • kernel linux : utilise le noyau Linux complet au lieu de Linux-libre
  • initrd microcode-initrd : charge le microcode CPU (Intel/AMD) au démarrage
  • firmware (list linux-firmware) : installe les firmware propriétaires nécessaires

Appliquez la nouvelle configuration :

Terminal window
sudo guix system reconfigure /etc/config.scm

Cette commande :

  1. Télécharge le noyau Linux et les firmware (ou leurs substituts)
  2. Génère une nouvelle génération du système
  3. Met à jour GRUB avec la nouvelle configuration

Redémarrez pour utiliser le nouveau noyau :

Terminal window
sudo reboot

Au démarrage, GRUB affichera la nouvelle génération avec le noyau Linux complet.

Après le redémarrage, vérifiez le noyau utilisé :

Terminal window
uname -r

Vous devriez voir une version du noyau Linux standard, pas Linux-libre.

Une fois le système démarré, installez des paquets dans votre profil utilisateur :

Terminal window
guix install git vim htop