diff options
Diffstat (limited to 'ci-builds.nix')
-rw-r--r-- | ci-builds.nix | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/ci-builds.nix b/ci-builds.nix new file mode 100644 index 000000000000..b0bb6fa61528 --- /dev/null +++ b/ci-builds.nix @@ -0,0 +1,109 @@ +# This file defines the derivations that should be built by CI. +# +# The "categories" (i.e. attributes) below exist because we run out of +# space on Sourcehut otherwise. +{ depot, lib, ... }: + +let + inherit (builtins) attrNames filter foldl' getAttr substring; + + # attach a nix expression to a drv so we can “build” it + # TODO(Profpatsch): instead of failing evaluation if a test fails, + # we can put the expression of the test failure into $out + # and continue with the other CI derivations. + drvify = name: exp: depot.nix.emptyDerivation { + inherit name; + owo = lib.generators.toPretty {} exp; + }; + + systemFor = configuration: (depot.third_party.nixos { + inherit configuration; + }).system; + +in lib.fix (self: { + __apprehendEvaluators = throw '' + Do not evaluate this attribute set directly. It exists only to group builds + for CI runs of different "project groups". + + To use the depot, always start from the top-level attribute tree instead. + ''; + + # Names of all evaluatable attributes in here. This list will be + # used to trigger builds for each key. + __evaluatable = filter (key: (substring 0 2 key) != "__") (attrNames self); + + # Combined list of all the targets, used for building everything locally. + __allTargets = + (with depot.nix.yants; list drv) + (foldl' (x: y: x ++ y) [] (map (k: getAttr k self) self.__evaluatable)); + + fun = with depot.fun; [ + amsterdump + clbot + gemma + quinistry + tvldb + watchblob + wcl + ]; + + ops = with depot.ops; [ + depot.ops."posix_mq.rs" + besadii + journaldriver + kontemplate + mq_cli + (systemFor nixos.whitby) + ]; + + third_party = with depot.third_party; [ + cgit + git + grpc + nix + openldap + apereo-cas + ]; + + various = with depot; [ + lisp.dns + nix.buildLisp.example + nix.yants.tests + tools.cheddar + tools.nsfv-setup + web.cgit-taz + web.tvl + (drvify "getBins-tests" nix.getBins.tests) + ] + ++ nix.runExecline.tests + ; + + # Haskell packages we've patched locally + haskellPackages = with depot.third_party.haskellPackages; [ + generic-arbitrary + hgeometry + hgeometry-combinatorial + vinyl + comonad-extras + depot.third_party.haskell-language-server.ghc883 + ]; + + # User-specific build targets + tazjin = with depot.users.tazjin; [ + blog.rendered + emacs + finito + homepage + (systemFor nixos.camden) + (systemFor nixos.frog) + ]; + + glittershark = with depot.users.glittershark; [ + xanthous + keyboard.layout + owothia + + (systemFor system.system.chupacabra) + system.home.chupacabra.activationPackage + ]; +}) |