From 3430ed11b8080c3270d3e370eed85b8e529d9c60 Mon Sep 17 00:00:00 2001 From: Victor Borja Date: Tue, 3 Mar 2026 21:35:51 -0600 Subject: [PATCH] make batteries use parametric.exactly --- modules/aspects/defaults.nix | 4 +--- modules/aspects/definition.nix | 22 ++++++------------- modules/aspects/provides/define-user.nix | 6 ++--- .../unfree/unfree-predicate-builder.nix | 22 ++++++++++--------- modules/aspects/provides/user-shell.nix | 6 ++--- 5 files changed, 26 insertions(+), 34 deletions(-) diff --git a/modules/aspects/defaults.nix b/modules/aspects/defaults.nix index 11df0ab5..4a9fa7bf 100644 --- a/modules/aspects/defaults.nix +++ b/modules/aspects/defaults.nix @@ -3,8 +3,6 @@ { lib, ... }: { imports = [ (lib.mkAliasOptionModule [ "default" ] [ "ctx" "default" ]) ]; - - ctx.default._.default = _: { }; - + ctx.default = { }; }; } diff --git a/modules/aspects/definition.nix b/modules/aspects/definition.nix index e73c8e40..9feac5de 100644 --- a/modules/aspects/definition.nix +++ b/modules/aspects/definition.nix @@ -8,20 +8,12 @@ let mkAspect = aspect: classes: { ${aspect} = parametric (lib.genAttrs classes (_: { })); }; - toClasses = - from: - if from ? classes then - map (c: { - aspect = from.aspect; - class = c; - }) from.classes - else - [ - { - aspect = from.aspect; - class = from.class; - } - ]; + toClasses = from: [ + { + aspect = from.aspect; + classes = from.classes or [ from.class ]; + } + ]; hosts = map builtins.attrValues (builtins.attrValues den.hosts); homes = map builtins.attrValues (builtins.attrValues den.homes); @@ -29,7 +21,7 @@ let groupByAspect = pairs: lib.foldl' ( - acc: { aspect, class }: acc // { ${aspect} = (acc.${aspect} or [ ]) ++ [ class ]; } + acc: { aspect, classes }: acc // { ${aspect} = (acc.${aspect} or [ ]) ++ classes; } ) { } pairs; deps = lib.pipe hosts [ diff --git a/modules/aspects/provides/define-user.nix b/modules/aspects/provides/define-user.nix index 08ccddcc..34360a4e 100644 --- a/modules/aspects/provides/define-user.nix +++ b/modules/aspects/provides/define-user.nix @@ -23,7 +23,7 @@ let if lib.hasSuffix "darwin" host.system then "/Users/${user.userName}" else "/home/${user.userName}"; userContext = - { host, user, ... }: + { host, user }: { nixos.users.users.${user.userName} = { name = user.userName; @@ -41,14 +41,14 @@ let }; hmContext = - { home, ... }: + { home }: userContext { host.system = home.system; user.userName = home.userName; }; in { - den.provides.define-user = den.lib.parametric { + den.provides.define-user = den.lib.parametric.exactly { inherit description; includes = [ userContext diff --git a/modules/aspects/provides/unfree/unfree-predicate-builder.nix b/modules/aspects/provides/unfree/unfree-predicate-builder.nix index 5690b002..b408c6ec 100644 --- a/modules/aspects/provides/unfree/unfree-predicate-builder.nix +++ b/modules/aspects/provides/unfree/unfree-predicate-builder.nix @@ -30,23 +30,25 @@ let }; }; - osAspect = take.exactly ( + osAspect = { host }: { ${host.class}.imports = [ unfreeModule ]; - } - ); - userAspect = take.exactly ( - { host, user }: lib.mkMerge (map (c: { ${c}.imports = [ unfreeModule ]; }) user.classes) - ); - homeAspect = take.exactly ( + }; + + userAspect = + { host, user }: + lib.optionalAttrs (lib.elem "homeManager" user.classes) { + homeManager.imports = [ unfreeModule ]; + }; + + homeAspect = { home }: { ${home.class}.imports = [ unfreeModule ]; - } - ); + }; - aspect = parametric { + aspect = parametric.exactly { inherit description; includes = [ osAspect diff --git a/modules/aspects/provides/user-shell.nix b/modules/aspects/provides/user-shell.nix index f8dcb384..573e3841 100644 --- a/modules/aspects/provides/user-shell.nix +++ b/modules/aspects/provides/user-shell.nix @@ -32,11 +32,11 @@ in { den.provides.user-shell = shell: - den.lib.parametric { + den.lib.parametric.exactly { inherit description; includes = [ - ({ user, ... }: userShell shell user) - ({ home, ... }: userShell shell home) + ({ host, user }: userShell shell user) + ({ home }: userShell shell home) ]; }; }