add navidrome integrations

This commit is contained in:
Noah Masur
2025-07-20 22:12:48 +00:00
parent 98c18420ec
commit fb80f6d98d
2 changed files with 26 additions and 0 deletions

View File

@ -0,0 +1,20 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBwVzM0
bElnSVdUTjFBT1BEWEJrUDRXMHNIVVVLbEJLNFFVcFZHcUlVcDNJCllmTWpNWDJz
ckVyMGV2T1VUbnZHejNqOGdBdEh6TEU2MnNPeTM1aVFlaDgKLT4gc3NoLWVkMjU1
MTkgWXlTVU1RIE1DR1BjdlZ5eUxQZlBaTXNUN2ZhcjRMSk1IcXlEMWRxRHBzL29o
YWl5Z28KREU0YUcwZ3JrZDFNN3FBUWJDUnVoRjlSQ0x0aDVEWWhBZnVGR3pGbFBO
SQotPiBzc2gtZWQyNTUxOSBuanZYNUEganNXRDBESFM0MGN4WjlQSmgxNlRMU2tD
YW5LS05PNEpIakFjQW1yV3VsWQp0d0VCdUdyY1VLd0RIcmQ0RkQ5QkE5bWZhZnBk
REIwYW5rMFl2VysxVjQwCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBnYm1TYU5rQkFH
UDVrQ0NkVTBmV3A3ektyVWt4Y3E4V2ZwUS9KZFpkcjFBCmZtd3FBSnN4K2o4QTFE
cEFCRHRiWjlZeDBQZFdVNmt6UkZQM3BDMlhCdkUKLT4gc3NoLWVkMjU1MTkgejFP
Y1p3IFJoaFp1azcvbllXdUxLSVhkclh6cmgrL1psOUlqNUZjRkNvZTNIdVp4eGcK
VWczN01seXhueEprQ3lVeE9Eazg2MGRjK0ZkMkpSQ3FoMFU2QURLZ0EzMAotLS0g
eng3TnlPeVI5L2FCWWpVM29iRGM2Ynpnck1yZlJSbExZL1NrME5qV3Y5RQoUmoxB
ehmbWdeYxoPQ+lNcQn6U84J2hsdB6PvEwDMLlCwwSeMJD8lJfH5MBzp4Mok2aFpM
WPdgVtWdo5AOqOJWv8iU4HJpvcNQCiUfCKjG4DpdS1xcZcgEj1RIxPjB1z2if49s
Vcnxe1My6ZGCu99AD9U2haJb40ZyjRotHhmDZ6TYZU277qaoWwGnDG/ZgRortN3W
I4iS4bfn+KUflctnir5cRxcLFRDj9+ut+USHBO0hTCldckTEGFnlG8En0EjR4emH
QNhp5oz9jJK6p+mjnJFPGXOPTVnrsRkjAfQAsUZa8DdKJw==
-----END AGE ENCRYPTED FILE-----

View File

@ -0,0 +1,49 @@
# 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 {
secrets.navidrome-integrations = {
source = ./navidrome-integrations.age;
dest = "/var/private/navidrome-integrations";
};
services.navidrome = {
enable = true;
settings = {
MusicFolder = "/data/audio/music";
EnableInsightsCollector = false;
};
environmentFile = config.secrets.navidrome-integrations.dest;
};
# 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}"; }
];
}
];
}
];
};
}