diff --git a/packages/default.nix b/packages/default.nix
index dbbf509a..b5c888fe 100644
--- a/packages/default.nix
+++ b/packages/default.nix
@@ -17,6 +17,8 @@
 
     homepage = final.callPackage ./homepage {};
 
+    jdownloader-cli = final.callPackage ./jdownloader-cli {};
+
     jmusicbot = final.callPackage ./jmusicbot {};
 
     kapowarr = import ./kapowarr (final // inputs);
diff --git a/packages/jdownloader-cli/default.nix b/packages/jdownloader-cli/default.nix
new file mode 100644
index 00000000..57aad6b6
--- /dev/null
+++ b/packages/jdownloader-cli/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  installShellFiles,
+  ...
+}: let
+  pname = "jdownloader-cli";
+  rev = "0f32237df32dfddc4a577404ba93c7c9d79284c3";
+  version = "1.0.2+${builtins.substring 0 7 rev}";
+  mainProgram = "jdcli";
+in
+  buildGoModule {
+    inherit pname version;
+
+    src = fetchFromGitHub {
+      owner = "matt1432";
+      repo = pname;
+      inherit rev;
+      hash = "sha256-EZyXgd184NjK+eUKB4+Awc+aFrG6goyLfwZ0zVRyGLA=";
+    };
+
+    vendorHash = "sha256-lBxddgaW1s3xjGODZhlvYBmK1vC+IdmpztTgagOy7J4=";
+
+    nativeBuildInputs = [
+      installShellFiles
+    ];
+
+    postInstall = ''
+      mv $out/bin/cmd $out/bin/${mainProgram}
+
+      for shell in bash fish zsh; do
+          $out/bin/${mainProgram} completion $shell > ${mainProgram}.$shell
+          installShellCompletion ${mainProgram}.$shell
+      done
+    '';
+
+    meta = {
+      inherit mainProgram;
+      license = lib.licenses.asl20;
+      homepage = "https://github.com/rkosegi/jdownloader-cli";
+      description = ''
+        Command line interface to JDownloader based on jdownloader-go library.
+      '';
+    };
+  }