From 9e5707b8fee457ba252bfd8270d47b8b3168e151 Mon Sep 17 00:00:00 2001 From: Eman Resu <78693624+quatquatt@users.noreply.github.com> Date: Thu, 5 Jun 2025 08:01:08 -0400 Subject: [PATCH 1/5] refactor: remove unused type --- modules/nixos/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 98db07d..38d11bf 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -9,7 +9,7 @@ inherit (lib.trivial) pipe; inherit (lib.strings) optionalString; inherit (lib.attrsets) mapAttrsToList; - inherit (lib.types) bool attrsOf submoduleWith listOf raw attrs submodule; + inherit (lib.types) bool attrsOf submoduleWith listOf raw attrs; inherit (builtins) filter attrValues mapAttrs getAttr concatLists; cfg = config.hjem; From 731d3965c593c5ab81019ddcf6a0db9572da6af2 Mon Sep 17 00:00:00 2001 From: Eman Resu <78693624+quatquatt@users.noreply.github.com> Date: Thu, 5 Jun 2025 08:03:22 -0400 Subject: [PATCH 2/5] refactor: use ++ instead of concatLists --- modules/nixos/default.nix | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 38d11bf..c62dc96 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -24,22 +24,19 @@ osConfig = config; }; modules = - concatLists [ - [ - ../common.nix - ({name, ...}: let - user = getAttr name config.users.users; - in { - user = user.name; - directory = user.home; - clobberFiles = cfg.clobberByDefault; - }) - ] - # Evaluate additional modules under 'hjem.users.' so that - # module systems built on Hjem are more ergonomic. - cfg.extraModules - ]; + ../common.nix + ({name, ...}: let + user = getAttr name config.users.users; + in { + user = user.name; + directory = user.home; + clobberFiles = cfg.clobberByDefault; + }) + ] + # Evaluate additional modules under 'hjem.users.' so that + # module systems built on Hjem are more ergonomic. + ++ cfg.extraModules; }; in { options.hjem = { From 8a0d0774ead7d9c023d0ae39d70cae111913c625 Mon Sep 17 00:00:00 2001 From: Eman Resu <78693624+quatquatt@users.noreply.github.com> Date: Thu, 5 Jun 2025 09:34:00 -0400 Subject: [PATCH 3/5] refactor: rewrite `users.users` to use `lib.pipe` --- modules/nixos/default.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index c62dc96..876e37c 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -8,7 +8,7 @@ inherit (lib.options) mkOption literalExpression; inherit (lib.trivial) pipe; inherit (lib.strings) optionalString; - inherit (lib.attrsets) mapAttrsToList; + inherit (lib.attrsets) mapAttrsToList filterAttrs; inherit (lib.types) bool attrsOf submoduleWith listOf raw attrs; inherit (builtins) filter attrValues mapAttrs getAttr concatLists; @@ -80,7 +80,12 @@ in { }; config = { - users.users = (mapAttrs (_: v: mkIf v.enable {inherit (v) packages;})) cfg.users; + users.users = pipe cfg.users [ + (filterAttrs (_: user: user.enable)) + (mapAttrs (_: user: { + inherit (user) packages; + })) + ]; # Constructed rule string that consists of the type, target, and source # of a tmpfile. Files with 'null' sources are filtered before the rule From 59ba038112589a97bc1e2f9650f5e5d04b47d85e Mon Sep 17 00:00:00 2001 From: Eman Resu <78693624+quatquatt@users.noreply.github.com> Date: Thu, 5 Jun 2025 09:35:07 -0400 Subject: [PATCH 4/5] refactor: rewrite `assertions` to use let binding --- modules/nixos/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 876e37c..cd7647e 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -123,9 +123,8 @@ in { ) cfg.users); - assertions = - concatLists - (mapAttrsToList (user: config: + assertions = let + mkUserAssertions = user: config: map ({ assertion, message, @@ -134,7 +133,9 @@ in { inherit assertion; message = "${user} profile: ${message}"; }) - config.assertions) - cfg.users); + config.assertions; + in + concatLists + (mapAttrsToList mkUserAssertions cfg.users); }; } From 5f5a4ce7d616fbc8287c83fb341bc6a897df1e52 Mon Sep 17 00:00:00 2001 From: Eman Resu <78693624+quatquatt@users.noreply.github.com> Date: Thu, 5 Jun 2025 09:48:29 -0400 Subject: [PATCH 5/5] refactor: rewrite `tmpfiles.users` for readability --- modules/nixos/default.nix | 43 +++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index cd7647e..023643f 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -87,30 +87,25 @@ in { })) ]; - # Constructed rule string that consists of the type, target, and source - # of a tmpfile. Files with 'null' sources are filtered before the rule - # is constructed. - systemd.user.tmpfiles.users = - mapAttrs (_: { - enable, - files, - ... - }: { - rules = - mkIf enable - ( - pipe files [ - attrValues - (filter (f: f.enable && f.source != null)) - (map ( - file: - # L+ will recreate, i.e., clobber existing files. - "L${optionalString file.clobber "+"} '${file.target}' - - - - ${file.source}" - )) - ] - ); - }) - cfg.users; + systemd.user.tmpfiles.users = let + # Constructs a rule string for each tmpfile that consists of the type, + # target, and source. + filesToRules = files: + pipe files [ + attrValues + # Filter files with 'null' sources before we construct rules + (filter (f: f.enable && f.source != null)) + (map ( + file: "L${optionalString file.clobber "+"} '${file.target}' - - - - ${file.source}" + )) + ]; + in + pipe cfg.users [ + (filterAttrs (_: user: user.enable)) + (mapAttrs (_: user: { + rules = filesToRules user.files; + })) + ]; warnings = concatLists