Filter derivation with preferLocalBuild

This commit is contained in:
Tobias Happ 2019-09-22 09:22:47 +02:00
parent 23aa551059
commit 26488e9a43

26
ci.nix
View file

@ -3,10 +3,30 @@
with import <nixpkgs> { };
with lib;
let
src = import ./src;
attrs = genAttrs
[ "aarch64" "i686" ]
(arch: (src { inherit arch; }) // { recurseForDerivations = true; });
isCacheable = p: !(p.preferLocalBuild or false);
shouldRecurseForDerivations = p: isAttrs p && p.recurseForDerivations or false;
flattenPkgs = s:
let
f = p:
if shouldRecurseForDerivations p then flattenPkgs p
else if isDerivation p then [ p ]
else [ ];
in
concatMap f (attrValues s);
cachePkgs = filter isCacheable (flattenPkgs attrs);
outputsOf = p: map (o: p.${o}) p.outputs;
in
lib.genAttrs
[ "aarch64" "i686" ]
(arch: (src { inherit arch; }) // { recurseForDerivations = true; })
concatMap outputsOf cachePkgs