From b15a0717824cf31080fcd4b4bd6593903ee90c0d Mon Sep 17 00:00:00 2001 From: Noah Masur <7386960+nmasur@users.noreply.github.com> Date: Mon, 14 Jul 2025 21:45:08 -0600 Subject: [PATCH] initial navidrome setup --- flake.nix | 1 + .../nmasur/presets/services/navidrome.nix | 43 +++++++++++++++++++ .../nixos/modules/nmasur/profiles/nas.nix | 1 + 3 files changed, 45 insertions(+) create mode 100644 platforms/nixos/modules/nmasur/presets/services/navidrome.nix diff --git a/flake.nix b/flake.nix index c1d709c..da923e7 100644 --- a/flake.nix +++ b/flake.nix @@ -132,6 +132,7 @@ metrics = "metrics.${baseName}"; minecraft = "minecraft.${baseName}"; n8n = "n8n.${baseName}"; + navidrome = "music.${baseName}"; notifications = "ntfy.${baseName}"; paperless = "paper.${baseName}"; photos = "photos.${baseName}"; diff --git a/platforms/nixos/modules/nmasur/presets/services/navidrome.nix b/platforms/nixos/modules/nmasur/presets/services/navidrome.nix new file mode 100644 index 0000000..da5a523 --- /dev/null +++ b/platforms/nixos/modules/nmasur/presets/services/navidrome.nix @@ -0,0 +1,43 @@ +# Navidrome is a self-hosted music streaming service. This means I can play +# files from my server to devices. + +{ config, lib, ... }: + +let + inherit (config.nmasur.settings) hostnames; + cfg = config.nmasur.presets.services.navidrome; +in + +{ + + options.nmasur.presets.services.navidrome.enable = lib.mkEnableOption "Navidrome music streaming"; + + config = lib.mkIf cfg.enable { + + services.navidrome = { + enable = true; + settings = { + MusicFolder = "/data/audio/music"; + EnableInsightsCollector = false; + }; + }; + + # Configure Cloudflare DNS to point to this machine + services.cloudflare-dyndns.domains = [ hostnames.navidrome ]; + + # Allow web traffic to Caddy + nmasur.presets.services.caddy.routes = [ + { + match = [ { host = [ hostnames.navidrome ]; } ]; + handle = [ + { + handler = "reverse_proxy"; + upstreams = [ + { dial = "localhost:${builtins.toString config.services.navidrome.settings.Port}"; } + ]; + } + ]; + } + ]; + }; +} diff --git a/platforms/nixos/modules/nmasur/profiles/nas.nix b/platforms/nixos/modules/nmasur/profiles/nas.nix index e86c9a7..d07411b 100644 --- a/platforms/nixos/modules/nmasur/profiles/nas.nix +++ b/platforms/nixos/modules/nmasur/profiles/nas.nix @@ -31,6 +31,7 @@ in immich.enable = lib.mkDefault true; jellyfin.enable = lib.mkDefault true; litestream.enable = lib.mkDefault true; + navidrome.enable = lib.mkDefault true; nextcloud.enable = lib.mkDefault true; nix-autoupgrade.enable = lib.mkDefault false; # Off by default for NAS paperless.enable = lib.mkDefault true;