tvl-depot/ops/modules/git-serving.nix
Vincent Ambo 94cebe41f3 chore(ops/git-serving): Remove josh state from whitby backups
As cschilling explained on cl/3563, there isn't actually anything in
this state that we *need* to persist. We're still keeping it in a
persistent directory on disk as this serves as an optimisation after
restarts of josh.

Change-Id: Ia88886792a5acac34508b5b8a669bd519ca033de
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3631
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-09-24 16:14:30 +00:00

53 lines
1.6 KiB
Nix

# Configures public git-serving infrastructure for TVL, this involves:
#
# 1. cgit (running at code.tvl.fyi) for web views of the repository
# 2. josh (for cloning the repository and its distinct subtrees)
#
# We also run Sourcegraph for browsing the repository, but this is
# currently configured in a separate module
# (//ops/modules/sourcegraph.nix)
#
# TODO(tazjin): Move //web/cgit-taz configuration in here instead.
{ config, depot, lib, pkgs, ... }:
let
cfg = config.services.depot.git-serving;
in {
options.services.depot.git-serving = with lib; {
enable = mkEnableOption "Enable cgit & josh configuration";
joshPort = mkOption {
description = "Port on which josh should listen";
type = types.int;
default = 5674;
};
};
config = lib.mkIf cfg.enable {
# Run cgit for the depot. The onion here is nginx(thttpd(cgit)).
systemd.services.cgit = {
wantedBy = [ "multi-user.target" ];
script = "${depot.web.cgit-taz}/bin/cgit-launch";
serviceConfig = {
Restart = "on-failure";
User = "git";
Group = "git";
};
};
# Run josh for the depot.
systemd.services.josh = {
description = "josh - partial cloning of monorepos";
wantedBy = [ "multi-user.target" ];
path = [ pkgs.git pkgs.bash ];
serviceConfig = {
DynamicUser = true;
StateDirectory = "josh";
Restart = "always";
ExecStart = "${depot.third_party.josh}/bin/josh-proxy --no-background --local /var/lib/josh --port ${toString cfg.joshPort} --remote https://cl.tvl.fyi/";
};
};
};
}