clan-infra/modules/web01/job-flake-update.nix
2023-07-28 13:26:21 +02:00

60 lines
1.7 KiB
Nix

{ config, self, pkgs, ... }: {
sops.secrets.clan-bot-gitea-token = { };
sops.secrets.clan-bot-ssh-key = { };
systemd.timers.job-flake-update = {
description = "Time for flake update workflow";
partOf = [ "job-flake-update.service" ];
wantedBy = [ "timers.target" ];
timerConfig = {
Persistent = true;
OnCalendar = "daily";
};
after = [ "network-online.target" ];
};
# service to for automatic merge bot
systemd.services.job-flake-update = {
description = "Automatically update flake inputs for clan-repos";
after = [ "network-online.target" ];
environment = {
# secrets
GITEA_TOKEN_FILE = "%d/GITEA_TOKEN_FILE";
CLAN_BOT_SSH_KEY_FILE = "%d/CLAN_BOT_SSH_KEY_FILE";
HOME = "/run/job-flake-update";
# used by action-checkout
REPO_DIR = "/run/job-flake-update/repo";
# used by git
GIT_SSH_COMMAND="ssh -i %d/CLAN_BOT_SSH_KEY_FILE -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null";
# prevent these variables from being unset by writePureShellScript
KEEP_VARS="GIT_SSH_COMMAND GITEA_URL";
};
serviceConfig = {
LoadCredential = [
"GITEA_TOKEN_FILE:${config.sops.secrets.clan-bot-gitea-token.path}"
"CLAN_BOT_SSH_KEY_FILE:${config.sops.secrets.clan-bot-ssh-key.path}"
];
DynamicUser = true;
RuntimeDirectory = "job-flake-update";
WorkingDirectory = "/run/job-flake-update";
};
path = [
pkgs.tea
self.packages.${pkgs.system}.job-flake-update
];
script = ''
tea login add \
--token $(cat $GITEA_TOKEN_FILE) \
--url https://git.clan.lol
job-flake-update
'';
};
}