From 9c9a665f686ab418c68b5ed8cba2432a7a130168 Mon Sep 17 00:00:00 2001 From: Ahwx Date: Tue, 7 Oct 2025 13:05:26 +0200 Subject: [PATCH] feat: adds `borgbackup` job for `grafana` and set `SSH` port --- modules/services/forgejo.nix | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/modules/services/forgejo.nix b/modules/services/forgejo.nix index a2dc10e..6dd6ccc 100644 --- a/modules/services/forgejo.nix +++ b/modules/services/forgejo.nix @@ -2,11 +2,14 @@ lib, pkgs, config, + host, + username, ... }: let cfg = config.services.forgejo; srv = cfg.settings.server; + baseRepo = "ssh://liv@dandelion:9123/spinners/rootvol/backups/${host}"; in { services = { @@ -21,6 +24,8 @@ in # You need to specify this to remove the port from URLs in the web UI. ROOT_URL = "https://${srv.DOMAIN}/"; HTTP_PORT = 3050; + DISABLE_SSH = false; + SSH_PORT = 2222; }; # You can temporarily allow registration to create an admin user. service.DISABLE_REGISTRATION = true; @@ -70,6 +75,31 @@ in proxyWebsockets = true; }; }; + borgbackup.jobs."violet-forgejo" = { + paths = [ "/var/lib/forgejo" ]; + repo = "${baseRepo}/var-forgejo"; + encryption.mode = "none"; + compression = "auto,zstd"; + startAt = "daily"; + preHook = '' + systemctl stop forgejo + ''; + postHook = '' + systemctl start forgejo + if [ $exitStatus -eq 2 ]; then + ${pkgs.ntfy-sh}/bin/ntfy send https://notify.liv.town/${host} "borgbackup: ${host} backup (forgejo) failed with errors" + else + ${pkgs.ntfy-sh}/bin/ntfy send https://notify.liv.town/${host} "borgbackup: ${host} backup (forgejo) completed succesfully with exit status $exitStatus" + fi + ''; + user = "root"; + extraCreateArgs = [ + "--stats" + ]; + environment = { + BORG_RSH = "ssh -p 9123 -i /home/${username}/.ssh/id_ed25519"; + }; + }; }; # systemd.services.forgejo.preStart = let # adminCmd = "${lib.getExe cfg.package} admin user";