From 200dbb9ed171ba2604570d1569a4548f7532aa22 Mon Sep 17 00:00:00 2001 From: soraefir Date: Thu, 4 Jun 2026 01:10:15 +0200 Subject: [PATCH] fix servarr --- modules/server/containers/apps/servarr.nix | 47 +++++++++++----------- systems/sandbox/cfg.nix | 1 + 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/modules/server/containers/apps/servarr.nix b/modules/server/containers/apps/servarr.nix index a7611ce..e8929fd 100644 --- a/modules/server/containers/apps/servarr.nix +++ b/modules/server/containers/apps/servarr.nix @@ -1,7 +1,6 @@ { config, containerCfg, pkgs, lib, builder, name, ... }: let serverCfg = config.syscfg.server; - defaultModules = ["prowlarr" "sonarr" "radarr" "flaresolverr" ]; mkServarrImage = appName: appPkg: binaryPath: pkgs.dockerTools.streamLayeredImage { name = appPkg.name; @@ -43,7 +42,7 @@ in ]; containers = { - }// lib.optionalAttrs (builtins.elem "prowlarr" (containerCfg.extra.modules or defaultModules)) { + }// lib.optionalAttrs (builtins.elem "prowlarr" (containerCfg.extra.modules)) { prowlarr = builder.mkContainer { authentik = true; tmpfs = true; @@ -66,7 +65,7 @@ in overrides.volumes = sharedVolumes ++ [ "${serverCfg.path.config}/servarr/prowlarr:/config" ]; }; - }// lib.optionalAttrs (builtins.elem "radarr" (containerCfg.extra.modules or defaultModules)) { + }// lib.optionalAttrs (builtins.elem "radarr" (containerCfg.extra.modules)) { radarr = builder.mkContainer { authentik = true; tmpfs = true; @@ -89,7 +88,7 @@ in overrides.volumes = sharedVolumes ++ [ "${serverCfg.path.config}/servarr/radarr:/config" ]; }; - }// lib.optionalAttrs (builtins.elem "sonarr" (containerCfg.extra.modules or defaultModules)) { + }// lib.optionalAttrs (builtins.elem "sonarr" (containerCfg.extra.modules)) { sonarr = builder.mkContainer { authentik = true; tmpfs = true; @@ -112,7 +111,7 @@ in overrides.volumes = sharedVolumes ++ [ "${serverCfg.path.config}/servarr/sonarr:/config" ]; }; - }// lib.optionalAttrs (builtins.elem "lidarr" (containerCfg.extra.modules or defaultModules)) { + }// lib.optionalAttrs (builtins.elem "lidarr" (containerCfg.extra.modules )) { lidarr = builder.mkContainer { authentik = true; tmpfs = true; @@ -135,15 +134,15 @@ in overrides.volumes = sharedVolumes ++ [ "${serverCfg.path.config}/servarr/lidarr:/config" ]; }; - }// lib.optionalAttrs (builtins.elem "readarr" (containerCfg.extra.modules or defaultModules)) { + }// lib.optionalAttrs (builtins.elem "readarr" (containerCfg.extra.modules)) { readarr = throw "Not Implemented"; - }// lib.optionalAttrs (builtins.elem "mylarr" (containerCfg.extra.modules or defaultModules)) { + }// lib.optionalAttrs (builtins.elem "mylarr" (containerCfg.extra.modules)) { mylarr = throw "Not Implemented"; - }// lib.optionalAttrs (builtins.elem "bazarr" (containerCfg.extra.modules or defaultModules)) { + }// lib.optionalAttrs (builtins.elem "bazarr" (containerCfg.extra.modules)) { bazarr = throw "Not Implemented"; - }// lib.optionalAttrs (builtins.elem "seerr" (containerCfg.extra.modules or defaultModules)) { + }// lib.optionalAttrs (builtins.elem "seerr" (containerCfg.extra.modules)) { seerr = throw "Not Implemented"; - }// lib.optionalAttrs (builtins.elem "flaresolverr" (containerCfg.extra.modules or defaultModules)) { + }// lib.optionalAttrs (builtins.elem "flaresolverr" (containerCfg.extra.modules)) { flaresolverr = builder.mkContainer { image = "ghcr.io/flaresolverr/flaresolverr:latest"; port = 8191; @@ -158,10 +157,10 @@ in envFile = config.sops.secrets."SERVARR".path; script = pkgs.writeShellScript "setup-servarr" '' - ${lib.optionalString (builtins.elem "prowlarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "prowlarr" (containerCfg.extra.modules)) '' echo "Prowlarr Setup - START" PROWLARR_URL="https://${containerCfg.subdomain}.${serverCfg.domain}/prowlarr" - ${lib.optionalString (builtins.elem "flaresolverr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "flaresolverr" (containerCfg.extra.modules)) '' PROWL_TAG=$(${pkgs.curl}/bin/curl -s -X GET "$PROWLARR_URL/api/v1/tag" \ -H "X-Api-Key: $PROWLARR__AUTH__APIKEY" -H 'X-Prowlarr-Client: true' \ -H 'Accept: application/json' -H 'Content-Type: application/json') @@ -190,7 +189,7 @@ in -H "X-Api-Key: $PROWLARR__AUTH__APIKEY" -H 'X-Prowlarr-Client: true' \ -H 'Accept: application/json' -H 'Content-Type: application/json') - ${lib.optionalString (builtins.elem "sonarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "sonarr" (containerCfg.extra.modules)) '' if ! echo "$PROWL_APPS" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .name == "Sonarr")' > /dev/null; then echo "Prowlarr Setup - Sonarr" ${pkgs.curl}/bin/curl -s -X POST "$PROWLARR_URL/api/v1/applications" \ @@ -199,7 +198,7 @@ in -d '{"syncLevel":"fullSync","enable":true,"fields":[{"name":"prowlarrUrl","value":"http://servarr-prowlarr:8989/prowlarr"},{"name":"baseUrl","value":"http://servarr-sonarr:8989/sonarr"},{"name":"apiKey","value":"'"$SONARR__AUTH__APIKEY"'"},{"name":"syncCategories","value":[5000,5010,5020,5030,5040,5045,5050,5090]},{"name":"animeSyncCategories","value":[5070]},{"name":"syncAnimeStandardFormatSearch","value":true},{"name":"syncRejectBlocklistedTorrentHashesWhileGrabbing","value":false}],"implementationName":"Sonarr","implementation":"Sonarr","configContract":"SonarrSettings","infoLink":"https://wiki.servarr.com/prowlarr/supported#sonarr","tags":[],"name":"Sonarr"}' fi ''} - ${lib.optionalString (builtins.elem "lidarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "lidarr" (containerCfg.extra.modules)) '' if ! echo "$PROWL_APPS" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .name == "Lidarr")' > /dev/null; then echo "Prowlarr Setup - Lidarr" ${pkgs.curl}/bin/curl -s -X POST "$PROWLARR_URL/api/v1/applications" \ @@ -208,7 +207,7 @@ in -d '{"syncLevel":"fullSync","enable":true,"fields":[{"name":"prowlarrUrl","value":"http://servarr-prowlarr:8989/prowlarr"},{"name":"baseUrl","value":"http://servarr-lidarr:8989/lidarr"},{"name":"apiKey","value":"'"$LIDARR__AUTH__APIKEY"'"},{"name":"syncCategories","value":[3000,3010,3030,3040,3050,3060]},{"name":"syncRejectBlocklistedTorrentHashesWhileGrabbing","value":false}],"implementationName":"Lidarr","implementation":"Lidarr","configContract":"LidarrSettings","infoLink":"https://wiki.servarr.com/prowlarr/supported#lidarr","tags":[],"name":"Lidarr"}' fi ''} - ${lib.optionalString (builtins.elem "radarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "radarr" (containerCfg.extra.modules)) '' if ! echo "$PROWL_APPS" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .name == "Radarr")' > /dev/null; then echo "Prowlarr Setup - Radarr" ${pkgs.curl}/bin/curl -s -X POST "$PROWLARR_URL/api/v1/applications" \ @@ -217,12 +216,12 @@ in -d '{"syncLevel":"fullSync","enable":true,"fields":[{"name":"prowlarrUrl","value":"http://servarr-prowlarr:8989/prowlarr"},{"name":"baseUrl","value":"http://servarr-radarr:8989/radarr"},{"name":"apiKey","value":"'"$RADARR__AUTH__APIKEY"'"},{"name":"syncCategories","value":[2000,2010,2020,2030,2040,2045,2050,2060,2070,2080,2090]},{"name":"syncRejectBlocklistedTorrentHashesWhileGrabbing","value":false}],"implementationName":"Radarr","implementation":"Radarr","configContract":"RadarrSettings","infoLink":"https://wiki.servarr.com/prowlarr/supported#radarr","tags":[],"name":"Radarr"}' fi ''} - ${lib.optionalString (builtins.elem "mylarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "mylarr" (containerCfg.extra.modules)) '' if ! echo "$PROWL_APPS" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .name == "Mylar")' > /dev/null; then echo "Prowlarr Setup - Mylarr" fi ''} - ${lib.optionalString (builtins.elem "readarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "readarr" (containerCfg.extra.modules)) '' if ! echo "$PROWL_APPS" | ${pkgs.jq}/bin/jq -e 'any(.[]? ; .name == "Readarr")' > /dev/null; then echo "Prowlarr Setup - Readarr" fi @@ -292,7 +291,7 @@ in ''} - ${lib.optionalString (builtins.elem "sonarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "sonarr" (containerCfg.extra.modules)) '' echo "Sonarr Setup - START" SONARR_URL="https://${containerCfg.subdomain}.${serverCfg.domain}/sonarr" @@ -399,7 +398,7 @@ in ''} - ${lib.optionalString (builtins.elem "radarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "radarr" (containerCfg.extra.modules)) '' echo "Radarr Setup - START" RADARR_URL="https://${containerCfg.subdomain}.${serverCfg.domain}/radarr" @@ -506,15 +505,15 @@ in ''} - ${lib.optionalString (builtins.elem "lidarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "lidarr" (containerCfg.extra.modules)) '' ''} - ${lib.optionalString (builtins.elem "readarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "readarr" (containerCfg.extra.modules)) '' ''} - ${lib.optionalString (builtins.elem "mylarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "mylarr" (containerCfg.extra.modules)) '' ''} - ${lib.optionalString (builtins.elem "bazarr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "bazarr" (containerCfg.extra.modules)) '' ''} - ${lib.optionalString (builtins.elem "seerr" (containerCfg.extra.modules or defaultModules)) '' + ${lib.optionalString (builtins.elem "seerr" (containerCfg.extra.modules)) '' ''} ''; diff --git a/systems/sandbox/cfg.nix b/systems/sandbox/cfg.nix index 919f67c..56e555a 100644 --- a/systems/sandbox/cfg.nix +++ b/systems/sandbox/cfg.nix @@ -47,6 +47,7 @@ invidious.subdomain = "yt"; jellyfin.subdomain = "flix"; servarr.subdomain = "arr"; + servarr.extra.modules = ["prowlarr" "sonarr" "radarr" "flaresolverr" ]; transmission = { subdomain = "arr"; subpath = "transmission"; }; handbrake = { subdomain = "arr"; subpath = "hb"; }; # ===== DEV =====