diff options
author | makefu <github@syntax-fehler.de> | 2015-07-28 21:56:10 +0200 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2015-07-28 21:56:10 +0200 |
commit | f7e206b608a2844c4e81173a673369402f8da06b (patch) | |
tree | 109f929d89dfa7a4a1b686019494b2355bcbc81f /tv/4lib/modules.nix | |
parent | fca517dd0e61c67d2a485f578e7146b46f048f69 (diff) | |
parent | 3228890813535514dfdfe9d049486a9e6054e479 (diff) |
Merge remote-tracking branch 'cd/user-toplevel' into user-toplevel
Diffstat (limited to 'tv/4lib/modules.nix')
-rw-r--r-- | tv/4lib/modules.nix | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tv/4lib/modules.nix b/tv/4lib/modules.nix new file mode 100644 index 000000000..248e638ea --- /dev/null +++ b/tv/4lib/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; +} |