From 2ffa39caa2dab5da19991d8ac3e1e3c6f4031aa2 Mon Sep 17 00:00:00 2001 From: awwpotato Date: Mon, 16 Jun 2025 16:28:13 -0700 Subject: [PATCH] stylix: cleanup mkTarget impl --- stylix/mk-target.nix | 54 ++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/stylix/mk-target.nix b/stylix/mk-target.nix index 64697cb8d..710db2daa 100644 --- a/stylix/mk-target.nix +++ b/stylix/mk-target.nix @@ -201,7 +201,7 @@ let builtins.attrNames ]; - getStylixAttrs = + getArgs = fn: lib.genAttrs (functionArgNames fn) ( arg: @@ -222,26 +222,27 @@ let ); # Call the configuration function with its required Stylix arguments. - mkConfig = fn: fn (getStylixAttrs fn); + applyArgs = fn: fn (getArgs fn); # Safeguard configuration functions when any of their arguments is - # disabled. - mkConditionalConfig = - c: - if builtins.isFunction c then - let - allAttrsNonNull = lib.pipe c [ - getStylixAttrs - builtins.attrValues - (builtins.all (attr: attr != null)) - ]; - in - lib.mkIf allAttrsNonNull (mkConfig c) - else - c; + # disabled, while non-function configurations are unguarded. + conditionalConfig = + f: + let + allAttrsNonNull = lib.pipe f [ + getArgs + builtins.attrValues + (builtins.all (attr: attr != null)) + ]; + in + lib.mkIf allAttrsNonNull (applyArgs f); + + applyIfFn = f: v: if builtins.isFunction v then f v else v; in { - inherit imports; + imports = imports ++ [ + { options.stylix.targets.${name} = extraOptions; } + ]; options.stylix.targets.${name}.enable = let @@ -261,20 +262,19 @@ let config = lib.mkIf (config.stylix.enable && cfg.enable) ( lib.mkMerge ( lib.optional (generalConfig != null) ( - mkConfig ( - if builtins.isPath generalConfig then import generalConfig else generalConfig - ) - ) - ++ map (c: mkConditionalConfig (if builtins.isPath c then import c else c)) ( - lib.toList configElements + let + c = + if builtins.isPath generalConfig then import generalConfig else generalConfig; + in + applyIfFn applyArgs c ) + ++ map ( + c: applyIfFn conditionalConfig (if builtins.isPath c then import c else c) + ) (lib.toList configElements) ) ); }; in { - imports = [ - { options.stylix.targets.${name} = extraOptions; } - module - ]; + imports = [ module ]; }