diff options
author | Vincent Ambo <mail@tazj.in> | 2020-06-24T02·08+0100 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2020-06-24T02·38+0000 |
commit | 1640d9d145b6e8d058b33e4e2bd9c5b0780b8f2e (patch) | |
tree | 606d8b277bac5242205bd92c312811dcf489a134 /ci-builds.nix | |
parent | f2980dfc16360f8b56d200cbf0368f2a374061b8 (diff) |
refactor(ci-builds): Split up CI builds into multiple buckets r/1076
These categories separate CI targets, which hopefully avoids the out-of-space errors we have been seeing on Sourcehut. The sets of CI build targets are made available in the depot itself so that besadii can be updated to create a new build for each target group. For convenience, 'ciBuilds' contains an '__allTargets' attribute which combines the contents of each target batch - this makes it possible to still invoke a build for everything by using: nix-build -A ciBuilds.__allTargets Note: Some targets that were previously built in CI aren't anymore, most importantly my NixOS systems which don't fit on Sourcehut. Change-Id: Ia15ed7b743c8add51ae08ce0827a0ddfacd637e2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/570 Reviewed-by: lukegb <lukegb@tvl.fyi>
Diffstat (limited to 'ci-builds.nix')
-rw-r--r-- | ci-builds.nix | 101 |
1 files changed, 68 insertions, 33 deletions
diff --git a/ci-builds.nix b/ci-builds.nix index 1f4f96765687..02af7a28b4be 100644 --- a/ci-builds.nix +++ b/ci-builds.nix @@ -1,35 +1,70 @@ # This file defines the derivations that should be built by CI. # -# The plan is still to implement recursive tree traversal -# automatically and detect all derivations that have `meta.enableCI = -# true`, but this is currently more effort than it would save me. - -with (import ./default.nix {}); [ - fun.amsterdump - fun.gemma - fun.quinistry - fun.watchblob - fun.wcl - lisp.dns - nix.buildLisp.example - nix.yants.tests - ops."posix_mq.rs" - ops.besadii - ops.journaldriver - ops.kms_pass - ops.kontemplate - ops.mq_cli - third_party.cgit - third_party.git - third_party.lisp # will build all third-party libraries - third_party.nix - tools.cheddar - web.blog - web.cgit-taz - web.tvl - - # tazjin's personal things - users.tazjin.emacs - users.tazjin.nixos.camdenSystem - users.tazjin.nixos.frogSystem -] +# 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; + +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); + + # List of non-public targets, these are only used in local builds + # and not in CI. + __nonpublic = with depot; [ + users.tazjin.emacs + users.tazjin.nixos.camdenSystem + users.tazjin.nixos.frogSystem + ]; + + # Combined list of all the targets, used for building everything locally. + __allTargets = foldl' (x: y: x ++ y) self.__nonpublic + (map (k: getAttr k self) self.__evaluatable); + + fun = with depot.fun; [ + amsterdump + gemma + quinistry + watchblob + wcl + ]; + + gitAndFriends = with depot; [ + third_party.cgit + third_party.git + web.cgit-taz + ]; + + nix = [ depot.third_party.nix ]; + + ops = with depot.ops; [ + depot.ops."posix_mq.rs" + besadii + journaldriver + kms_pass + kontemplate + mq_cli + ]; + + various = with depot; [ + tools.cheddar + lisp.dns + nix.buildLisp.example + nix.yants.tests + ]; + + web = with depot.web; [ + blog + tvl + ]; +}) |