{
  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.
      '';
    };
  }