about summary refs log tree commit diff
path: root/pkgs/by-name/je
diff options
context:
space:
mode:
authorPol Dellaiera <pol.dellaiera@protonmail.com>2024-04-02 21:15:08 +0200
committerPol Dellaiera <pol.dellaiera@protonmail.com>2024-04-02 21:15:08 +0200
commit8484ed14b748cc79b8b2c5e9a67c4af5dcabc13b (patch)
treea7fa9c34d87d96c0d02e2ff32211ae0be56366e6 /pkgs/by-name/je
parentac9983e7765f6b5e452429912d156ff1fa7bd4db (diff)
jetbrains-toolbox: move to `pkgs/by-name`
Diffstat (limited to 'pkgs/by-name/je')
-rw-r--r--pkgs/by-name/je/jetbrains-toolbox/package.nix70
1 files changed, 70 insertions, 0 deletions
diff --git a/pkgs/by-name/je/jetbrains-toolbox/package.nix b/pkgs/by-name/je/jetbrains-toolbox/package.nix
new file mode 100644
index 0000000000000..6019ffed2b89b
--- /dev/null
+++ b/pkgs/by-name/je/jetbrains-toolbox/package.nix
@@ -0,0 +1,70 @@
+{ stdenv
+, lib
+, fetchzip
+, copyDesktopItems
+, makeWrapper
+, runCommand
+, appimageTools
+, icu
+}:
+let
+  pname = "jetbrains-toolbox";
+  version = "2.2.3.20090";
+
+  src = fetchzip {
+    url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}.tar.gz";
+    sha256 = "sha256-SqxQF5pG61CySsDzdZ1P2C9cCe/B145D0S+T4NByif8=";
+    stripRoot = false;
+  };
+
+  appimageContents = runCommand "${pname}-extracted"
+    {
+      nativeBuildInputs = [ appimageTools.appimage-exec ];
+    }
+    ''
+      appimage-exec.sh -x $out ${src}/${pname}-${version}/${pname}
+
+      # JetBrains ship a broken desktop file. Despite registering a custom
+      # scheme handler for jetbrains:// URLs, they never mark the command as
+      # being suitable for passing URLs to. Ergo, the handler never receives
+      # its payload. This causes various things to break, including login.
+      # Reported upstream at: https://youtrack.jetbrains.com/issue/TBX-11478/
+      sed -Ei '/^Exec=/s/( %U)?$/ %U/' $out/jetbrains-toolbox.desktop
+    '';
+
+  appimage = appimageTools.wrapAppImage {
+    inherit pname version;
+    src = appimageContents;
+    extraPkgs = pkgs: (appimageTools.defaultFhsEnvArgs.targetPkgs pkgs);
+  };
+in
+stdenv.mkDerivation {
+  inherit pname version src appimage;
+
+  nativeBuildInputs = [ makeWrapper copyDesktopItems ];
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm644 ${appimageContents}/.DirIcon $out/share/icons/hicolor/scalable/apps/jetbrains-toolbox.svg
+    makeWrapper ${appimage}/bin/${pname}-${version} $out/bin/${pname} \
+      --append-flags "--update-failed" \
+      --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [icu]}
+
+    runHook postInstall
+  '';
+
+  desktopItems = [ "${appimageContents}/jetbrains-toolbox.desktop" ];
+
+  # Disabling the tests, this seems to be very difficult to test this app.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Jetbrains Toolbox";
+    homepage = "https://jetbrains.com/";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ AnatolyPopov ];
+    platforms = [ "x86_64-linux" ];
+    mainProgram = "jetbrains-toolbox";
+  };
+}