diff --git a/modules/homed.nix b/modules/homed.nix index 1dd6c18..3475834 100644 --- a/modules/homed.nix +++ b/modules/homed.nix @@ -1,37 +1,36 @@ -{ ... }: +{ config, ... }: { - # Active systemd-homed. - # - # Les utilisateurs homed ne sont pas créés déclarativement dans Nix. - # Ils seront créés avec homectl afin de ne stocker aucun mot de passe, - # recovery key ou secret utilisateur dans Git / Nix store. + # Active systemd-homed pour les comptes utilisateurs dont le home + # est géré et chiffré individuellement. services.homed.enable = true; # NixOS utilise des comptes nixbld avec des UID > 1000. - # - # systemd-userdb les considère donc comme faisant partie de la plage - # des utilisateurs réguliers et NixOS émet un avertissement. - # - # Dans notre architecture ce n'est pas problématique : - # nous n'utilisons pas la création automatique du premier utilisateur - # systemd-homed, puisque Alice est créée explicitement avec homectl. + # Dans notre architecture ce n'est pas un problème car nous créons + # explicitement les utilisateurs homed avec homectl. services.userdbd.silenceHighSystemUsers = true; - # Les utilisateurs systemd-homed utilisent normalement des UID élevés, - # dans la plage 60001-60513. - # - # La limite SDDM doit donc être augmentée pour qu'Alice apparaisse - # dans la liste des utilisateurs. - # - # En contrepartie, les comptes nixbld (UID 30001-30032) entrent eux - # aussi dans cette plage. On les masque via leur shell nologin. + # systemd-homed utilise des UID dans une plage élevée. + # Il faut donc permettre à SDDM d'afficher ces utilisateurs. services.displayManager.sddm.settings = { Users = { MinimumUid = 1000; MaximumUid = 60513; - - HideShells = "/run/current-system/sw/bin/nologin"; }; }; + + # IMPORTANT : + # + # Sur NixOS, les modules NSS externes (notamment libnss_systemd.so) + # ne sont pas disponibles par défaut dans le chemin de chargement + # du processus SDDM. + # + # NixOS fournit déjà ce chemin à nscd/nsncd via + # config.system.nssModules.path. + # + # On fournit le même chemin uniquement au display-manager afin que + # SDDM puisse énumérer les comptes systemd-homed avec getpwent(). + systemd.services.display-manager.environment = { + LD_LIBRARY_PATH = config.system.nssModules.path; + }; } \ No newline at end of file