From 25dace8529bcc700262976407722a9edc81a67d6 Mon Sep 17 00:00:00 2001
From: ibizaman <ibizapeanut@gmail.com>
Date: Mon, 8 Apr 2024 23:18:17 -0700
Subject: [PATCH] use variable for arr configs

---
 modules/services/arr.nix | 87 ++++++++++++++++++++++++++--------------
 1 file changed, 56 insertions(+), 31 deletions(-)

diff --git a/modules/services/arr.nix b/modules/services/arr.nix
index caf61cc..e4ca042 100644
--- a/modules/services/arr.nix
+++ b/modules/services/arr.nix
@@ -382,7 +382,11 @@ in
   options.shb.arr = lib.listToAttrs (lib.mapAttrsToList appOption apps);
 
   config = lib.mkMerge ([
-    (lib.mkIf cfg.radarr.enable ({
+    (lib.mkIf cfg.radarr.enable (
+    let
+      cfg' = cfg.radarr;
+    in
+    {
       services.nginx.enable = true;
 
       services.radarr = {
@@ -395,22 +399,26 @@ in
       };
 
       systemd.services.radarr.preStart = shblib.replaceSecrets {
-        userConfig = cfg.radarr.settings;
+        userConfig = cfg'.settings;
         resultPath = "${config.services.radarr.dataDir}/config.xml";
         generator = apps.radarr.settingsFormat.generate;
       };
 
-      shb.nginx.autheliaProtect = [ (autheliaProtect {} config.shb.arr.radarr) ];
+      shb.nginx.autheliaProtect = [ (autheliaProtect {} cfg') ];
 
-      shb.backup.instances.radarr = cfg.radarr.backupCfg // {
+      shb.backup.instances.radarr = cfg'.backupCfg // {
         sourceDirectories = [
-          config.shb.arr.radarr.dataDir
+          cfg'.dataDir
         ];
         excludePatterns = [".db-shm" ".db-wal" ".mono"];
       };
     } // backup "radarr"))
 
-    (lib.mkIf cfg.sonarr.enable ({
+    (lib.mkIf cfg.sonarr.enable (
+    let
+      cfg' = cfg.sonarr;
+    in
+    {
       services.nginx.enable = true;
 
       services.sonarr = {
@@ -420,47 +428,56 @@ in
       users.users.sonarr = {
         extraGroups = [ "media" ];
       };
+
       systemd.services.sonarr.preStart = shblib.replaceSecrets {
-        userConfig = cfg.sonarr.settings;
+        userConfig = cfg'.settings;
         resultPath = "${config.services.sonarr.dataDir}/config.xml";
         generator = apps.sonarr.settingsFormat.generate;
       };
 
-      shb.nginx.autheliaProtect = [ (autheliaProtect {} config.shb.arr.sonarr) ];
+      shb.nginx.autheliaProtect = [ (autheliaProtect {} cfg') ];
 
-      shb.backup.instances.sonarr = cfg.sonarr.backupCfg // {
+      shb.backup.instances.sonarr = cfg'.backupCfg // {
         sourceDirectories = [
-          config.shb.arr.sonarr.dataDir
+          cfg'.dataDir
         ];
         excludePatterns = [".db-shm" ".db-wal" ".mono"];
       };
     } // backup "sonarr"))
 
-    (lib.mkIf cfg.bazarr.enable ({
+    (lib.mkIf cfg.bazarr.enable (
+    let
+      cfg' = cfg.bazarr;
+    in
+    {
       services.bazarr = {
         enable = true;
-        listenPort = cfg.bazarr.settings.Port;
+        listenPort = cfg'.settings.Port;
       };
       users.users.bazarr = {
         extraGroups = [ "media" ];
       };
       systemd.services.bazarr.preStart = shblib.replaceSecrets {
-        userConfig = cfg.bazarr.settings;
+        userConfig = cfg'.settings;
         resultPath = "/var/lib/${config.systemd.services.bazarr.serviceConfig.StateDirectory}/config.xml";
         generator = apps.bazarr.settingsFormat.generate;
       };
 
-      shb.nginx.autheliaProtect = [ (autheliaProtect {} config.shb.arr.bazarr) ];
+      shb.nginx.autheliaProtect = [ (autheliaProtect {} cfg') ];
 
-      shb.backup.instances.bazarr = cfg.bazarr.backupCfg // {
+      shb.backup.instances.bazarr = cfg'.backupCfg // {
         sourceDirectories = [
-          config.shb.arr.bazarr.dataDir
+          cfg'.dataDir
         ];
         excludePatterns = [".db-shm" ".db-wal" ".mono"];
       };
     } // backup "bazarr"))
 
-    (lib.mkIf cfg.readarr.enable ({
+    (lib.mkIf cfg.readarr.enable (
+    let
+      cfg' = cfg.readarr;
+    in
+    {
       services.readarr = {
         enable = true;
         dataDir = "/var/lib/readarr";
@@ -469,22 +486,26 @@ in
         extraGroups = [ "media" ];
       };
       systemd.services.readarr.preStart = shblib.replaceSecrets {
-        userConfig = cfg.readarr.settings;
+        userConfig = cfg'.settings;
         resultPath = "${config.services.readarr.dataDir}/config.xml";
         generator = apps.readarr.settingsFormat.generate;
       };
 
-      shb.nginx.autheliaProtect = [ (autheliaProtect {} config.shb.arr.readarr) ];
+      shb.nginx.autheliaProtect = [ (autheliaProtect {} cfg') ];
 
-      shb.backup.instances.readarr = cfg.readarr.backupCfg // {
+      shb.backup.instances.readarr = cfg'.backupCfg // {
         sourceDirectories = [
-          config.shb.arr.readarr.dataDir
+          cfg'.dataDir
         ];
         excludePatterns = [".db-shm" ".db-wal" ".mono"];
       };
     } // backup "readarr"))
 
-    (lib.mkIf cfg.lidarr.enable ({
+    (lib.mkIf cfg.lidarr.enable (
+    let
+      cfg' = cfg.lidarr;
+    in
+    {
       services.lidarr = {
         enable = true;
         dataDir = "/var/lib/lidarr";
@@ -493,22 +514,26 @@ in
         extraGroups = [ "media" ];
       };
       systemd.services.lidarr.preStart = shblib.replaceSecrets {
-        userConfig = cfg.lidarr.settings;
+        userConfig = cfg'.settings;
         resultPath = "${config.services.lidarr.dataDir}/config.xml";
         generator = apps.lidarr.settingsFormat.generate;
       };
 
-      shb.nginx.autheliaProtect = [ (autheliaProtect {} config.shb.arr.lidarr) ];
+      shb.nginx.autheliaProtect = [ (autheliaProtect {} cfg') ];
 
-      shb.backup.instances.lidarr = cfg.lidarr.backupCfg // {
+      shb.backup.instances.lidarr = cfg'.backupCfg // {
         sourceDirectories = [
-          config.shb.arr.lidarr.dataDir
+          cfg'.dataDir
         ];
         excludePatterns = [".db-shm" ".db-wal" ".mono"];
       };
     } // backup "lidarr"))
 
-    (lib.mkIf cfg.jackett.enable ({
+    (lib.mkIf cfg.jackett.enable (
+    let
+      cfg' = cfg.jackett;
+    in
+    {
       services.jackett = {
         enable = true;
         dataDir = "/var/lib/jackett";
@@ -517,18 +542,18 @@ in
         extraGroups = [ "media" ];
       };
       systemd.services.jackett.preStart = shblib.replaceSecrets {
-        userConfig = cfg.jackett.settings;
+        userConfig = cfg'.settings;
         resultPath = "${config.services.jackett.dataDir}/config.xml";
         generator = apps.jackett.settingsFormat.generate;
       };
 
       shb.nginx.autheliaProtect = [ (autheliaProtect {
         extraBypassResources = [ "^/dl.*" ];
-      } config.shb.arr.jackett) ];
+      } cfg') ];
 
-      shb.backup.instances.jackett = cfg.jackett.backupCfg // {
+      shb.backup.instances.jackett = cfg'.backupCfg // {
         sourceDirectories = [
-          config.shb.arr.jackett.dataDir
+          cfg'.dataDir
         ];
         excludePatterns = [".db-shm" ".db-wal" ".mono"];
       };