diff options
author | Vincent Ambo <tazjin@google.com> | 2019-12-09T03·16+0000 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2019-12-09T03·16+0000 |
commit | ff38ae6c5f64ceadb307eac95bbe63e7a55f80c6 (patch) | |
tree | e7ce7d2b4b35b8696d5976187e945cf751797815 /read-tree.nix | |
parent | 7044424f52be19f79eb7eacbefa06b869a0dd9c3 (diff) |
fix(read-tree): Don't import `default.nix` sibling expression r/105
If a folder contains a `default.nix`, Nix expressions contained in adjacent files should not be imported (they might be things like a `shell.nix` or a `deps.nix` which do not evaluate to derivations). The tree traversal still continues for all children folders of a folder with a `default.nix`.
Diffstat (limited to 'read-tree.nix')
-rw-r--r-- | read-tree.nix | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/read-tree.nix b/read-tree.nix index b2f161e885e1..2e182dfbdeef 100644 --- a/read-tree.nix +++ b/read-tree.nix @@ -72,10 +72,12 @@ let in listToAttrs (imported ++ dirs); importOr = path: dir: f: - let contents = f path (attrsToList dir); + let + allContents = f path (attrsToList dir); + dirOnlyContents = f path (filter (f: f.value == "directory") (attrsToList dir)); in if dir ? "default.nix" - then import path (argsWithPath args (pathParts path)) // contents - else contents; + then import path (argsWithPath args (pathParts path)) // dirOnlyContents + else allContents; readTree = path: importOr path (readDir path) traverse; in readTree initPath |