Téléverser les fichiers vers "/"

This commit is contained in:
2026-08-20 08:52:15 +02:00
parent 162e839724
commit 08ba1cf6b0
4 changed files with 150 additions and 35 deletions
+36
View File
@@ -0,0 +1,36 @@
# v1.9.0 - Provisionnement modulaire
Cette version transforme la v1.8.7 validée en configuration multi-postes / multi-utilisateurs.
## Principes
- Le moteur de provisionnement reste commun à tous les postes.
- Une fiche dans `users/` décrit l'identité de l'utilisateur à préparer.
- Une fiche dans `hosts/` associe un poste à une fiche utilisateur.
- `configuration.nix` contient uniquement la configuration commune.
- `flake.nix` expose une configuration NixOS par poste.
- La configuration matérielle reste locale dans `/etc/nixos/hardware-configuration.nix` et n'est pas placée dans le dépôt.
## Exemples fournis
- `bureautix-01` -> `alice`
- `bureautix-02` -> `bob`
- `bureautix-03` -> `mike`
## Non-régression
La logique validée en v1.8.7 n'est pas modifiée :
- création systemd-homed ;
- espace personnel LUKS2 ;
- changement du mot de passe ;
- création du PIN YubiKey ;
- association FIDO2 ;
- affichage SDDM ;
- assistant de première connexion.
## Flakes
Le dépôt utilise `nixpkgs` sur la branche `nixos-26.05`. Le fichier `flake.lock` doit être généré une première fois sur une machine disposant de Nix puis ajouté au dépôt afin de figer précisément la révision utilisée.
Comme `hardware-configuration.nix` reste volontairement hors du dépôt, les commandes Flake doivent actuellement être lancées avec `--impure`.
+76 -21
View File
@@ -1,32 +1,87 @@
# Déploiement v1.8 LAB # Déploiement v1.9.0
La procédure de référence est décrite dans `PROVISIONING-v1.8-LAB.md`. ## Choisir le poste, pas l'utilisateur
## Commande de déploiement Le déploiement sélectionne uniquement une fiche de poste. Cette fiche détermine elle-même l'utilisateur à préparer.
Depuis `localadm` : ```text
bureautix-01 -> alice
```bash bureautix-02 -> bob
cd ~/nixos-workstations bureautix-03 -> mike
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
``` ```
Cette activation : Il ne faut donc jamais fournir séparément un nom de poste et un nom d'utilisateur à la commande de build.
1. installe/configure le poste ; ## Premier test de non-régression
2. active `systemd-homed` ;
3. précrée `alice` si elle n'existe pas ;
4. crée `/home/alice.home` en LUKS2 avec le mot de passe temporaire LAB ;
5. lance SDDM avec le support d'énumération des comptes homed.
Aucune action `homectl` manuelle n'est demandée à `localadm`. Sur le poste de LAB déjà validé pour Alice :
## Première session ```bash
sudo nixos-rebuild build \
-I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix
```
Alice se connecte avec le mot de passe temporaire et l'assistant finalise automatiquement : Puis :
- mot de passe personnel ; ```bash
- PIN d'une YubiKey vierge ; sudo nixos-rebuild switch \
- enrôlement FIDO2 dans `systemd-homed`. -I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix
```
Aucune recovery key n'est créée à ce stade. Le compte existant doit être détecté et laissé intact par le service de pré-provisionnement.
## Passage aux flakes
Après cette première activation :
```bash
cd /home/localadm/nixos-workstations
nix flake lock
```
Puis tester :
```bash
sudo nixos-rebuild build --impure --flake .#bureautix-01
```
Si ce build est correct :
```bash
sudo nixos-rebuild switch --impure --flake .#bureautix-01
```
`--impure` est requis parce que la configuration matérielle reste dans `/etc/nixos/hardware-configuration.nix` et n'est pas intégrée au dépôt.
## Nouveau poste pour Bob
Sur un poste neuf destiné à Bob :
```bash
sudo nixos-rebuild build --impure --flake .#bureautix-02
```
Puis :
```bash
sudo nixos-rebuild switch --impure --flake .#bureautix-02
```
La fiche `hosts/bureautix-02.nix` sélectionne automatiquement `users/bob.nix`.
## Nouveau poste pour Mike
Même principe :
```bash
sudo nixos-rebuild switch --impure --flake .#bureautix-03
```
## Nouveau couple poste / utilisateur
Pour une nouvelle personne :
1. créer sa fiche dans `users/` ;
2. créer la fiche du nouveau poste dans `hosts/` ;
3. ajouter le poste dans `flake.nix` ;
4. lancer le build en sélectionnant uniquement le poste.
+14 -14
View File
@@ -2,34 +2,34 @@
{ {
imports = [ imports = [
# Le matériel reste propre à la machine et n'est pas stocké dans le dépôt.
# Avec un build Flake, utiliser --impure afin d'autoriser cet import local.
/etc/nixos/hardware-configuration.nix /etc/nixos/hardware-configuration.nix
./modules/software.nix ./modules/software.nix
./modules/users.nix ./modules/users.nix
./modules/homed.nix ./modules/homed.nix
./modules/security.nix ./modules/security.nix
./modules/workstation-setup.nix ./modules/workstation-setup.nix
./modules/provisioning.nix
]; ];
# Pré-provisionnement automatique : le rebuild crée Alice avec systemd-homed # Les flakes utilisent encore les fonctionnalités expérimentales du client Nix.
# et un home LUKS2. L'assistant se lance ensuite à sa première session. nix.settings.experimental-features = [ "nix-command" "flakes" ];
nixosWorkstations.homedUser = {
enable = true;
user = "alice";
realName = "Alice";
initialPassword = "LaboTest@1980";
diskSize = "10G";
};
nixosWorkstations.workstationSetup = { # Cette configuration est volontairement commune. Elle doit toujours être
enable = true; # appelée par une fiche de poste qui choisit explicitement un utilisateur.
user = "alice"; assertions = [
}; {
assertion = config.nixosWorkstations.provisioning.enable;
message = "Sélectionnez une fiche dans hosts/ au lieu de construire configuration.nix directement.";
}
];
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "bureautix-01";
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
time.timeZone = "Europe/Paris"; time.timeZone = "Europe/Paris";
+24
View File
@@ -0,0 +1,24 @@
{
description = "NixOS Workstations - provisionnement modulaire";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
};
outputs = { nixpkgs, ... }:
let
system = "x86_64-linux";
mkWorkstation = hostModule:
nixpkgs.lib.nixosSystem {
inherit system;
modules = [ hostModule ];
};
in
{
nixosConfigurations = {
bureautix-01 = mkWorkstation ./hosts/bureautix-01.nix;
bureautix-02 = mkWorkstation ./hosts/bureautix-02.nix;
bureautix-03 = mkWorkstation ./hosts/bureautix-03.nix;
};
};
}