diff options
| author | Isabella Bastaja <isabella@sorre.xyz> | 2026-08-29 12:09:06 +0200 |
|---|---|---|
| committer | Isabella Bastaja <isabella@sorre.xyz> | 2026-08-29 12:09:14 +0200 |
| commit | ae1666627566524c9d4dd311f4d70669742ba037 (patch) | |
| tree | 612c2f0f5aa43becb5a85293fece9951d64920fd /hosts/tower | |
| parent | 6d4ad63f9fc7720d38981681632de6359e62c666 (diff) | |
tower: implement navidrome backup service
Diffstat (limited to 'hosts/tower')
| -rw-r--r-- | hosts/tower/web/navidrome.nix | 33 |
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" ]; + }; } |
