system/roles/music-library/streaming-server.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | {
config,
lib,
pkgs,
...
}:
let
inherit (config.networking) domain fqdn;
inherit (import ../../../data) homenet tailnet;
navidromeUpstream =
let
navidrome = config.services.navidrome.settings;
in
''
reverse_proxy ${navidrome.Address}:${toString navidrome.Port}
'';
in
{
services.navidrome = {
enable = true;
plugins = with pkgs.navidromePlugins; [
apple-music
];
settings = {
MusicFolder = "/srv/music/library";
Agents = "listenbrainz,deezer";
AutoTranscodeDownload = true;
DefaultTheme = "Auto";
EnableMediaFileCoverArt = false;
PreferSortTags = true;
TranscodingCacheSize = "1GiB";
Subsonic.AppendAlbumVersion = false;
Scanner = {
ScanOnStartup = false;
};
};
};
services.caddy.virtualHosts = {
"music.${domain}" = {
extraConfig = ''
${lib.optionalString (domain == homenet) ''
tls {
issuer internal {
ca home
}
}
''}
${navidromeUpstream}
'';
};
"music.${tailnet}" = {
extraConfig = ''
bind tailscale/music
tls {
get_certificate tailscale
}
${navidromeUpstream}
'';
};
};
services.dnsmasq.settings.cname = [
"music.${domain},${fqdn}"
];
}
|