blob: edb4231612ded6dc3e3148cbf2437ecb7e5fcd38 [file] [log] [blame]
Skyler Grey51e18512022-08-20 12:24:19 +01001# As our modules have nonstandard properties, we need to have some way of
2# properly intepreting them
3# This function takes a list of modules, as well as arguments to import them
4# with, and returns a list of modules, each with the standard NixOS module
5# properties as well as with custom properties as described in /README.md
Skyler Grey7dfe5c62022-08-20 21:41:30 +01006transformArgs: modules: args: let
Skyler Grey51e18512022-08-20 12:24:19 +01007 resolver = module: let
8 importedModule =
9 if builtins.typeOf module == "path"
10 then import module
11 else module;
12 resolvedModule =
13 if builtins.typeOf importedModule == "lambda"
14 then
15 resolvedModule
Skyler Grey7dfe5c62022-08-20 21:41:30 +010016 (transformArgs args)
Skyler Grey51e18512022-08-20 12:24:19 +010017 else resolvedModule;
18 in {
19 home = module.home or {};
20 module = {
Skyler Grey7dfe5c62022-08-20 21:41:30 +010021 config = module.config or {};
22 imports = module.imports or {};
23 options = module.options or {};
Skyler Grey51e18512022-08-20 12:24:19 +010024 };
25 };
26in (
27 if modules.typeOf == "list"
28 then builtins.map resolver modules
29 else (resolver modules)
30)