Installation de GNU Guix avec Nonguix

Introduction

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

Installation du système de base

Télécharger l'image ISO

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

Créer une clé USB bootable

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

Options d'installation

Deux modes disponibles :

  • Mode graphique : installateur guidé depuis le menu de démarrage
  • Mode manuel : partitionnement et configuration en ligne de commande

Comprendre les canaux Guix

Un canal est un dépôt Git contenant des définitions de paquets.

Par défaut, Guix utilise le canal officiel (logiciels libres uniquement). Nonguix étend cette collection avec :

  • Pilotes propriétaires
  • Firmware
  • Noyau Linux complet

Les canaux permettent de :

  • Étendre le catalogue de paquets
  • Maintenir ses propres définitions
  • Contrôler les versions utilisées

Configuration du serveur de substituts

Les substituts sont des binaires pré-compilés. Sans eux, Guix compile tout depuis les sources.

Ajouter le serveur Nonguix

Dans /etc/config.scm :

(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))))))
  ...)

Télécharger la clé d'autorisation

wget https://substitutes.nonguix.org/signing-key.pub

Placer le fichier au bon endroit selon le chemin spécifié dans la configuration.

Vérification

guix weather firefox

Cette commande indique le taux de disponibilité des substituts pour Firefox.

Ajout du canal Nonguix

Configuration des canaux

Créer le fichier de configuration :

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

Contenu du fichier

(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 vérifient l'authenticité du canal.

Mise à jour des canaux

guix pull
hash guix

guix pull télécharge les nouvelles définitions de paquets. L'opération peut prendre plusieurs minutes.

Vérification

guix describe

Les canaux guix et nonguix doivent apparaître avec leurs commits respectifs.

Installation du noyau Linux non-libre

Le noyau Linux-libre exclut les blobs propriétaires, ce qui pose problème pour le WiFi et les GPU récents.

Modification de la configuration système

Éditer /etc/config.scm :

sudo nano /etc/config.scm

Imports nécessaires

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

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 : noyau Linux complet
  • initrd microcode-initrd : microcode CPU (Intel/AMD)
  • firmware (list linux-firmware) : firmware propriétaires

Reconfiguration du système

sudo guix system reconfigure /etc/config.scm

Cette commande :

  • Télécharge le noyau et les firmware
  • Génère une nouvelle génération du système
  • Met à jour GRUB

Redémarrage

sudo reboot

GRUB affichera la nouvelle génération avec le noyau Linux complet.

Vérification

uname -r

Doit afficher une version du noyau Linux standard.

Installation de paquets supplémentaires

guix install git vim htop

Ressources