diff options
Diffstat (limited to 'modules/services/navidrome')
-rw-r--r-- | modules/services/navidrome/default.nix | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/modules/services/navidrome/default.nix b/modules/services/navidrome/default.nix new file mode 100644 index 0000000..87f7422 --- /dev/null +++ b/modules/services/navidrome/default.nix @@ -0,0 +1,42 @@ +{ config, pkgs, lib, ... }: +let + cfg = config.my.services.navidrome; + secrets = config.age.secrets; +in { + options.my.services.navidrome = with lib; { + enable = mkEnableOption "Navidrome Music Server"; + vhostName = mkOption { + type = types.str; + example = "music.fcuny.net"; + description = "Name for the virtual host"; + }; + musicFolder = mkOption { + type = types.str; + example = "/data/fast/music"; + description = "Music folder"; + }; + }; + + config = lib.mkIf cfg.enable { + services.navidrome = { + enable = true; + settings = { MusicFolder = cfg.musicFolder; }; + }; + + services.nginx.virtualHosts."${cfg.vhostName}" = { + forceSSL = true; + useACMEHost = cfg.vhostName; + locations."/" = { + proxyPass = "http://127.0.0.1:4533"; + proxyWebsockets = true; + }; + }; + + security.acme.certs."${cfg.vhostName}" = { + dnsProvider = "gcloud"; + credentialsFile = secrets."acme/credentials".path; + }; + + my.services.backup = { paths = [ "/var/lib/navidrome" ]; }; + }; +} |