diff options
| author | tv <tv@krebsco.de> | 2015-07-11 19:44:49 +0200 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2015-07-11 19:44:49 +0200 |
| commit | 6f9301194a1ddb8beda2aa11b8330a347dfb42cd (patch) | |
| tree | 22ddca93839a9cb9efb03fcc807dc12b1b9ea8a8 /4lib/tv/modules.nix | |
| parent | 153422f74b1ed5cae37c9424514a9e9d1f79acb4 (diff) | |
| parent | 9de9a311a39c563dfb965abeb372cfa00fff7855 (diff) | |
Merge branch 'next'
Diffstat (limited to '4lib/tv/modules.nix')
| -rw-r--r-- | 4lib/tv/modules.nix | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/4lib/tv/modules.nix b/4lib/tv/modules.nix new file mode 100644 index 0000000..248e638 --- /dev/null +++ b/4lib/tv/modules.nix @@ -0,0 +1,21 @@ +let + pkgs = import <nixpkgs> {}; + inherit (pkgs.lib) concatMap hasAttr; +in rec { + + no-touch-args = { + config = throw "no-touch-args: can't touch config!"; + lib = throw "no-touch-args: can't touch lib!"; + pkgs = throw "no-touch-args: can't touch pkgs!"; + }; + + # list-imports : path -> [path] + # Return a module's transitive list of imports. + # XXX duplicates won't get eliminated from the result. + list-imports = path: + let module = import path no-touch-args; + imports = if hasAttr "imports" module + then concatMap list-imports module.imports + else []; + in [path] ++ imports; +} |
