2018-07-16 12:14:10 +00:00
|
|
|
# This file filters out all the broken packages from your package set.
|
|
|
|
# It's what gets built by CI, so if you correctly mark broken packages as
|
|
|
|
# broken your CI will not try to build them and the non-broken packages will
|
|
|
|
# be added to the cache.
|
2018-07-21 13:55:00 +00:00
|
|
|
{ pkgs ? import <nixpkgs> {} }:
|
2018-07-16 12:14:10 +00:00
|
|
|
|
2019-03-23 18:03:43 +00:00
|
|
|
let
|
|
|
|
filterSet =
|
|
|
|
(f: g: s: builtins.listToAttrs
|
|
|
|
(map
|
|
|
|
(n: { name = n; value = builtins.getAttr n s; })
|
|
|
|
(builtins.filter
|
|
|
|
(n: f n && g (builtins.getAttr n s))
|
|
|
|
(builtins.attrNames s)
|
2018-07-16 12:14:10 +00:00
|
|
|
)
|
2019-03-23 18:03:43 +00:00
|
|
|
)
|
|
|
|
);
|
|
|
|
isReserved = n: builtins.elem n ["lib" "overlays" "modules"];
|
|
|
|
isBroken = p: ({ meta.broken = false; } // p).meta.broken;
|
2018-07-16 12:14:10 +00:00
|
|
|
in filterSet
|
2019-03-23 18:03:43 +00:00
|
|
|
(n: !(isReserved n)) # filter out non-packages
|
2018-07-16 12:14:10 +00:00
|
|
|
(p: (builtins.isAttrs p)
|
2019-03-23 18:03:43 +00:00
|
|
|
&& !(isBroken p)
|
2018-07-16 12:14:10 +00:00
|
|
|
)
|
2018-07-21 13:55:00 +00:00
|
|
|
(import ./default.nix { inherit pkgs; })
|
2018-07-16 12:14:10 +00:00
|
|
|
|