aboutsummaryrefslogtreecommitdiff
path: root/hosts
diff options
context:
space:
mode:
authorIsabella Bastaja <isabella@sorre.xyz>2026-08-29 12:09:06 +0200
committerIsabella Bastaja <isabella@sorre.xyz>2026-08-29 12:09:14 +0200
commitae1666627566524c9d4dd311f4d70669742ba037 (patch)
tree612c2f0f5aa43becb5a85293fece9951d64920fd /hosts
parent6d4ad63f9fc7720d38981681632de6359e62c666 (diff)
tower: implement navidrome backup service
Diffstat (limited to 'hosts')
-rw-r--r--hosts/tower/web/navidrome.nix33
1 files changed, 31 insertions, 2 deletions
diff --git a/hosts/tower/web/navidrome.nix b/hosts/tower/web/navidrome.nix
index cc1af9e..57f0a03 100644
--- a/hosts/tower/web/navidrome.nix
+++ b/hosts/tower/web/navidrome.nix
@@ -1,4 +1,4 @@
-{ config, ... }:
+{ config, lib, ... }:
let
cfg = config.services.navidrome;
domain = "music.sorre.internal";
@@ -15,5 +15,34 @@ in
openFirewall = false;
};
};
- environment.systemPackages = [ cfg.package ];
+ environment.systemPackages = lib.mkIf cfg.enable [ cfg.finalPackage ];
+
+ systemd.services.backup-navidrome = lib.mkIf cfg.enable {
+ serviceConfig = {
+ Type = "exec";
+ User = cfg.user;
+ Group = cfg.group;
+ StateDirectory = "backups/navidrome";
+ StateDirectoryMode = "0700";
+ Umask = "077";
+ };
+ description = "Back up navidrome data";
+ path = [ cfg.finalPackage ];
+ enableStrictShellChecks = true;
+ script = ''
+ #!/usr/bin/env bash
+ set -euo pipefail
+
+ navidrome backup create --backup-dir "$STATE_DIRECTORY" \
+ --datafolder "${cfg.settings.DataFolder}"
+
+ navidrome backup prune --backup-dir "$STATE_DIRECTORY" --keep-count 5
+ '';
+ };
+
+ systemd.timers.backup-navidrome = lib.mkIf cfg.enable {
+ description = "Back up navidrome data every morning";
+ timerConfig.OnCalendar = "*-*-* 05:00:00";
+ wantedBy = [ "timers.target" ];
+ };
}