21 lines
626 B
Nix
21 lines
626 B
Nix
let
|
|
function = name: value: let
|
|
result = if builtins.isAttrs value then {...}: value else value;
|
|
result' = builtins.trace "result ${name}=${builtins.typeOf result}" result;
|
|
in
|
|
assert builtins.isFunction result';
|
|
result;
|
|
|
|
config = { user?{}, home-manager?{} }@set:
|
|
builtins.mapAttrs function { inherit user home-manager; };
|
|
|
|
in name: value: let
|
|
result = if builtins.isFunction value
|
|
then
|
|
config { user = value; }
|
|
else if builtins.any (attr: builtins.hasAttr attr value) [ "user" "home-manager" ]
|
|
then
|
|
config value
|
|
else
|
|
config { user = value; };
|
|
in result
|