1
Fork 0
mirror of https://github.com/RGBCube/hjem synced 2025-10-15 14:12:22 +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, lib,
... ...
}: let }: let
inherit (lib.attrsets) filterAttrs mapAttrsToList optionalAttrs; inherit (lib.attrsets) filterAttrs mapAttrsToList;
inherit (lib.lists) optionals;
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge;
inherit (lib.options) literalExpression mkOption; inherit (lib.options) literalExpression mkOption;
inherit (lib.strings) optionalString; inherit (lib.strings) optionalString;
@ -19,18 +20,20 @@
disabledUsers = filterAttrs (_: u: !u.enable) cfg.users; disabledUsers = filterAttrs (_: u: !u.enable) cfg.users;
userFiles = user: userFiles = user:
[
user.files user.files
// (optionalAttrs user.xdg.enable ( ]
++ (optionals user.xdg.enable [
user.xdg.cache.files user.xdg.cache.files
// user.xdg.config.files user.xdg.config.files
// user.xdg.data.files user.xdg.data.files
// user.xdg.state.files user.xdg.state.files
)); ]);
linker = getExe cfg.linker; linker = getExe cfg.linker;
manifests = let manifests = let
mapFiles = _: files: mapFiles = files:
lib.attrsets.foldlAttrs ( lib.attrsets.foldlAttrs (
accum: _: value: accum: _: value:
if value.enable -> value.source == null if value.enable -> value.source == null
@ -53,7 +56,7 @@
text = builtins.toJSON { text = builtins.toJSON {
clobber_by_default = cfg.users."${username}".clobberFiles; clobber_by_default = cfg.users."${username}".clobberFiles;
version = 1; version = 1;
files = mapFiles username ( files = concatMap mapFiles (
userFiles cfg.users."${username}" userFiles cfg.users."${username}"
); );
}; };
@ -222,7 +225,7 @@ in {
systemd.user.tmpfiles.users = systemd.user.tmpfiles.users =
mapAttrs (_: u: { mapAttrs (_: u: {
rules = pipe (userFiles u) [ rules = pipe (userFiles u) [
attrValues (concatMap attrValues)
(filter (f: f.enable && f.source != null)) (filter (f: f.enable && f.source != null))
(map ( (map (
file: file:

View file

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