diff --git a/ci.nix b/ci.nix index ef1aab0..6a934c0 100644 --- a/ci.nix +++ b/ci.nix @@ -3,10 +3,30 @@ with import { }; +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