91 lines
2.6 KiB
Nix
91 lines
2.6 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
{
|
|
services.gitea-actions-runner = {
|
|
package = pkgs.forgejo-runner;
|
|
instances.snowden = {
|
|
enable = true;
|
|
name = "snowden";
|
|
url = "https://git.berlin.ccc.de";
|
|
labels = [
|
|
"debian-stable:docker://docker.io/debian:stable-slim"
|
|
"alpine-latest:docker://docker.io/alpine:latest"
|
|
"nix-latest:docker://docker.io/nixos/nix:latest"
|
|
"buildkit:docker://docker.io/moby/buildkit:rootless"
|
|
];
|
|
tokenFile = config.age.secrets.forgejo-runner-token-env.path;
|
|
settings = {
|
|
runner.labels = {
|
|
debian-stable = {
|
|
backend = "docker";
|
|
backend-options = {
|
|
image = "docker.io/debian:stable-slim";
|
|
platform = "linux/amd64";
|
|
};
|
|
};
|
|
alpine-latest = {
|
|
backend = "docker";
|
|
backend-options = {
|
|
image = "docker.io/alpine:latest";
|
|
platform = "linux/amd64";
|
|
};
|
|
};
|
|
buildkit = {
|
|
backend = "docker";
|
|
backend-options = {
|
|
image = "docker.io/moby/buildkit:rootless";
|
|
platform = "linux/amd64";
|
|
};
|
|
};
|
|
};
|
|
server.connections.forgejo = {
|
|
url = "https://git.berlin.ccc.de/";
|
|
uuid = "78cbc26a-09d3-4226-b239-9c2ee146a63f";
|
|
token_url = "file://${config.age.secrets.forgejo-runner-token.path}";
|
|
};
|
|
container = {
|
|
enable_ipv6 = true;
|
|
network = "forgejo";
|
|
privileged = true;
|
|
force_pull = true;
|
|
docker_host = "unix:///run/podman/podman.sock";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
systemd = {
|
|
services."forgejo-runner-container-updater" = {
|
|
description = "Update forgejo runner container images";
|
|
after = [ "network-online.target" ];
|
|
wants = [ "network-online.target" ];
|
|
serviceConfig.Type = "oneshot";
|
|
script = ''
|
|
set -uo pipefail
|
|
failed=0
|
|
images=(
|
|
docker.io/library/debian:stable-slim
|
|
docker.io/library/alpine:latest
|
|
docker.io/nixos/nix:latest
|
|
docker.io/moby/buildkit:latest
|
|
)
|
|
for image in "''${images[@]}"; do
|
|
echo "Pulling $image..."
|
|
if ! ${pkgs.podman}/bin/podman pull "$image"; then
|
|
echo "Failed to pull $image"
|
|
failed=1
|
|
fi
|
|
done
|
|
exit $failed
|
|
'';
|
|
};
|
|
timers."forgejo-runner-container-updater" = {
|
|
wantedBy = [ "timers.target" ];
|
|
timerConfig = {
|
|
OnCalendar = "daily";
|
|
RandomizedDelaySec = "30m";
|
|
Persistent = true;
|
|
};
|
|
};
|
|
};
|
|
}
|