Fil-C on Nix

Filnix wiki

mbrock/filnix

tests/determinate-nix/par.nix

builtins.parallel: start every top-level drvPath in the background, then collect them on the main thread. Returns a digest of the name -> drvPath map.

λnixpkgs, filter?
nixpkgs
filterdefault null
let
8pkgs=
importnixpkgs
9system=
"x86_64-linux"
10config=
allowAliases = false;
13overlays=
[ ]
used by lib names v
15lib=
pkgs.lib
uses pkgs used by drvs r
16names=
builtins.attrNamespkgs
uses pkgs used by sel
17sel=
filter ≡ null
→
else
builtins.filtern: builtins.matchfilter n ≢ null names
uses names used by drvs
22drvs=
lib.genAttrssel
λn
let
25r=
builtins.tryEval
let
27v=
pkgs.${n}
uses pkgs
in
if lib.isDerivationv then v.drvPath else null
uses lib
in
if r.success then r.value else null
uses lib sel used by json
34json=
builtins.toJSONdrvs
uses drvs
in
builtins.parallelbuiltins.attrValuesdrvs
37count=
builtins.lengthsel
38sha256=
builtins.hashString"sha256" json