Réinstallation — exampleHost
Matériel de Référence
Section intitulée « Matériel de Référence »| Composant | Détail |
|---|---|
| Disques système | 2× Samsung SSD 980 PRO 1 To NVMe (miroir ZFS) |
| ID disque 0 | nvme-Samsung_SSD_980_PRO_1TB_S5GXNL0W810368E |
| ID disque 1 | nvme-Samsung_SSD_980_PRO_1TB_S5GXNL0W810454N |
| Disque données | /dev/disk/by-id/wwn-0x5000c500c78528e7-part1 → /data2 (ext4, nofail) |
| GPU | AMD (pilote amdgpu) |
| hostId ZFS | 21ed29b1 |
Pré-Requis
Section intitulée « Pré-Requis »Avant de lancer quoi que ce soit, vérifier :
- La clé age de exampleHost est disponible (sauvegarde Bitwarden, USB chiffrée, papier…) Voir Sauvegarde & Restauration des Secrets
- L’ISO NixOS est téléchargée et gravée/flashée Utiliser une version récente : https://nixos.org/download/
- Le dépôt git
nixosest accessible (GitHub ou copie locale sur USB) - Une connexion réseau est disponible (filaire recommandé pour l’install)
- Si
/data2contient des données importantes : en faire une sauvegarde avant
Résumé du Partitionnement
Section intitulée « Résumé du Partitionnement »disko crée sur chaque NVMe :
| Partition | Taille | Rôle |
|---|---|---|
| part1 | 1 Go | ESP (vfat) |
| part2 | 4 Go | bpool (ZFS, mode grub2) |
| part3 | 920 Go | rpool (ZFS) |
| part4 | 4 Go | swap (chiffrement aléatoire) |
| part5 | 1 Mo | GRUB BIOS boot |
Datasets ZFS :
| Dataset | Point de Montage |
|---|---|
bpool/nixos/root | /boot |
rpool/nixos/root | / |
rpool/nixos/home | /home |
rpool/nixos/var/lib | /var/lib |
rpool/nixos/var/log | /var/log |
Étape 1 — Démarrer sur l’ISO NixOS
Section intitulée « Étape 1 — Démarrer sur l’ISO NixOS »Flasher l’ISO sur une clé USB :
# Depuis un autre Linux (remplacer /dev/sdX par le bon périphérique)sudo dd if=nixos-minimal-*.iso of=/dev/sdX bs=4M conv=fsync status=progressBooter sur la clé USB. Sélectionner l’entrée NixOS dans le menu UEFI.
Étape 2 — Connexion Réseau
Section intitulée « Étape 2 — Connexion Réseau »Si connexion filaire : elle est souvent automatique (DHCP).
Si Wi-Fi nécessaire :
sudo systemctl start wpa_supplicantwpa_cli> add_network 0> set_network 0 ssid "MonSSID"> set_network 0 psk "MonMotDePasse"> enable_network 0> quitVérifier la connexion :
ping -c3 github.comÉtape 3 — Récupérer le Dépôt Flake
Section intitulée « Étape 3 — Récupérer le Dépôt Flake »# Cloner le dépôt dans /tmpgit clone https://github.com/gfriloux/nixos /tmp/nixoscd /tmp/nixosÉtape 4 — Partitionnement et Formatage avec disko
Section intitulée « Étape 4 — Partitionnement et Formatage avec disko »sudo nix run github:nix-community/disko/latest -- \ --mode destroy,format,mount \ --flake /tmp/nixos#exampleHostdisko va :
- Effacer et repartitionner les deux Samsung NVMe
- Créer les pools ZFS
bpooletrpoolen miroir - Créer les datasets ZFS
- Formater les partitions ESP (vfat) et swap
- Monter tout sous
/mnt
Vérifier que /mnt est correctement monté :
mount | grep /mnt# Doit afficher rpool/nixos/root, bpool/nixos/root, rpool/nixos/home, etc.
df -h /mnt /mnt/boot /mnt/home /mnt/var/lib /mnt/var/logÉtape 5 — Placer la Clé Age
Section intitulée « Étape 5 — Placer la Clé Age »La clé age doit être présente avant l’activation NixOS pour que sops-nix
puisse déchiffrer le mot de passe de l’utilisateur (neededForUsers = true).
sudo mkdir -p /mnt/etc/sops/ageColler le contenu de la clé privée sauvegardée :
sudo nano /mnt/etc/sops/age/keys.txtFormat attendu :
# created: 2024-01-01T00:00:00+01:00# public key: age1xr32hdvanup0zk63v8hrcv2u2c09wplz6fd42w47mkjrd49j39xqaqqckqAGE-SECRET-KEY-1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCorriger les permissions :
sudo chmod 640 /mnt/etc/sops/age/keys.txtsudo chown root:root /mnt/etc/sops/age/keys.txt# (les permissions du groupe seront corrigées par tmpfiles au premier démarrage)Vérifier que la clé publique correspond :
nix run nixpkgs#age -- -y /mnt/etc/sops/age/keys.txt# Doit afficher : age1xr32hdvanup0zk63v8hrcv2u2c09wplz6fd42w47mkjrd49j39xqaqqckqSi la clé publique ne correspond pas, arrêter et vérifier la sauvegarde avant de continuer.
Étape 6 — Installation NixOS
Section intitulée « Étape 6 — Installation NixOS »sudo nixos-install --flake /tmp/nixos#exampleHost --no-root-passwdL’option --no-root-passwd évite de définir un mot de passe root interactif
(le mot de passe de kuri est géré par sops).
L’installation prend plusieurs minutes (téléchargement des paquets). Si une erreur sops apparaît, c’est probablement la clé age — revenir à l’étape 5.
En cas d’erreur réseau en cours de téléchargement, relancer la même commande : nixos-install reprend là où il s’est arrêté.
Étape 7 — Premier Démarrage
Section intitulée « Étape 7 — Premier Démarrage »sudo rebootRetirer la clé USB au redémarrage. Le système doit booter sur GRUB → NixOS.
Si GRUB n’apparaît pas : vérifier l’ordre de boot dans le BIOS/UEFI. Chercher une entrée “UEFI OS” ou le nom des Samsung NVMe.
Au premier démarrage, les éléments suivants se lancent automatiquement :
- sddm (écran de connexion Plasma 6)
- Tailscale (démon, pas encore connecté)
- pipewire, NetworkManager, Docker
Se connecter avec l’utilisateur kuri et le mot de passe issu de sops.
Étape 8 — Ré-enrôlement Tailscale
Section intitulée « Étape 8 — Ré-enrôlement Tailscale »Tailscale tourne mais n’est pas encore authentifié.
sudo tailscale upUn lien d’authentification s’affiche. L’ouvrir dans un navigateur, se connecter au compte Tailscale, approuver la machine.
Vérifier la connectivité :
tailscale status# exampleHost doit apparaître avec une adresse 100.x.x.x
# Tester l'accès à clochettetailscale ping clochetteÉtape 9 — Premier Déploiement depuis le Dépôt
Section intitulée « Étape 9 — Premier Déploiement depuis le Dépôt »Une fois Tailscale actif et le dépôt cloné sur la machine :
cd ~/Apps/github/gfriloux/nixos # ou l'emplacement habituel du dépôtjust installCette commande (nh os switch .) applique la configuration complète et active
Home Manager. Elle est à relancer chaque fois que la config change.
Étape 10 — Vérification Finale
Section intitulée « Étape 10 — Vérification Finale »# ZFS pools en bonne santézpool status# Doit afficher ONLINE pour bpool et rpool, aucun error/degraded
# Secrets déchiffrés correctementls /run/secrets/# Doit lister les secrets système (ex: users/kuri/hashed-password)
ls /run/user/1000/secrets/# Doit lister les secrets Home Manager (rbw_server, workspace...)
# Docker opérationneldocker info | grep "Storage Driver"# Doit afficher : Storage Driver: zfs
# Tailscaletailscale status
# GPU AMDglxinfo | grep "OpenGL renderer"# Doit afficher un renderer AMD (ex: AMD Radeon RX...)Cas Particulier — Remplacement de Disques
Section intitulée « Cas Particulier — Remplacement de Disques »Si l’un ou les deux Samsung NVMe sont remplacés par de nouveaux modèles,
les IDs dans systems/x86_64-linux/exampleHost/disko.nix et boot.nix
ne correspondront plus.
Avant de réinstaller, mettre à jour les IDs :
# Depuis l'ISO, identifier les nouveaux disquesls -la /dev/disk/by-id/ | grep nvmeModifier disko.nix et boot.nix avec les nouveaux IDs, committer, puis
reprendre à l’étape 4.