From 6b3a78c5cf300d0ead7778c65a6ed8aa402f52fc Mon Sep 17 00:00:00 2001
From: matt1432 <matt@nelim.org>
Date: Sat, 22 Mar 2025 14:38:35 -0400
Subject: [PATCH] feat(comics): add jdownloader2 webui

---
 .../cluster/modules/caddy/default.nix         |  6 +++++
 configurations/nos/modules/comics/default.nix |  1 +
 .../modules/comics/jdownloader2/default.nix   | 27 +++++++++++++++++++
 .../jdownloader2/images/jdownloader2.nix      |  8 ++++++
 4 files changed, 42 insertions(+)
 create mode 100644 configurations/nos/modules/comics/jdownloader2/default.nix
 create mode 100644 configurations/nos/modules/comics/jdownloader2/images/jdownloader2.nix

diff --git a/configurations/cluster/modules/caddy/default.nix b/configurations/cluster/modules/caddy/default.nix
index b62877a9..4e4f153c 100644
--- a/configurations/cluster/modules/caddy/default.nix
+++ b/configurations/cluster/modules/caddy/default.nix
@@ -148,6 +148,12 @@ in {
               radarr.reverseProxy = "${nosIP}:7878";
               sonarr.reverseProxy = "${nosIP}:8989";
 
+              jdownloader2 = {
+                subDirName = "jd2";
+                experimental = true;
+                reverseProxy = "${nosIP}:5800";
+              };
+
               qbittorent = {
                 subDirName = "qbt";
                 experimental = true;
diff --git a/configurations/nos/modules/comics/default.nix b/configurations/nos/modules/comics/default.nix
index 1514f59a..fdbb6e1a 100644
--- a/configurations/nos/modules/comics/default.nix
+++ b/configurations/nos/modules/comics/default.nix
@@ -1,5 +1,6 @@
 {...}: {
   imports = [
+    ./jdownloader2
     ./komga
   ];
 }
diff --git a/configurations/nos/modules/comics/jdownloader2/default.nix b/configurations/nos/modules/comics/jdownloader2/default.nix
new file mode 100644
index 00000000..0864bf04
--- /dev/null
+++ b/configurations/nos/modules/comics/jdownloader2/default.nix
@@ -0,0 +1,27 @@
+{
+  config,
+  mainUser,
+  pkgs,
+  ...
+}: {
+  virtualisation.docker.compose."jdownloader2".services."jdownloader2" = {
+    image = pkgs.callPackage ./images/jdownloader2.nix pkgs;
+    restart = "always";
+
+    environment = {
+      USER_ID = toString config.users.users.${mainUser}.uid;
+      GROUP_ID = toString config.users.users.${mainUser}.uid;
+      KEEP_APP_RUNNING = 1;
+      TZ = "America/New_York";
+    };
+
+    ports = [
+      "5800:5800"
+    ];
+
+    volumes = [
+      "/var/lib/jdownloader2:/config:rw"
+      "/data/downloads/comics:/output:rw"
+    ];
+  };
+}
diff --git a/configurations/nos/modules/comics/jdownloader2/images/jdownloader2.nix b/configurations/nos/modules/comics/jdownloader2/images/jdownloader2.nix
new file mode 100644
index 00000000..019af3d7
--- /dev/null
+++ b/configurations/nos/modules/comics/jdownloader2/images/jdownloader2.nix
@@ -0,0 +1,8 @@
+pkgs:
+pkgs.dockerTools.pullImage rec {
+  imageName = "docker.io/jlesage/jdownloader-2";
+  imageDigest = "sha256:a597e25a5be386cac5519f2fc705eadb786727f9f0f2c7440fb5585efa41973f";
+  hash = "sha256-kZRMR1cv5jad+BQkxgvuKIcVod42neszkU9/RPh7BNY=";
+  finalImageName = imageName;
+  finalImageTag = "latest";
+}