From ae1666627566524c9d4dd311f4d70669742ba037 Mon Sep 17 00:00:00 2001 From: Isabella Bastaja Date: Sat, 29 Aug 2026 12:09:06 +0200 Subject: tower: implement navidrome backup service --- hosts/tower/web/navidrome.nix | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'hosts/tower') 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" ]; + }; } -- cgit v1.3.1