stockholm/tv/4lib/modules.nix

22 lines
645 B
Nix

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;
}