141 lines
3.2 KiB
Markdown
141 lines
3.2 KiB
Markdown
# NixOS Workstations — v1.9.0 modulaire
|
|
|
|
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.
|
|
|
|
## Principe
|
|
|
|
Le dépôt sépare désormais trois responsabilités :
|
|
|
|
```text
|
|
configuration commune
|
|
↓
|
|
fiche du poste
|
|
↓
|
|
fiche utilisateur
|
|
↓
|
|
moteur de provisionnement commun
|
|
```
|
|
|
|
Exemples fournis :
|
|
|
|
```text
|
|
bureautix-01 -> Alice
|
|
bureautix-02 -> Bob
|
|
bureautix-03 -> Mike
|
|
```
|
|
|
|
Le moteur de provisionnement dans `modules/` et `workstation-setup/` ne contient plus de dépendance à Alice, Bob ou Mike.
|
|
|
|
## Arborescence utile
|
|
|
|
```text
|
|
flake.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
|
|
```
|
|
|
|
## Association poste / utilisateur
|
|
|
|
La fiche du poste est la source de vérité.
|
|
|
|
`hosts/bureautix-02.nix` importe par exemple :
|
|
|
|
```text
|
|
configuration.nix
|
|
users/bob.nix
|
|
```
|
|
|
|
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.
|
|
|
|
## Configuration matérielle
|
|
|
|
`/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.
|