summaryrefslogtreecommitdiffstats
path: root/tv/4lib/modules.nix
diff options
context:
space:
mode:
authorlassulus <lass@aidsballs.de>2015-07-28 21:49:48 +0200
committerlassulus <lass@aidsballs.de>2015-07-28 21:49:48 +0200
commita11b113866705316cdc93eddbf170e2c1236bbc0 (patch)
tree099cbe2177ca747943ae49035ae10a18d71aeb62 /tv/4lib/modules.nix
parent8d10d5b199d0d2c5a9a9ff53b39ac65bb8b3ae51 (diff)
parent074bbdf5b5c6d70d58f923f3a91b71bbf18abc9c (diff)
Merge remote-tracking branch 'cd/user-toplevel' into newmaster
Diffstat (limited to 'tv/4lib/modules.nix')
-rw-r--r--tv/4lib/modules.nix21
1 files changed, 21 insertions, 0 deletions
diff --git a/tv/4lib/modules.nix b/tv/4lib/modules.nix
new file mode 100644
index 0000000..248e638
--- /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;
+}