61 lines
1.7 KiB
Nix
61 lines
1.7 KiB
Nix
{ 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;
|
|
};
|
|
};
|
|
}
|