feat(ops/modules): Add module for automatically collecting garbage

Adds a module that automatically collects garbage based on disk space
thresholds, and configures it to run hourly on whitby.

This is implemented as an alternative to cl/2937, which I've been told
uses a Nix feature that doesn't actually work.

Under-the-hood this is simply a systemd timer running a shell script
which checks available disk space and runs GC when necessary.

Change-Id: I3c6b5de85b74ea52e7e16c53f2f900e0911c9805
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3014
Tested-by: BuildkiteCI
Reviewed-by: lukegb <lukegb@tvl.fyi>
This commit is contained in:
Vincent Ambo 2021-04-14 18:16:42 +02:00 committed by tazjin
parent 605302091d
commit cc903bc3b0
2 changed files with 100 additions and 0 deletions

View file

@ -6,6 +6,7 @@ let
inherit (lib) range;
in {
imports = [
"${depot.path}/ops/modules/automatic-gc.nix"
"${depot.path}/ops/modules/clbot.nix"
"${depot.path}/ops/modules/irccat.nix"
"${depot.path}/ops/modules/monorepo-gerrit.nix"
@ -187,6 +188,15 @@ in {
challengeResponseAuthentication = false;
};
# Automatically collect garbage from the Nix store.
services.depot.automatic-gc = {
enable = true;
interval = "1 hour";
diskThreshold = 200; # GiB
maxFreed = 420; # GiB
preserveGenerations = "90d";
};
# Run a handful of Buildkite agents to support parallel builds.
services.depot.buildkite = {
enable = true;