Téléverser les fichiers vers "modules"
This commit is contained in:
+5
-9
@@ -4,8 +4,8 @@ let
|
|||||||
cfg = config.nixosWorkstations.homedUser;
|
cfg = config.nixosWorkstations.homedUser;
|
||||||
|
|
||||||
# LAB : le mot de passe initial est volontairement un mot de passe par défaut
|
# LAB : le mot de passe initial est volontairement un mot de passe par défaut
|
||||||
# connu. Il ne constitue pas un secret durable : Alice doit le remplacer lors
|
# connu. Il ne constitue pas un secret durable : l’utilisateur doit le remplacer
|
||||||
# de sa première session. Pour une future version production, ce credential
|
# lors de sa première session. Pour une future version production, ce credential
|
||||||
# devra venir d'une source chiffrée/externe et non du Nix store.
|
# devra venir d'une source chiffrée/externe et non du Nix store.
|
||||||
initialPasswordCredential = pkgs.writeText
|
initialPasswordCredential = pkgs.writeText
|
||||||
"nixos-workstations-${cfg.user}-initial-password"
|
"nixos-workstations-${cfg.user}-initial-password"
|
||||||
@@ -19,26 +19,22 @@ in
|
|||||||
|
|
||||||
user = lib.mkOption {
|
user = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
default = "alice";
|
|
||||||
description = "Compte systemd-homed à préparer automatiquement.";
|
description = "Compte systemd-homed à préparer automatiquement.";
|
||||||
};
|
};
|
||||||
|
|
||||||
realName = lib.mkOption {
|
realName = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
default = "Alice";
|
|
||||||
description = "Nom complet de l'utilisateur systemd-homed.";
|
description = "Nom complet de l'utilisateur systemd-homed.";
|
||||||
};
|
};
|
||||||
|
|
||||||
initialPassword = lib.mkOption {
|
initialPassword = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
default = "LaboTest@1980";
|
|
||||||
description = "Mot de passe temporaire utilisé uniquement pour le premier accès LAB.";
|
description = "Mot de passe temporaire utilisé uniquement pour le premier accès LAB.";
|
||||||
};
|
};
|
||||||
|
|
||||||
diskSize = lib.mkOption {
|
diskSize = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
default = "10G";
|
description = "Taille initiale du conteneur LUKS2 de l’espace personnel.";
|
||||||
description = "Taille initiale du conteneur LUKS2 du home.";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -52,7 +48,7 @@ in
|
|||||||
|
|
||||||
# SDDM doit accepter la plage d'UID systemd-homed et son greeter doit
|
# SDDM doit accepter la plage d'UID systemd-homed et son greeter doit
|
||||||
# charger libnss_systemd directement. Cette configuration a été validée en
|
# charger libnss_systemd directement. Cette configuration a été validée en
|
||||||
# LAB : sans ce LD_LIBRARY_PATH, getpwent() n'énumère pas Alice sous NixOS.
|
# LAB : sans ce LD_LIBRARY_PATH, getpwent() n’énumère pas les comptes homed sous NixOS.
|
||||||
services.displayManager.sddm.settings = {
|
services.displayManager.sddm.settings = {
|
||||||
Users = {
|
Users = {
|
||||||
MinimumUid = 1000;
|
MinimumUid = 1000;
|
||||||
@@ -65,7 +61,7 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Précréation automatique d'Alice. localadm ne lance qu'un
|
# Précréation automatique de l’utilisateur prévu pour le poste. localadm ne lance qu’un
|
||||||
# nixos-rebuild switch : ce service est démarré automatiquement et ne fait
|
# nixos-rebuild switch : ce service est démarré automatiquement et ne fait
|
||||||
# rien si le compte homed existe déjà.
|
# rien si le compte homed existe déjà.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.nixosWorkstations.provisioning;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nixosWorkstations.provisioning = {
|
||||||
|
enable = lib.mkEnableOption "provisionnement modulaire de l'utilisateur principal du poste";
|
||||||
|
|
||||||
|
user = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Identifiant du compte utilisateur à préparer sur ce poste.";
|
||||||
|
};
|
||||||
|
|
||||||
|
realName = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Nom affiché de l'utilisateur à préparer sur ce poste.";
|
||||||
|
};
|
||||||
|
|
||||||
|
initialPassword = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "LaboTest@1980";
|
||||||
|
description = "Mot de passe temporaire de première connexion utilisé en LAB.";
|
||||||
|
};
|
||||||
|
|
||||||
|
diskSize = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "10G";
|
||||||
|
description = "Taille initiale de l'espace personnel chiffré.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = builtins.match "^[a-z_][a-z0-9_-]*$" cfg.user != null;
|
||||||
|
message = "nixosWorkstations.provisioning.user doit être un identifiant UNIX simple en minuscules.";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
assertion = cfg.realName != "";
|
||||||
|
message = "nixosWorkstations.provisioning.realName ne peut pas être vide.";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Une seule source de vérité : la fiche utilisateur alimente à la fois
|
||||||
|
# la création du compte chiffré et l'assistant de première connexion.
|
||||||
|
nixosWorkstations.homedUser = {
|
||||||
|
enable = true;
|
||||||
|
user = cfg.user;
|
||||||
|
realName = cfg.realName;
|
||||||
|
initialPassword = cfg.initialPassword;
|
||||||
|
diskSize = cfg.diskSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixosWorkstations.workstationSetup = {
|
||||||
|
enable = true;
|
||||||
|
user = cfg.user;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user