1
Fork 0
mirror of https://github.com/RGBCube/hjem synced 2025-10-13 13:12:16 +00:00

modules: fix overlapping files attr names

This commit is contained in:
lunarnovaa 2025-07-20 13:36:29 -07:00
parent f8fc54fde0
commit 1646b91b31
No known key found for this signature in database
2 changed files with 15 additions and 12 deletions

View file

@ -4,7 +4,8 @@
lib,
...
}: let
inherit (lib.attrsets) filterAttrs mapAttrsToList optionalAttrs;
inherit (lib.attrsets) filterAttrs mapAttrsToList;
inherit (lib.lists) optionals;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.options) literalExpression mkOption;
inherit (lib.strings) optionalString;
@ -19,18 +20,20 @@
disabledUsers = filterAttrs (_: u: !u.enable) cfg.users;
userFiles = user:
user.files
// (optionalAttrs user.xdg.enable (
[
user.files
]
++ (optionals user.xdg.enable [
user.xdg.cache.files
// user.xdg.config.files
// user.xdg.data.files
// user.xdg.state.files
));
user.xdg.config.files
user.xdg.data.files
user.xdg.state.files
]);
linker = getExe cfg.linker;
manifests = let
mapFiles = _: files:
mapFiles = files:
lib.attrsets.foldlAttrs (
accum: _: value:
if value.enable -> value.source == null
@ -53,7 +56,7 @@
text = builtins.toJSON {
clobber_by_default = cfg.users."${username}".clobberFiles;
version = 1;
files = mapFiles username (
files = concatMap mapFiles (
userFiles cfg.users."${username}"
);
};
@ -222,7 +225,7 @@ in {
systemd.user.tmpfiles.users =
mapAttrs (_: u: {
rules = pipe (userFiles u) [
attrValues
(concatMap attrValues)
(filter (f: f.enable && f.source != null))
(map (
file:

View file

@ -53,7 +53,7 @@ in
state = {
home = userHome + "/customStateHome";
files = {
"bar" = {
"foo" = {
source = pkgs.writeText "file-bar" "Hello World!";
};
};
@ -83,7 +83,7 @@ in
machine.succeed("[ -L ~alice/customCacheHome/foo ]")
machine.succeed("[ -L ~alice/customConfigHome/bar.json ]")
machine.succeed("[ -L ~alice/customDataHome/baz.toml ]")
machine.succeed("[ -L ~alice/customStateHome/bar ]")
machine.succeed("[ -L ~alice/customStateHome/foo ]")
# Test regular files, created by systemd-tmpfiles
machine.succeed("[ -d ~alice/user_tmpfiles_created ]")