Téléverser les fichiers vers "/"

This commit is contained in:
2026-08-20 08:52:43 +02:00
parent 68ed09b0e1
commit 2f2aad80db
+117 -105
View File
@@ -1,128 +1,140 @@
# NixOS Workstations — v1.8 LAB # NixOS Workstations — v1.9.0 modulaire
Cette branche valide un poste NixOS/KDE dont le compte utilisateur est gé par `systemd-homed` et dont le home est chiffré en LUKS2. Cette version généralise le provisionnement validé en v1.8.7 afin que le même moteur puisse préparer plusieurs postes pour des utilisateurs différents.
## Parcours cible ## Principe
Le dépôt sépare désormais trois responsabilités :
```text ```text
localadm configuration commune
└── nixos-rebuild switch fiche du poste
├── logiciels fiche utilisateur
├── systemd-homed
├── création automatique d'Alice moteur de provisionnement commun
│ └── /home/alice.home → LUKS2
└── SDDM
Alice se connecte avec
le mot de passe temporaire
assistant première session
┌───────┼────────────┐
▼ ▼ ▼
nouveau PIN FIDO2 enrôlement
mot de vierge FIDO2 homed
passe
home déverrouillable par
mot de passe OU YubiKey+PIN
``` ```
## Principes Exemples fournis :
- `localadm` reste un compte NixOS classique d'administration locale.
- `alice` n'est jamais déclarée dans `users.users` : elle appartient exclusivement à `systemd-homed`.
- Le déploiement précrée Alice automatiquement avant SDDM.
- Le home d'Alice est `/home/alice.home`, conteneur LUKS2 monté sur `/home/alice` pendant la session.
- Aucun `pam_u2f`.
- Aucun `u2f-mappings`.
- La YubiKey démarre sans PIN ; Alice choisit son premier PIN.
- L'enrôlement FIDO2 est stocké dans le record `systemd-homed`.
- Le mot de passe reste un moyen de déverrouillage de secours.
## Déploiement LAB
Le mot de passe temporaire est :
```text ```text
LaboTest@1980 bureautix-01 -> Alice
bureautix-02 -> Bob
bureautix-03 -> Mike
``` ```
Il est volontairement connu pour le laboratoire et n'est pas un secret de production. Le moteur de provisionnement dans `modules/` et `workstation-setup/` ne contient plus de dépendance à Alice, Bob ou Mike.
Depuis `localadm` : ## Arborescence utile
```bash ```text
cd ~/nixos-workstations flake.nix
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix" configuration.nix
hosts/
bureautix-01.nix
bureautix-02.nix
bureautix-03.nix
users/
alice.nix
bob.nix
mike.nix
modules/
provisioning.nix
homed.nix
workstation-setup.nix
users.nix
software.nix
security.nix
``` ```
Un simple `nixos-rebuild build` construit la génération mais ne l'active pas ; il ne peut donc pas exécuter la précréation du compte sur le système courant. ## Association poste / utilisateur
## Première connexion La fiche du poste est la source de vérité.
Alice sélectionne son compte dans SDDM et utilise le mot de passe temporaire. L'assistant se lance automatiquement et impose trois opérations réussies : `hosts/bureautix-02.nix` importe par exemple :
1. remplacement du mot de passe temporaire ;
2. création du premier PIN sur une YubiKey FIDO2 vierge ;
3. enrôlement de cette YubiKey dans le home chiffré `systemd-homed`.
Les secrets sont transmis aux helpers par stdin puis à `homectl` par le mécanisme `CREDENTIALS_DIRECTORY`. Aucun mot de passe ni PIN n'est placé dans les arguments de processus.
## Recovery key
La v1.8 **ne crée volontairement aucune recovery key avant ou pendant la première session**. Cela évite le problème validé en LAB où `homectl update` demandait la recovery key existante lors de la synchronisation des clés de chiffrement.
L'ajout et l'escrow d'une recovery key d'administration feront l'objet d'une étape distincte.
## SDDM et comptes homed sous NixOS
Le greeter SDDM reçoit explicitement le chemin des modules NSS NixOS :
```nix
services.displayManager.sddm.settings = {
Users = {
MinimumUid = 1000;
MaximumUid = 60513;
};
General = {
GreeterEnvironment =
"QT_WAYLAND_SHELL_INTEGRATION=layer-shell,LD_LIBRARY_PATH=${config.system.nssModules.path}";
};
};
```
Ce réglage est nécessaire sur le LAB pour que le greeter puisse énumérer Alice, dont l'UID `systemd-homed` est dans la plage 6000160513.
## Arborescence importante
```text ```text
configuration.nix configuration.nix
modules/ users/bob.nix
├── homed.nix
├── users.nix
├── security.nix
├── software.nix
└── workstation-setup.nix
workstation-setup/
├── CMakeLists.txt
├── org.raspot.nixosworkstations.setup.desktop
└── src/
├── CMakeLists.txt
├── Config.h.in
├── Main.qml
├── ProvisioningBackend.cpp
├── ProvisioningBackend.h
└── main.cpp
``` ```
`/etc/nixos/hardware-configuration.nix` reste local au poste et n'est pas versionné dans le dépôt partagé. Le build de `bureautix-02` prépare donc automatiquement Bob. Le nom de l'utilisateur n'est pas passé dans la commande de déploiement.
## État LAB ## Configuration matérielle
Le workflow doit encore être validé de bout en bout sur le poste réel avec la v1.8. Ne pas considérer cette archive comme une version production. `/etc/nixos/hardware-configuration.nix` reste local à chaque PC et n'est pas stocké dans le dépôt.
Pour cette raison, les builds Flake sont actuellement lancés avec `--impure` afin d'autoriser cet unique import local.
## Migration sûre depuis v1.8.7
Pour le premier test, conserver le poste `bureautix-01` associé à Alice et utiliser d'abord le mode classique :
```bash
sudo nixos-rebuild build \
-I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix
```
Si le build est correct :
```bash
sudo nixos-rebuild switch \
-I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix
```
Cette activation active également `nix-command` et `flakes`.
## Utilisation avec Flake
Depuis la racine du dépôt, générer une première fois le verrou de dépendances :
```bash
nix flake lock
```
Puis l'ajouter au dépôt afin que tous les postes utilisent exactement la même révision de Nixpkgs.
Exemple pour Bob :
```bash
sudo nixos-rebuild build --impure --flake .#bureautix-02
```
Puis :
```bash
sudo nixos-rebuild switch --impure --flake .#bureautix-02
```
Pour Mike :
```bash
sudo nixos-rebuild switch --impure --flake .#bureautix-03
```
## Ajouter un nouvel utilisateur
Créer une fiche `users/<identifiant>.nix`. Elle ne contient que les données propres à l'utilisateur, par exemple son identifiant et son nom affiché.
Aucun changement dans le moteur C++/QML n'est nécessaire.
## Ajouter un nouveau poste
Créer `hosts/<nom-du-poste>.nix`, importer `configuration.nix` et la fiche utilisateur voulue, puis ajouter ce poste dans `nixosConfigurations` de `flake.nix`.
## Provisionnement utilisateur
Le parcours validé en v1.8.7 reste identique :
1. création automatique du compte `systemd-homed` ;
2. espace personnel LUKS2 ;
3. affichage du compte dans SDDM ;
4. changement du mot de passe à la première connexion ;
5. création du code PIN de la YubiKey ;
6. association de la YubiKey au chiffrement.
La logique de ces opérations n'a pas été modifiée dans v1.9.0.