tvl-depot/ci-builds.nix
Vincent Ambo 1640d9d145 refactor(ci-builds): Split up CI builds into multiple buckets
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>
2020-06-24 02:38:21 +00:00

70 lines
1.6 KiB
Nix

# 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;
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
];
})