oops, add the flattenTree.nix file
This commit is contained in:
parent
92ade60501
commit
5973a46a75
|
@ -0,0 +1,35 @@
|
|||
tree:
|
||||
let
|
||||
op = sum: path: val:
|
||||
let
|
||||
pathStr = builtins.concatStringsSep "_" path;
|
||||
in
|
||||
if (builtins.typeOf val) != "set" then
|
||||
# ignore that value
|
||||
# builtins.trace "${pathStr} is not of type set"
|
||||
sum
|
||||
else if val ? type && val.type == "derivation" then
|
||||
# builtins.trace "${pathStr} is a derivation"
|
||||
# we used to use the derivation outPath as the key, but that crashes Nix
|
||||
# so fallback on constructing a static key
|
||||
(sum // {
|
||||
"${pathStr}" = val;
|
||||
})
|
||||
else if val ? recurseForDerivations && val.recurseForDerivations == true then
|
||||
# builtins.trace "${pathStr} is a recursive"
|
||||
# recurse into that attribute set
|
||||
(recurse sum path val)
|
||||
else
|
||||
# ignore that value
|
||||
# builtins.trace "${pathStr} is something else"
|
||||
sum
|
||||
;
|
||||
|
||||
recurse = sum: path: val:
|
||||
builtins.foldl'
|
||||
(sum: key: op sum (path ++ [ key ]) val.${key})
|
||||
sum
|
||||
(builtins.attrNames val)
|
||||
;
|
||||
in
|
||||
recurse { } [ ] tree
|
Loading…
Reference in New Issue