Files
Nixos_Fleet/README.md
T
2026-09-09 09:14:46 +02:00

8.8 KiB

Nixos_Fleet

Déploiement en masse (PXE ou USB) du profil générique usagers.

Repo public. git pull sans mot de passe.

Ne contient aucune donnée des utilisateurs nommés. Ça, c'est dans Nixos_Users, repo privé séparé.


Installer un PC

Une étape à la fois. Ne saute pas d'étape.

Étape 1 — Brancher

Branche le câble réseau.

Branche le PC au secteur.

Allume le PC.

Étape 2 — Menu de démarrage

Appuie plusieurs fois sur une touche dès l'allumage.

Dell → F12

HP → F9

Lenovo → F12

Choisis : Network Boot.

Étape 3 — Attendre

Un écran noir avec du texte apparaît seul.

Attends.

Étape 4 — Choisir un cas

Il y a deux cas. Choisis-en un seul.

PC normal → va à l'étape 4A.

PC pour thomas, clara, jade ou oreo → va à l'étape 4B.

Étape 4A — PC normal

Tape : 1

Appuie sur Entrée.

N'appuie plus sur rien.

Attends la fin (plusieurs minutes).

Va à l'étape 5.

Étape 4B — PC pour une personne

Tape : 2

Appuie sur Entrée.

Tape le prénom (thomas, clara, jade ou oreo).

Appuie sur Entrée.

Une question sur le chiffrement apparaît.

Pas sûr → appuie juste sur Entrée.

Tape le token (donné à part, pas dans ce guide).

Appuie sur Entrée.

Si une passphrase est demandée :

Tape-la.

Note-la sur papier tout de suite.

Attends la fin (plusieurs minutes).

Va à l'étape 5.

Étape 5 — Redémarrage

Le PC redémarre seul.

N'y touche pas.

Étape 6 — Connexion

PC normal :

Utilisateur : usagers

Mot de passe : nixos

PC pour une personne :

Utilisateur : le prénom tapé à l'étape 4B

Mot de passe : nixos

Un nouveau mot de passe est demandé tout de suite. Le choisir maintenant.

Étape 7 — Vérifier

Le bureau s'affiche.

Firefox s'ouvre.

Le son fonctionne.

Tout est bon → le PC est prêt.

Si ça bloque

N'insiste pas seul.

Préviens le référent technique.


Installer le serveur PXE

Une étape à la fois.

Étape 1 — Installer NixOS

ISO : https://nixos.org/download

Partitionnement normal.

Définir un mot de passe root.

Étape 2 — Cloner le repo

nix-shell -p git
git clone https://gitea.miniclic.net/Damien/Nixos_Fleet.git /etc/nixos-fleet
cd /etc/nixos-fleet

Étape 3 — Générer le fichier matériel

sudo nixos-generate-config

Écrit /etc/nixos/hardware-configuration.nix — en dehors du repo, rien à ajouter/committer.

Étape 4 — Éditer 3 valeurs

Fichier : pxe-server/configuration.nix

interface → sortie de ip a

serverIp → IP fixe du serveur

standaloneDhcp → laisser false si le réseau a déjà un DHCP

$EDITOR pxe-server/configuration.nix

Étape 5 — Construire

sudo nixos-rebuild switch --flake .#pxe-server --impure

--impure : nécessaire pour lire /etc/nixos/hardware-configuration.nix, hors du repo.

Étape 6 — Publier l'image

sudo systemctl start pxe-publish
sudo systemctl status pxe-publish

Doit finir en "success". Première fois : plusieurs minutes.

Étape 7 — Vérifier

sudo systemctl status dnsmasq caddy
ls /var/lib/tftpboot
ls /var/www/pxe
curl -I http://<serverIp>/netboot.ipxe

Tout doit répondre sans erreur.

Étape 8 — Tester sur 1 PC

Démarrer un seul PC en PXE.

Vérifier qu'il arrive sur l'écran de choix.

Si le parc a du BIOS et de l'UEFI, tester les deux.

Ne pas lancer 20 PC avant que cette étape fonctionne.

Après l'installation

Noter l'IP du serveur quelque part accessible à l'équipe.

Vérifier que pxe-publish.timer est actif :

systemctl is-enabled pxe-publish.timer

Ce serveur n'a rien à sauvegarder à part le repo git.

Entretien

Republier l'image après une modif de installer/ :

sudo systemctl start pxe-publish

Appliquer une modif de pxe-server/configuration.nix :

sudo nixos-rebuild switch --flake .#pxe-server --impure

Voir les logs DHCP/TFTP :

journalctl -u dnsmasq -f

Voir les logs HTTP :

journalctl -u caddy -f

Si ça bloque

Écran PXE ne trouve rien → revérifier serverIp et interface.

Boucle infinie au démarrage → regarder journalctl -u dnsmasq pendant un boot.

