chore(users): change merge strategy to lib.recursiveUpdate
This commit is contained in:
parent
d3b48b8ef1
commit
f57b5c4660
1 changed files with 85 additions and 85 deletions
|
|
@ -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
|
|
||||||
))
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue