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 1/3] 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; From 9d7ce47ac53c8ee8d702384a2c0254eb72a6a37b Mon Sep 17 00:00:00 2001 From: Noah Masur <7386960+nmasur@users.noreply.github.com> Date: Mon, 14 Jul 2025 21:54:17 -0600 Subject: [PATCH 2/3] add lidarr --- .../nmasur/presets/services/arr/arr.nix | 27 +++++++++++++++++++ .../presets/services/arr/lidarr-api-key.age | 17 ++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 platforms/nixos/modules/nmasur/presets/services/arr/lidarr-api-key.age diff --git a/platforms/nixos/modules/nmasur/presets/services/arr/arr.nix b/platforms/nixos/modules/nmasur/presets/services/arr/arr.nix index 15bd0f0..2c9d5aa 100644 --- a/platforms/nixos/modules/nmasur/presets/services/arr/arr.nix +++ b/platforms/nixos/modules/nmasur/presets/services/arr/arr.nix @@ -27,6 +27,11 @@ let url = "localhost:8989"; apiKey = config.secrets.sonarrApiKey.dest; }; + lidarr = { + exportarrPort = "9712"; + url = "localhost:8686"; + apiKey = config.secrets.lidarrApiKey.dest; + }; prowlarr = { exportarrPort = "9709"; url = "localhost:9696"; @@ -78,6 +83,9 @@ in readarr = { enable = true; }; + lidarr = { + enable = true; + }; }; # Allows shared group to read/write the sabnzbd directory @@ -133,6 +141,20 @@ in } ]; } + { + match = [ + { + host = [ hostnames.download ]; + path = [ "/lidarr*" ]; + } + ]; + handle = [ + { + handler = "reverse_proxy"; + upstreams = [ { dial = arrConfig.lidarr.url; } ]; + } + ]; + } { match = [ { @@ -252,6 +274,11 @@ in dest = "/var/private/sonarr-api"; prefix = "API_KEY="; }; + secrets.lidarrApiKey = { + source = ./lidarr-api-key.age; + dest = "/var/private/lidarr-api"; + prefix = "API_KEY="; + }; secrets.prowlarrApiKey = { source = ./prowlarr-api-key.age; dest = "/var/private/prowlarr-api"; diff --git a/platforms/nixos/modules/nmasur/presets/services/arr/lidarr-api-key.age b/platforms/nixos/modules/nmasur/presets/services/arr/lidarr-api-key.age new file mode 100644 index 0000000..b38eae4 --- /dev/null +++ b/platforms/nixos/modules/nmasur/presets/services/arr/lidarr-api-key.age @@ -0,0 +1,17 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyAxU2Qz +UVF6RUJiNG9BRENWY1VHcDdXeW5USFlKTkRwcWlCZDNENkdoR2tnClZaSUtEWk8y +MkZ3NytYQUxuMzE5eE9FQk43RzlNcHpObFl0MkYydEtCTjgKLT4gc3NoLWVkMjU1 +MTkgWXlTVU1RIFJkdUlVbVMzbnN1a21oaDI4OWxsN2ltWkwvRitVWDdzQUJ4MTJY +SlQ5VkkKREcvc0FjWjBCRGhoMXAvdnYrZjNRZG5YRGhRVXVsUUo0Vi9LSEFqeFJy +bwotPiBzc2gtZWQyNTUxOSBuanZYNUEgL1IwWHdkM1dENy9sTGRSekovTjhQdDlQ +TUZiWWp4L3hzV0J4UU5VQ2JUYwpRYmNVNkgvMnYrbm5oTVNrbCswN0NiTy8ybXds +SlJDV1pyd2cyZzNPM2VFCi0+IHNzaC1lZDI1NTE5IENxSU9VQSB6djZMV3RZSExZ +aUxTc1RvaW0wNG9NMzNsSHRwTXZ0YU8vTjZwQk9yL1RZCmN4bHN6Tzk3L3VwNjFN +YW1KWTVRTFdPMFdrTnJaRVpkUE8rZ0EyUlg1WmMKLT4gc3NoLWVkMjU1MTkgejFP +Y1p3IFhDeVAvK0FnMVNTSjVZSlZKeWNqSE1CSlQrVVdYWnFoYkQvTjZkMlN4aUUK +aitIdjhZUTVkS28yR2ZCNnhkVmxUNmk2ZmhQL0tUKzBMVGVlWGVzQ2prcwotLS0g +bUZjL1NiZ3lDVlJzTFd0RFBjRE1rN1FjbkVYWWlTQkFVcmx5SXIxOGo4SQpXl52N +dLPyUQ4BMRaADS4GoGSX537AP/OkCgP1LEEN+YBuJju+LhrHMcWtmikNRvokEjhI +1pKbomELawBu7Q== +-----END AGE ENCRYPTED FILE----- From 019f8ae01b2e32464fdcc682967192799342c7a2 Mon Sep 17 00:00:00 2001 From: Noah Masur <7386960+nmasur@users.noreply.github.com> Date: Sat, 19 Jul 2025 14:23:03 +0000 Subject: [PATCH 3/3] lidarr tweaks --- .../presets/services/arr/lidarr-api-key.age | 30 +++++++++---------- .../modules/nmasur/profiles/shared-media.nix | 1 + 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/platforms/nixos/modules/nmasur/presets/services/arr/lidarr-api-key.age b/platforms/nixos/modules/nmasur/presets/services/arr/lidarr-api-key.age index b38eae4..dcc7605 100644 --- a/platforms/nixos/modules/nmasur/presets/services/arr/lidarr-api-key.age +++ b/platforms/nixos/modules/nmasur/presets/services/arr/lidarr-api-key.age @@ -1,17 +1,17 @@ -----BEGIN AGE ENCRYPTED FILE----- -YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyAxU2Qz -UVF6RUJiNG9BRENWY1VHcDdXeW5USFlKTkRwcWlCZDNENkdoR2tnClZaSUtEWk8y -MkZ3NytYQUxuMzE5eE9FQk43RzlNcHpObFl0MkYydEtCTjgKLT4gc3NoLWVkMjU1 -MTkgWXlTVU1RIFJkdUlVbVMzbnN1a21oaDI4OWxsN2ltWkwvRitVWDdzQUJ4MTJY -SlQ5VkkKREcvc0FjWjBCRGhoMXAvdnYrZjNRZG5YRGhRVXVsUUo0Vi9LSEFqeFJy -bwotPiBzc2gtZWQyNTUxOSBuanZYNUEgL1IwWHdkM1dENy9sTGRSekovTjhQdDlQ -TUZiWWp4L3hzV0J4UU5VQ2JUYwpRYmNVNkgvMnYrbm5oTVNrbCswN0NiTy8ybXds -SlJDV1pyd2cyZzNPM2VFCi0+IHNzaC1lZDI1NTE5IENxSU9VQSB6djZMV3RZSExZ -aUxTc1RvaW0wNG9NMzNsSHRwTXZ0YU8vTjZwQk9yL1RZCmN4bHN6Tzk3L3VwNjFN -YW1KWTVRTFdPMFdrTnJaRVpkUE8rZ0EyUlg1WmMKLT4gc3NoLWVkMjU1MTkgejFP -Y1p3IFhDeVAvK0FnMVNTSjVZSlZKeWNqSE1CSlQrVVdYWnFoYkQvTjZkMlN4aUUK -aitIdjhZUTVkS28yR2ZCNnhkVmxUNmk2ZmhQL0tUKzBMVGVlWGVzQ2prcwotLS0g -bUZjL1NiZ3lDVlJzTFd0RFBjRE1rN1FjbkVYWWlTQkFVcmx5SXIxOGo4SQpXl52N -dLPyUQ4BMRaADS4GoGSX537AP/OkCgP1LEEN+YBuJju+LhrHMcWtmikNRvokEjhI -1pKbomELawBu7Q== +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBjUGJG +dDZiN3RkMzV2WlFUd3Vsam5IV3ZqajN2VFVvdUFiNFVIdVZRZzE0CkplWlBrRndG +SEIxa0pGaFAzWmFEOGlIUTM2K2I0VWUyQ1pKbVcvd1I5UDAKLT4gc3NoLWVkMjU1 +MTkgWXlTVU1RIFRuVXp3dTNHaDhWNTVmN2tLd1FXaUttT1VqL2I1dktWaW45VnN2 +TlVZd2MKYlpEdWFJNmRtNWcxMDVndExIY21icjY2c252QmJnekorNnFnZHRCcHQr +dwotPiBzc2gtZWQyNTUxOSBuanZYNUEgd3hZNDZwWDg0UnFlNndqazFNNDB0bkxx +RTVTamR1Nk51VkREVVlRTjEybwpGVXJEUFFuYXpEQzRHeWJqRTMrUUpIYmhtT2NY +SUQyeGwrYjBKdW9ucThjCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBVdFB6ZndMb3Zx +dTV5L2Z1Nk9rQVRHWkozcG01cW9zZUFTUW5HaDV1TWtvCnE4MUtTV0laalIwbVNJ +NlU0K0JJcGMyN3ZSVXpVU1BteDVIVU9BYU9ZeG8KLT4gc3NoLWVkMjU1MTkgejFP +Y1p3IGhCbWhHbG9WWU9CR3RkTVEyNUE1akM3Q0hGZEx1cURSRitIbi9vZXRMZ3cK +clR6bjljTU9FS0UzdC9seDlad1E1aHZ5QXNiQmRWWDc5L0NQSkRsVUYyNAotLS0g +ZEMwTE83MWxYMUYzWVdiSXNxM1BoOEJNMzJHS3o4M1NzWXMyQWZwR3dDVQpp8Lb0 +E1vJN/UjSubXuFGT9NqLCYhc2n20m4v6sM7h4HYRh10pngyxapyN9DvUvY0maPpm +S9afVD6V/XjxOUZ2lA== -----END AGE ENCRYPTED FILE----- diff --git a/platforms/nixos/modules/nmasur/profiles/shared-media.nix b/platforms/nixos/modules/nmasur/profiles/shared-media.nix index cec70f2..2aa4154 100644 --- a/platforms/nixos/modules/nmasur/profiles/shared-media.nix +++ b/platforms/nixos/modules/nmasur/profiles/shared-media.nix @@ -25,6 +25,7 @@ in audiobookshelf.group = "shared"; bazarr.group = "shared"; jellyfin.group = "shared"; + lidarr.group = "shared"; radarr.group = "shared"; readarr.group = "shared"; sabnzbd.group = "shared";