34 lines
687 B
Nix
34 lines
687 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
|