mirror of
https://github.com/nickolaj-jepsen/nixos.git
synced 2026-01-22 08:06:50 +01:00
feat: add navidrome
This commit is contained in:
parent
eb97443b3d
commit
c16d6d1b4d
6 changed files with 96 additions and 0 deletions
|
|
@ -35,6 +35,7 @@ in {
|
||||||
oauth2-proxy.nginx.virtualHosts = {
|
oauth2-proxy.nginx.virtualHosts = {
|
||||||
"radarr.nickolaj.com".allowed_groups = ["arr"];
|
"radarr.nickolaj.com".allowed_groups = ["arr"];
|
||||||
"sonarr.nickolaj.com".allowed_groups = ["arr"];
|
"sonarr.nickolaj.com".allowed_groups = ["arr"];
|
||||||
|
"lidarr.nickolaj.com".allowed_groups = ["arr"];
|
||||||
"prowlarr.nickolaj.com".allowed_groups = ["arr"];
|
"prowlarr.nickolaj.com".allowed_groups = ["arr"];
|
||||||
"sabnzbd.nickolaj.com".allowed_groups = ["arr"];
|
"sabnzbd.nickolaj.com".allowed_groups = ["arr"];
|
||||||
"bazarr.nickolaj.com".allowed_groups = ["arr"];
|
"bazarr.nickolaj.com".allowed_groups = ["arr"];
|
||||||
|
|
@ -42,6 +43,7 @@ in {
|
||||||
nginx.virtualHosts = {
|
nginx.virtualHosts = {
|
||||||
"radarr.nickolaj.com" = mkVirtualHost 7878;
|
"radarr.nickolaj.com" = mkVirtualHost 7878;
|
||||||
"sonarr.nickolaj.com" = mkVirtualHost 8989;
|
"sonarr.nickolaj.com" = mkVirtualHost 8989;
|
||||||
|
"lidarr.nickolaj.com" = mkVirtualHost 8686;
|
||||||
"prowlarr.nickolaj.com" = mkVirtualHost 9696;
|
"prowlarr.nickolaj.com" = mkVirtualHost 9696;
|
||||||
"sabnzbd.nickolaj.com" = mkVirtualHost 8080;
|
"sabnzbd.nickolaj.com" = mkVirtualHost 8080;
|
||||||
"bazarr.nickolaj.com" = mkVirtualHost config.services.bazarr.listenPort;
|
"bazarr.nickolaj.com" = mkVirtualHost config.services.bazarr.listenPort;
|
||||||
|
|
@ -51,6 +53,7 @@ in {
|
||||||
paths = [
|
paths = [
|
||||||
"/var/lib/radarr"
|
"/var/lib/radarr"
|
||||||
"/var/lib/sonarr"
|
"/var/lib/sonarr"
|
||||||
|
"/var/lib/lidarr"
|
||||||
"/var/lib/prowlarr"
|
"/var/lib/prowlarr"
|
||||||
"/var/lib/sabnzbd"
|
"/var/lib/sabnzbd"
|
||||||
"/var/lib/bazarr"
|
"/var/lib/bazarr"
|
||||||
|
|
@ -76,6 +79,10 @@ in {
|
||||||
inherit user group;
|
inherit user group;
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
lidarr = {
|
||||||
|
inherit user group;
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
bazarr = {
|
bazarr = {
|
||||||
inherit user group;
|
inherit user group;
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
./home-assistant
|
./home-assistant
|
||||||
./jellyfin.nix
|
./jellyfin.nix
|
||||||
./nextcloud.nix
|
./nextcloud.nix
|
||||||
|
./navidrome.nix
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./plex.nix
|
./plex.nix
|
||||||
./postgres.nix
|
./postgres.nix
|
||||||
|
|
|
||||||
|
|
@ -204,6 +204,12 @@ in {
|
||||||
icon = "sh:jellyfin";
|
icon = "sh:jellyfin";
|
||||||
same-tab = true;
|
same-tab = true;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
title = "Navidrome";
|
||||||
|
url = "https://navidrome.nickolaj.com";
|
||||||
|
icon = "sh:navidrome";
|
||||||
|
same-tab = true;
|
||||||
|
}
|
||||||
{
|
{
|
||||||
title = "Audiobookshelf";
|
title = "Audiobookshelf";
|
||||||
url = "https://audiobookshelf.nickolaj.com";
|
url = "https://audiobookshelf.nickolaj.com";
|
||||||
|
|
@ -234,6 +240,12 @@ in {
|
||||||
icon = "sh:radarr";
|
icon = "sh:radarr";
|
||||||
same-tab = true;
|
same-tab = true;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
title = "Lidarr";
|
||||||
|
url = "https://lidarr.nickolaj.com";
|
||||||
|
icon = "sh:lidarr";
|
||||||
|
same-tab = true;
|
||||||
|
}
|
||||||
{
|
{
|
||||||
title = "SABnzbd";
|
title = "SABnzbd";
|
||||||
url = "https://sabnzbd.nickolaj.com";
|
url = "https://sabnzbd.nickolaj.com";
|
||||||
|
|
|
||||||
58
modules/homelab/navidrome.nix
Normal file
58
modules/homelab/navidrome.nix
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgsUnstable,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
lib.mkIf config.fireproof.homelab.enable (let
|
||||||
|
domain = "navidrome.nickolaj.com";
|
||||||
|
in {
|
||||||
|
age.secrets.navidrome-env.rekeyFile = ../../secrets/hosts/homelab/navidrome-env.age;
|
||||||
|
|
||||||
|
services.restic.backups.homelab.paths = ["/var/lib/navidrome"];
|
||||||
|
|
||||||
|
services.oauth2-proxy.nginx.virtualHosts."${domain}".allowed_groups = ["default"];
|
||||||
|
|
||||||
|
services.nginx.virtualHosts."${domain}" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://localhost:4533/";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
extraConfig = ''
|
||||||
|
auth_request_set $email $upstream_http_x_auth_request_email;
|
||||||
|
proxy_set_header Remote-User $email;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
locations."^~ /rest" = {
|
||||||
|
proxyPass = "http://localhost:4533";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
extraConfig = ''
|
||||||
|
auth_request off;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.navidrome = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgsUnstable.navidrome;
|
||||||
|
user = "media";
|
||||||
|
group = "media";
|
||||||
|
environmentFile = config.age.secrets.navidrome-env.path;
|
||||||
|
settings = {
|
||||||
|
Address = "127.0.0.1";
|
||||||
|
Port = 4533;
|
||||||
|
MusicFolder = "/mnt/data/music";
|
||||||
|
ScanSchedule = "@every 1m";
|
||||||
|
LogLevel = "info";
|
||||||
|
"ExtAuth.Enabled" = true;
|
||||||
|
"ExtAuth.TrustedSources" = "127.0.0.1/32";
|
||||||
|
"ExtAuth.UserHeader" = "Remote-User";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /mnt/data/music 0775 media media -"
|
||||||
|
"Z /var/lib/navidrome 0750 media media -"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 uxq+Zw G43zU8Bc1xcX4Pm/+pLT1CfhPikNtI/hMJqNh/u183o
|
||||||
|
Y+ce9JA+bxJ22P2j+3ouAu3UGw+fEy++uuH2HStXZJM
|
||||||
|
-> Us;4;Zi.-grease
|
||||||
|
nMe8j9RaWaK/MB09igNgyiZ6O1E9l5DMb6/Wny1Q29f83h0zSYhpcGsUKiDNDUnT
|
||||||
|
c21SGAjizVHu6Z8/puWRaTtwwEd89zpOUtruGNYHKgq3bXSssJFuVZlzSFno
|
||||||
|
--- Kfq5bT2zU65mLR/e1dzjg6wbVUeAD4j4MgW41gzolKM
|
||||||
|
*
|
||||||
|
àœ!ßoiàõT{Èrëãu£$"E’bEØE‰M’ʼÅA®Å¯KGê7tZðèùnf¹¦°Ë%yÓN»²ûHoL]á##b<\ï…~óN”-Pû·‹Àv_<C592>DÙ,;&/ñؼÍëϱ9èÛŒ
Â-yZ½Ó)¬ «›
|
||||||
9
secrets/hosts/homelab/navidrome-env.age
Normal file
9
secrets/hosts/homelab/navidrome-env.age
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> X25519 bPfMaICL+3Yo+CuDJPjQN7TJ5qZeeLwnl1TUATu4oxQ
|
||||||
|
VN1N3/VVa7IFr63gch6cnWhFYKYiyxyXW0G6bPJvdGY
|
||||||
|
-> piv-p256 q3LNVw AyGL7IbZcedMl+eLiFbI3/5PHPwNm7OHFP1xfVYDnbG2
|
||||||
|
uncsFtZHyg5fJi2CEZQkMqE8uiXi732Hesznxaip1f4
|
||||||
|
-> ]~7j|W-grease
|
||||||
|
t5BfDdAbHkgAWJ56ip2t4plT6BdWd3h81jOU
|
||||||
|
--- 8K3WaiKk00MQ46kuRagBUq5WXprPc0L8yxCzSXZX8VI
|
||||||
|
‹8×yh8-6I\õPâo!ÌæÔíÒla²œpqe¾6¾ø+<2B>[Ábj±ü³–ô{1ÉÅ¡$ûïßœ'Zéoá‘=Ž0šœ
;©Ê»—¢ø,ù»7³®§Ú;•J’N[íҮʣÞÌpbâï-"p,3vuÒí<C392><C3AD>ˆNƒ;8H
‰±Qž
|
||||||
Loading…
Add table
Add a link
Reference in a new issue