Commit e1caa8b

HPCesia <me@hpcesia.com>
2026-04-25 04:17:35
feat: navidrome service
1 parent 8df1cb5
Changed files (3)
modules
hosts
mobius
services
pardofelis
services
services
modules/hosts/mobius/services/default.nix
@@ -29,6 +29,8 @@ in {
 
     <services/mihomo>
 
+    <services/navidrome>
+
     <services/podman>
 
     <services/restic>
modules/hosts/pardofelis/services/caddy.nix
@@ -10,6 +10,11 @@
         reverse_proxy localhost:${toString config.services.goatcounter.port}
       '';
 
+      "navidrome.hpcesia.com".extraConfig = ''
+        encode zstd gzip
+        reverse_proxy ${den.hosts.x86_64-linux.mobius.tailscaleIpv4}:4337
+      '';
+
       "repo.hpcesia.com".extraConfig = ''
         encode zstd gzip
         reverse_proxy http://localhost:${toString config.services.forgejo.settings.server.HTTP_PORT}
modules/services/navidrome.nix
@@ -0,0 +1,24 @@
+{lib, ...}: {
+  den.aspects.services.provides.navidrome = {host}: {
+    nixos = {config, ...}: let
+      useTailscaleIp = host.tailscaleIpv4 != null && config.services.tailscale.enable;
+    in {
+      services.navidrome = {
+        enable = true;
+        openFirewall = useTailscaleIp;
+        settings = {
+          Address =
+            if useTailscaleIp
+            then host.tailscaleIpv4
+            else "127.0.0.1";
+          Port = 4337;
+        };
+      };
+
+      services.restic.backups."${config.networking.hostName}-backup".paths =
+        lib.mkIf
+        (builtins.hasAttr "${config.networking.hostName}-backup" config.services.restic.backups)
+        ["/var/lib/navidrome/navidrome.db"];
+    };
+  };
+}