chore(users): change merge strategy to lib.recursiveUpdate

This commit is contained in:
Sk7Str1p3 2026-05-24 16:47:58 +03:00
parent d3b48b8ef1
commit f57b5c4660
No known key found for this signature in database
GPG key ID: 4DD995933D06D43B

View file

@ -35,25 +35,26 @@
inputs, inputs,
... ...
}: }:
{ lib.foldl' (acc: obj: lib.recursiveUpdate acc obj) { } (
imports = [ lib.lists.flatten [
inputs.home-manager.nixosModules.default # Import required modules
]; {
imports = [
inputs.home-manager.nixosModules.default
];
}
# Configure users' passwords as sops secret. # Configure users' passwords as sops secret.
sops.secrets = lib.mkMerge ( (map (user: {
map (user: { sops.secrets."${user}/userPassword" = {
"${user}/userPassword" = {
sopsFile = ./${user}/password.yaml; sopsFile = ./${user}/password.yaml;
neededForUsers = true; neededForUsers = true;
}; };
}) cfg.usersList }) cfg.usersList)
);
# Configure users # Configure users
users.users = lib.mkMerge ( (map (user: {
map (user: { users.users.${user} =
${user} =
let let
cfg = builtins.fromJSON (builtins.readFile ./${user}/about.json); cfg = builtins.fromJSON (builtins.readFile ./${user}/about.json);
in in
@ -64,80 +65,79 @@
shell = pkgs."${cfg.shell}"; shell = pkgs."${cfg.shell}";
extraGroups = cfg.extraGroups or [ ]; extraGroups = cfg.extraGroups or [ ];
}; };
}) cfg.usersList }) cfg.usersList)
);
# Configurure home-manager # Configurure home-manager
home-manager = { {
backupFileExtension = "backup-${toString inputs.self.lastModified}"; home-manager = {
backupFileExtension = "backup-${toString inputs.self.lastModified}";
};
}
(map (user: {
home-manager.users.${user} = {
imports = [
./${user}/modules
users = lib.mkMerge ( inputs.stylix.homeModules.stylix
map (user: { ];
${user} = { stylix = {
imports = [ enable = true;
./${user}/modules image =
if builtins.pathExists ./${user}/wallpaper.png then
inputs.stylix.homeModules.stylix ./${user}/wallpaper.png
]; else
stylix = { ./${user}/wallpaper.jpg;
enable = true;
image =
if builtins.pathExists ./${user}/wallpaper.png then
./${user}/wallpaper.png
else
./${user}/wallpaper.jpg;
};
home.stateVersion = config.system.stateVersion;
}; };
}) cfg.usersList home.stateVersion = config.system.stateVersion;
); };
}; }) cfg.usersList)
# Configure DM and users' default sessions # Configure DM and users' default sessions
services.displayManager.gdm.enable = true; {
systemd.tmpfiles.settings."20-gdm-default-session" = lib.mkMerge ( services.displayManager.gdm.enable = true;
map (user: { }
"/run/tmpfiles/var/lib/AccountsService/users/${user}".f = { (map (user: {
argument = "${lib.generators.toINI { } { systemd.tmpfiles.settings."20-gdm-default-session" = {
User = { "/run/tmpfiles/var/lib/AccountsService/users/${user}".f = {
Session = toString ( argument = "${lib.generators.toINI { } {
builtins.tail ( User = {
lib.splitString ":" (builtins.fromJSON (builtins.readFile ./${user}/about.json)).session Session = toString (
) builtins.tail (
lib.splitString ":" (builtins.fromJSON (builtins.readFile ./${user}/about.json)).session
)
);
SystemAccount = false;
}
// (
let
pic = ./${user}/face.png;
in
if builtins.pathExists pic then { Icon = "${pic}"; } else { }
); );
SystemAccount = false; }}";
} };
// ( "/var/lib/AccountsService/users/${user}"."L+" = {
let argument = "/run/tmpfiles/var/lib/AccountsService/users/${user}";
pic = ./${user}/face.png; };
in
if builtins.pathExists pic then { Icon = "${pic}"; } else { }
);
}}";
}; };
"/var/lib/AccountsService/users/${user}"."L+" = { }) cfg.usersList)
argument = "/run/tmpfiles/var/lib/AccountsService/users/${user}"; (map (
}; user:
}) cfg.usersList let
); __session = lib.splitString ":" (builtins.fromJSON (builtins.readFile ./${user}/about.json))
} .session;
// (lib.foldl (acc: elem: acc // elem) { } ( sessionType = (builtins.head __session);
map ( session = toString (builtins.tail __session);
user: in
let assert sessionType == "co" || sessionType == "de";
__session = lib.splitString ":" (builtins.fromJSON (builtins.readFile ./${user}/about.json)) if sessionType == "co" then
.session; {
sessionType = (builtins.head __session); programs.${session}.enable = true;
session = toString (builtins.tail __session); }
in else if sessionType == "de" then
assert sessionType == "co" || sessionType == "de"; { services.desktopManager.${session}.enable = true; }
if sessionType == "co" then else
{ { }
programs.${session}.enable = true; ) cfg.usersList)
} ]
else if sessionType == "de" then )
{ services.desktopManager.${session}.enable = true; }
else
{ }
) cfg.usersList
))