UEFI ou BIOS ne boote pas → vérifier les deux fichiers dans /var/lib/tftpboot.

IP qui changent tout le temps → un autre DHCP tourne déjà, repasser standaloneDhcp à false.


Référence

Contenu du repo

hosts/usagers/ → le seul profil du repo. Jamais chiffré.

diskos/plain.nix → layout disko (disque main, GPT+ESP+btrfs).

installer/ → l'image d'installation, PXE et USB. Même image pour tous les cas.

pxe-server/ → le serveur PXE (dnsmasq + Caddy).

Pourquoi deux repos

Une machine de la flotte pull uniquement ce repo.

Les comptes thomas/clara/jade/oreo vivent dans un autre repo, privé.

La flotte ne voit jamais ce second repo.

Graver la clé USB

Marche sans le serveur PXE. Utile pour tester avant de monter le PXE, ou en secours.

NixOS permet nativement de fabriquer une image d'installation sur mesure : un ISO avec nos propres paquets et notre propre script (install.sh) qui se lance seul au démarrage. C'est une fonctionnalité standard de NixOS, pas un bricolage — installer/iso.nix dans ce repo est la définition de cette image.

C'est le même ISO pour la flotte et les postes nommés — pas deux images différentes. Le choix se fait à l'écran au démarrage (1) flotte / 2) poste nommé), pas au moment de la gravure.

Le fichier .iso n'existe pas tant qu'on ne l'a pas construit :

nix build .#nixosConfigurations.installer-iso.config.system.build.isoImage

Repérer la clé USB avant de graver — bien vérifier le chemin, pas ton disque système :

lsblk
sudo dd if=result/iso/*.iso of=/dev/sdX bs=4M status=progress conv=fsync

Vérifier /dev/sdX avant de lancer dd.

Mises à jour de la flotte

Chaque PC tire ses mises à jour directement depuis ce repo, tous les jours.

Pas de git pull manuel sur les PC. Juste git push ici.

Avant la première vague de 100 PC

Rien de ce repo n'a été testé sur du vrai matériel.

À vérifier avant de lancer 100 PC :

Détection du disque, sur une machine à 2 disques internes.

Comportement du proxyDHCP, face au routeur réel.

Boot BIOS et boot UEFI, sur le parc réel.

Test sur 1-2 PC réels d'abord.

nix flake check
nix build .#nixosConfigurations.usagers.config.system.build.toplevel
nix build .#nixosConfigurations.installer-iso

Connexion Wi-Fi

Pour un PC sans câble réseau (après l'installation, ou en dépannage).

Option 1 — NetworkManager

Déjà actif par défaut dans ce repo (hosts/common/base.nix). Rien à ajouter dans configuration.nix.

networking.networkmanager.enable = true;

Commandes :

nmcli device wifi list
nmcli device wifi connect "SSID" password "MOTDEPASSE"
nmcli connection show
nmcli radio wifi on

Option 2 — iwd

Alternative non nécessaire. Plus léger que NetworkManager, mais NetworkManager est déjà en place et suffit — à utiliser seulement si une raison précise l'impose.

configuration.nix :

networking.wireless.iwd.enable = true;

Commandes :

iwctl station wlan0 scan
iwctl station wlan0 get-networks
iwctl station wlan0 connect "SSID"
iwctl station wlan0 show

Aucun paquet à installer manuellement : enable = true suffit dans les deux cas.

Après édition :

sudo nixos-rebuild switch --flake .#usagers

Travailler avec Git

Cloner (première fois)

git clone https://gitea.miniclic.net/Damien/Nixos_Fleet.git
cd Nixos_Fleet

Avant de modifier

git pull

Toujours, avant de commencer à éditer.

Modifier et envoyer

git add -A
git commit -m "description courte"
git push

Si le push est refusé

Quelqu'un a poussé avant toi.

git pull

Résoudre les conflits s'il y en a (voir plus bas).

Puis repousser :

git push

Travailler à plusieurs

Un repo, plusieurs personnes : risque d'écraser le travail des autres.

Règle : une branche par changement.

git checkout -b mon-changement

Modifier. Commit. Push la branche :

git push -u origin mon-changement

Ouvrir une Pull Request sur Gitea.

Quelqu'un relit, merge depuis l'interface Gitea.

Jamais de push direct sur main à plusieurs.

Si un conflit apparaît

Git l'annonce avec CONFLICT dans le message.

Ouvrir le(s) fichier(s) listé(s).

Chercher les marqueurs <<<<<<<, =======, >>>>>>>.

Choisir quelle version garder.

Supprimer les marqueurs.

git add <fichier>
git commit
git push

Ce workflow git ne concerne que les développeurs

Les PC de la flotte ne font jamais git pull.

Ils tirent les mises à jour directement depuis l'URL git (voir plus haut).