How to Install GNU Guix System (2027 Edition)

Ce tutoriel présente l’installation et la configuration initiale de GNU Guix System, une distribution Linux reproductible et fonctionnelle, en insistant sur la simplicité du processus (quelques commandes) et la puissance de son système de gestion de paquets déclaratif.

Voir la source

SYNTHÈSE STRUCTURÉE

Pourquoi Guix System en 2027

L’intervenant qualifie Guix System de « one of the final non-legacy distros here in 2027 », au même titre que NixOS. Il souligne que sa philosophie de conception et son potentiel de « flex » avec neofetch en font une distribution de « fin de jeu » pour les utilisateurs Linux expérimentés. L’idée est que maîtriser Guix System confère une crédibilité technique immédiate.

Installation minimale en ligne de commande

L’installation se fait via une interface TUI (Text User Interface) après avoir défini la langue et le fuseau horaire. L’intervenant précise qu’il existe un outil graphique, mais qu’il préfère « the shell-based process because it is going to be easier for me. It’s about four or five commands. » Cette approche illustre la philosophie minimaliste de Guix.

Partitionnement manuel avec cfdisk

La procédure de partitionnement est classique :

  • Création d’une table GPT avec cfdisk /dev/vda
  • Partition EFI de 1 Go (/dev/vda1)
  • Partition swap de 4 Go (/dev/vda2)
  • Partition racine ext4 de 45 Go (/dev/vda3)
  • Formatage : mkfs.fat -F 32 /dev/vda1, mkswap /dev/vda2, mkfs.ext4 -L "guix system" /dev/vda3

Montage et préparation de l’environnement

Les partitions sont montées avec :

mount /dev/vda3 /mnt
mkdir /mnt/efi
mount /dev/vda1 /mnt/efi
swapon /dev/vda2

Puis le « cow store » est démarré avec herd start cow-store /mnt pour créer une copie du store GNU sur le disque cible.

Configuration déclarative avec config.scm

Le fichier de configuration est copié depuis l’ISO :

mkdir /mnt/etc
cp /etc/configuration/desktop.tmpl /mnt/etc/config.scm

L’intervenant utilise Emacs pour l’éditer, mais précise que « if you would like to use Vim or Vis or something different, you would just drop into a shell here. So you do guix shell vis to download this. » La configuration déclarative permet de définir l’ensemble du système (paquets, services, utilisateurs) dans un seul fichier.

Gestion des paquets : modules et dépendances

Pour ajouter un paquet, il faut :

  1. Trouver son module avec guix show <paquet> | grep location
  2. Importer ce module dans la section use-modules du fichier config.scm
  3. Ajouter le paquet dans la liste packages Exemple avec btop :
guix show btop | grep location
# Résultat : admin.scheme

Puis dans config.scm :

(use-modules ... (gnu packages admin) ...)
(packages (append (list ... btop ...) %base-packages))

Services système : Xorg, display manager et réseau

Les services sont ajoutés de manière similaire aux paquets. L’intervenant configure un environnement léger avec :

(services (append (list (service xorg-server-service-type)
                        (service slim-service-type)
                        (service dhcp-client-service-type))
                  %base-services))

Il supprime le service DNS par défaut et ferme le bloc operating-system.

Installation du système avec guix system init

La commande finale est :

guix system init /mnt/etc/config.scm /mnt

L’intervenant laisse volontairement une erreur (module manquant pour rofi) pour montrer la qualité des messages d’erreur de Guix : « It tells me explicitly when to add the X disorg packages module. » Il compare cela favorablement à NixOS.

Post-installation : mot de passe et premier démarrage

Après redémarrage, les mots de passe root et utilisateur sont définis :

passwd
passwd tony

L’intervenant utilise slim comme display manager et qtile comme window manager, avec une configuration initiale très minimaliste.

Gestion des paquets après installation

Pour ajouter un paquet sur un système déjà installé :

  1. Modifier config.scm
  2. Lancer guix pull pour synchroniser les dépôts
  3. Exécuter guix system reconfigure /etc/config.scm Cette commande est l’équivalent de nixos-rebuild switch sur NixOS.

Personnalisation de l’environnement utilisateur

L’intervenant crée un fichier ~/.xsession pour lancer des commandes au démarrage de X :

#!/bin/sh
xset r rate 235
xrandr -s 1920x1080
xwallpaper --zoom ~/walls/castle.jpeg
picom &
exec qtile start

Il précise que ce n’est pas la méthode la plus « guix idiomatique » et qu’il abordera guix home dans une vidéo ultérieure.

Versionnement des fichiers de configuration

L’intervenant crée un dépôt Git pour ses fichiers de configuration :

mkdir ~/guix.files
cp -r ~/.config/qtile ~/guix.files/
cp -r ~/.config/alacritty ~/guix.files/
cp /etc/config.scm ~/guix.files/
cp ~/.xsession ~/guix.files/
git init && git add . && git commit -m "initial commit"

Il crée des alias dans ~/.bashrc :

alias gsr='sudo guix system reconfigure ~/guix.files/config.scm'
alias gvis='vis ~/guix.files/config.scm'

CONCEPTS CLÉS

  • GNU Guix System : Distribution Linux basée sur le gestionnaire de paquets Guix, offrant des installations reproductibles et un système déclaratif complet.
  • guix system init : Commande d’installation initiale qui crée le système à partir d’un fichier de configuration.
  • guix system reconfigure : Commande pour mettre à jour le système après modification du fichier de configuration (équivalent de nixos-rebuild switch).
  • Cow store : Mécanisme de copie sur écriture qui permet d’utiliser le store GNU pendant l’installation sans écraser le système hôte.
  • guix show : Commande pour obtenir des informations détaillées sur un paquet, notamment son module d’import.

CONCLUSION

L’installation de Guix System est étonnamment simple (quelques commandes de partitionnement, un fichier de configuration déclaratif, et une commande d’initialisation). Sa force réside dans la clarté des messages d’erreur et la reproductibilité des configurations. Comme le dit l’intervenant, « this is definitely a cursory overview of the Guix system and how to get started on it », mais cela suffit pour comprendre pourquoi Guix System est considéré comme une distribution de « fin de jeu » pour les administrateurs Linux exigeants.

Du même canal

Tout voir