mirror of
https://github.com/nickolaj-jepsen/nixos.git
synced 2026-01-22 16:16: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 = {
|
||||
"radarr.nickolaj.com".allowed_groups = ["arr"];
|
||||
"sonarr.nickolaj.com".allowed_groups = ["arr"];
|
||||
"lidarr.nickolaj.com".allowed_groups = ["arr"];
|
||||
"prowlarr.nickolaj.com".allowed_groups = ["arr"];
|
||||
"sabnzbd.nickolaj.com".allowed_groups = ["arr"];
|
||||
"bazarr.nickolaj.com".allowed_groups = ["arr"];
|
||||
|
|
@ -42,6 +43,7 @@ in {
|
|||
nginx.virtualHosts = {
|
||||
"radarr.nickolaj.com" = mkVirtualHost 7878;
|
||||
"sonarr.nickolaj.com" = mkVirtualHost 8989;
|
||||
"lidarr.nickolaj.com" = mkVirtualHost 8686;
|
||||
"prowlarr.nickolaj.com" = mkVirtualHost 9696;
|
||||
"sabnzbd.nickolaj.com" = mkVirtualHost 8080;
|
||||
"bazarr.nickolaj.com" = mkVirtualHost config.services.bazarr.listenPort;
|
||||
|
|
@ -51,6 +53,7 @@ in {
|
|||
paths = [
|
||||
"/var/lib/radarr"
|
||||
"/var/lib/sonarr"
|
||||
"/var/lib/lidarr"
|
||||
"/var/lib/prowlarr"
|
||||
"/var/lib/sabnzbd"
|
||||
"/var/lib/bazarr"
|
||||
|
|
@ -76,6 +79,10 @@ in {
|
|||
inherit user group;
|
||||
enable = true;
|
||||
};
|
||||
lidarr = {
|
||||
inherit user group;
|
||||
enable = true;
|
||||
};
|
||||
bazarr = {
|
||||
inherit user group;
|
||||
enable = true;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
./home-assistant
|
||||
./jellyfin.nix
|
||||
./nextcloud.nix
|
||||
./navidrome.nix
|
||||
./nginx.nix
|
||||
./plex.nix
|
||||
./postgres.nix
|
||||
|
|
|
|||
|
|
@ -204,6 +204,12 @@ in {
|
|||
icon = "sh:jellyfin";
|
||||
same-tab = true;
|
||||
}
|
||||
{
|
||||
title = "Navidrome";
|
||||
url = "https://navidrome.nickolaj.com";
|
||||
icon = "sh:navidrome";
|
||||
same-tab = true;
|
||||
}
|
||||
{
|
||||
title = "Audiobookshelf";
|
||||
url = "https://audiobookshelf.nickolaj.com";
|
||||
|
|
@ -234,6 +240,12 @@ in {
|
|||
icon = "sh:radarr";
|
||||
same-tab = true;
|
||||
}
|
||||
{
|
||||
title = "Lidarr";
|
||||
url = "https://lidarr.nickolaj.com";
|
||||
icon = "sh:lidarr";
|
||||
same-tab = true;
|
||||
}
|
||||
{
|
||||
title = "SABnzbd";
|
||||
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 -"
|
||||
];
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue