From 0f7637f12e2d208a55bdbfe622f06c14fe5ffb1d Mon Sep 17 00:00:00 2001 From: emaryn Date: Sat, 22 Feb 2025 12:28:31 +0800 Subject: [PATCH 1/6] jetbrains-toolbox: format (cherry picked from commit d5a0735a4b18cbc66a46761c89803724c6c7f514) --- pkgs/by-name/je/jetbrains-toolbox/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/je/jetbrains-toolbox/package.nix b/pkgs/by-name/je/jetbrains-toolbox/package.nix index 02041695eb18..e5d50b25d690 100644 --- a/pkgs/by-name/je/jetbrains-toolbox/package.nix +++ b/pkgs/by-name/je/jetbrains-toolbox/package.nix @@ -77,11 +77,11 @@ stdenv.mkDerivation { ''; }; - meta = with lib; { + meta = { description = "Jetbrains Toolbox"; homepage = "https://jetbrains.com/"; - license = licenses.unfree; - maintainers = with maintainers; [ AnatolyPopov ]; + license = lib.licenses.unfree; + maintainers = with lib.maintainers; [ AnatolyPopov ]; platforms = [ "x86_64-linux" ]; mainProgram = "jetbrains-toolbox"; }; From 04d5f166315ec4b7630137d7667d4543e62e09e1 Mon Sep 17 00:00:00 2001 From: emaryn Date: Sat, 22 Feb 2025 12:31:36 +0800 Subject: [PATCH 2/6] jetbrains-toolbox: fix update script (cherry picked from commit 6e833513a814ba4b5e4cfe21dd2334e3bc06ae2e) --- pkgs/by-name/je/jetbrains-toolbox/package.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/je/jetbrains-toolbox/package.nix b/pkgs/by-name/je/jetbrains-toolbox/package.nix index e5d50b25d690..7610bffd00a3 100644 --- a/pkgs/by-name/je/jetbrains-toolbox/package.nix +++ b/pkgs/by-name/je/jetbrains-toolbox/package.nix @@ -9,6 +9,7 @@ icu, genericUpdater, writeShellScript, + jq, }: let pname = "jetbrains-toolbox"; @@ -73,7 +74,7 @@ stdenv.mkDerivation { passthru.updateScript = genericUpdater { versionLister = writeShellScript "jetbrains-toolbox-versionLister" '' curl -Ls 'https://data.services.jetbrains.com/products?code=TBA&release.type=release' \ - | jq -r '.[] | .releases | flatten[] | .build' + | ${lib.getExe jq} -r '.[] | .releases | flatten[] | .build' ''; }; From b666152be4e9d83dd3b94c50528cc5230c7bc644 Mon Sep 17 00:00:00 2001 From: emaryn Date: Sat, 22 Feb 2025 04:32:17 +0000 Subject: [PATCH 3/6] jetbrains-toolbox: 2.5.1.34629 -> 2.5.3.37797 (cherry picked from commit 00266d92665706645e97d9c7b5a6911bcb52c521) --- pkgs/by-name/je/jetbrains-toolbox/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/je/jetbrains-toolbox/package.nix b/pkgs/by-name/je/jetbrains-toolbox/package.nix index 7610bffd00a3..fed644312822 100644 --- a/pkgs/by-name/je/jetbrains-toolbox/package.nix +++ b/pkgs/by-name/je/jetbrains-toolbox/package.nix @@ -13,11 +13,11 @@ }: let pname = "jetbrains-toolbox"; - version = "2.5.1.34629"; + version = "2.5.3.37797"; src = fetchzip { url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}.tar.gz"; - hash = "sha256-YaMlvgktoa738grHarJX2Uh5PZ7qHuASyJBcUhMssEI="; + hash = "sha256-BMSVigKiR7HgBqaebKvBk0OnyqiYQk562IIzN/6xu2I="; stripRoot = false; }; From 13e5e68f9425268c161978205e97e1a9308158c5 Mon Sep 17 00:00:00 2001 From: Marc Wagner Date: Thu, 27 Feb 2025 21:08:24 +0100 Subject: [PATCH 4/6] jetbrains-toolbox: 2.5.3.37797 -> 2.5.4.38621 (cherry picked from commit e81d326b9c1a54f0d9f384204621e80a88391285) --- pkgs/by-name/je/jetbrains-toolbox/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/je/jetbrains-toolbox/package.nix b/pkgs/by-name/je/jetbrains-toolbox/package.nix index fed644312822..f9985c5bf3ad 100644 --- a/pkgs/by-name/je/jetbrains-toolbox/package.nix +++ b/pkgs/by-name/je/jetbrains-toolbox/package.nix @@ -13,11 +13,11 @@ }: let pname = "jetbrains-toolbox"; - version = "2.5.3.37797"; + version = "2.5.4.38621"; src = fetchzip { url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}.tar.gz"; - hash = "sha256-BMSVigKiR7HgBqaebKvBk0OnyqiYQk562IIzN/6xu2I="; + hash = "sha256-FQTw6LPLJV+lV546rFOi/503PuErJs4T5q9MNWwGYEs="; stripRoot = false; }; From 77070abb9edb99d225201d966b70ebf20be0720c Mon Sep 17 00:00:00 2001 From: emaryn Date: Thu, 10 Apr 2025 22:02:05 +0800 Subject: [PATCH 5/6] jetbrains-toolbox: support more platforms (cherry picked from commit 3b6e8ad1f96682fc52271378c2e3411bea7cc31a) --- pkgs/by-name/je/jetbrains-toolbox/package.nix | 169 ++++++++++-------- pkgs/by-name/je/jetbrains-toolbox/update.sh | 41 +++++ 2 files changed, 138 insertions(+), 72 deletions(-) create mode 100755 pkgs/by-name/je/jetbrains-toolbox/update.sh diff --git a/pkgs/by-name/je/jetbrains-toolbox/package.nix b/pkgs/by-name/je/jetbrains-toolbox/package.nix index f9985c5bf3ad..618b19bf11cc 100644 --- a/pkgs/by-name/je/jetbrains-toolbox/package.nix +++ b/pkgs/by-name/je/jetbrains-toolbox/package.nix @@ -1,89 +1,114 @@ { - stdenv, lib, - fetchzip, - copyDesktopItems, - makeWrapper, - runCommand, + stdenv, appimageTools, + fetchzip, + fetchurl, + makeWrapper, icu, - genericUpdater, - writeShellScript, - jq, + undmg, }: + let pname = "jetbrains-toolbox"; version = "2.5.4.38621"; - src = fetchzip { - url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}.tar.gz"; - hash = "sha256-FQTw6LPLJV+lV546rFOi/503PuErJs4T5q9MNWwGYEs="; - stripRoot = false; - }; - - appimageContents = - runCommand "${pname}-extracted" - { - nativeBuildInputs = [ appimageTools.appimage-exec ]; - } - '' - appimage-exec.sh -x $out ${src}/jetbrains-toolbox-${version}/jetbrains-toolbox - - # 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; - }; -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/jetbrains-toolbox $out/bin/jetbrains-toolbox \ - --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; - - passthru.updateScript = genericUpdater { - versionLister = writeShellScript "jetbrains-toolbox-versionLister" '' - curl -Ls 'https://data.services.jetbrains.com/products?code=TBA&release.type=release' \ - | ${lib.getExe jq} -r '.[] | .releases | flatten[] | .build' - ''; - }; + passthru.updateScript = ./update.sh; meta = { description = "Jetbrains Toolbox"; homepage = "https://jetbrains.com/"; license = lib.licenses.unfree; maintainers = with lib.maintainers; [ AnatolyPopov ]; - platforms = [ "x86_64-linux" ]; + platforms = [ + "aarch64-linux" + "aarch64-darwin" + "x86_64-linux" + "x86_64-darwin" + ]; mainProgram = "jetbrains-toolbox"; }; -} + + selectSystem = + attrs: + attrs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + + linux = appimageTools.wrapAppImage rec { + inherit + pname + version + passthru + meta + ; + + src = appimageTools.extractType2 { + inherit pname version; + src = + let + arch = selectSystem { + x86_64-linux = ""; + aarch64-linux = "-arm64"; + }; + in + fetchzip { + url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}${arch}.tar.gz"; + hash = selectSystem { + x86_64-linux = "sha256-rq0Hn9g+/u9C8vbEVH2mv62c1dvxr+t9tBhf26swQgI="; + aarch64-linux = "sha256-52wFejaKBSg/eeJu3NDGl1AdZLsJdi/838YeROD4Loc="; + }; + } + + "/jetbrains-toolbox"; + postExtract = '' + patchelf --add-rpath ${lib.makeLibraryPath [ icu ]} $out/jetbrains-toolbox + ''; + }; + + nativeBuildInputs = [ makeWrapper ]; + + extraInstallCommands = '' + install -Dm644 ${src}/jetbrains-toolbox.desktop $out/share/applications/jetbrains-toolbox.desktop + install -Dm644 ${src}/.DirIcon $out/share/icons/hicolor/scalable/apps/jetbrains-toolbox.svg + wrapProgram $out/bin/jetbrains-toolbox \ + --append-flags "--update-failed" + ''; + }; + + darwin = stdenv.mkDerivation (finalAttrs: { + inherit + pname + version + passthru + meta + ; + + src = + let + arch = selectSystem { + x86_64-darwin = ""; + aarch64-darwin = "-arm64"; + }; + in + fetchurl { + url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${finalAttrs.version}${arch}.dmg"; + hash = selectSystem { + x86_64-darwin = "sha256-y0zXQEqY5lj/e440dRtyBfaw8CwqqgzO3Ujreb37Z/I="; + aarch64-darwin = "sha256-9Bj5puG9NUHO53oXBRlB5DvX9jGTmrkDgjV2QPH9qg0="; + }; + }; + + nativeBuildInputs = [ undmg ]; + + sourceRoot = "JetBrains Toolbox.app"; + + installPhase = '' + runHook preInstall + + mkdir -p $out/Applications $out/bin + cp -r . $out/Applications/"JetBrains Toolbox.app" + ln -s $out/Applications/"JetBrains Toolbox.app"/Contents/MacOS/jetbrains-toolbox $out/bin/jetbrains-toolbox + + runHook postInstall + ''; + }); +in +if stdenv.hostPlatform.isDarwin then darwin else linux diff --git a/pkgs/by-name/je/jetbrains-toolbox/update.sh b/pkgs/by-name/je/jetbrains-toolbox/update.sh new file mode 100755 index 000000000000..a6b1d812c9d9 --- /dev/null +++ b/pkgs/by-name/je/jetbrains-toolbox/update.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p bash nix curl coreutils jq common-updater-scripts + +set -eou pipefail + +latestVersion=$(curl -Ls 'https://data.services.jetbrains.com/products?code=TBA&release.type=release' | jq -r '.[0].releases | flatten | .[0].build') +currentVersion=$(nix-instantiate --eval -E "with import ./. {}; jetbrains-toolbox.version or (lib.getVersion jetbrains-toolbox)" | tr -d '"') + +echo "latest version: $latestVersion" +echo "current version: $currentVersion" + +if [[ "$latestVersion" == "$currentVersion" ]]; then + echo "package is up-to-date" + exit 0 +fi + +linux_systems=( + "x86_64-linux:" + "aarch64-linux:-arm64" +) + +for entry in "${linux_systems[@]}"; do + arch="${entry%%:*}" + suffix="${entry#*:}" + prefetch=$(nix-prefetch-url --unpack "https://download.jetbrains.com/toolbox/jetbrains-toolbox-$latestVersion$suffix.tar.gz") + hash=$(nix hash convert --hash-algo sha256 --to sri $prefetch) + update-source-version jetbrains-toolbox $latestVersion $hash --system=$arch --ignore-same-version +done + +darwin_systems=( + "x86_64-darwin:" + "aarch64-darwin:-arm64" +) + +for entry in "${darwin_systems[@]}"; do + arch="${entry%%:*}" + suffix="${entry#*:}" + prefetch=$(nix-prefetch-url "https://download.jetbrains.com/toolbox/jetbrains-toolbox-$latestVersion$suffix.dmg") + hash=$(nix hash convert --hash-algo sha256 --to sri $prefetch) + update-source-version jetbrains-toolbox $latestVersion $hash --system=$arch --ignore-same-version +done From 3f91b780c6f1b594cfeb1f64cd134542e4458275 Mon Sep 17 00:00:00 2001 From: emaryn Date: Thu, 24 Apr 2025 23:45:41 +0800 Subject: [PATCH 6/6] jetbrains-toolbox: 2.5.4.38621 -> 2.6.1.40902 (cherry picked from commit 93d2a0e824ce196b622cabf9c437c9de27d7ac18) --- pkgs/by-name/je/jetbrains-toolbox/package.nix | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/pkgs/by-name/je/jetbrains-toolbox/package.nix b/pkgs/by-name/je/jetbrains-toolbox/package.nix index 618b19bf11cc..d52400feecd1 100644 --- a/pkgs/by-name/je/jetbrains-toolbox/package.nix +++ b/pkgs/by-name/je/jetbrains-toolbox/package.nix @@ -11,9 +11,9 @@ let pname = "jetbrains-toolbox"; - version = "2.5.4.38621"; + version = "2.6.1.40902"; - passthru.updateScript = ./update.sh; + updateScript = ./update.sh; meta = { description = "Jetbrains Toolbox"; @@ -34,30 +34,26 @@ let attrs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); linux = appimageTools.wrapAppImage rec { - inherit - pname - version - passthru - meta - ; + inherit pname version meta; + + source = + let + arch = selectSystem { + x86_64-linux = ""; + aarch64-linux = "-arm64"; + }; + in + fetchzip { + url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}${arch}.tar.gz"; + hash = selectSystem { + x86_64-linux = "sha256-P4kv6ca6mGtl334HKNkdo9Iib/Cgu3ROrbQKlQqxUj4="; + aarch64-linux = "sha256-mG8GAVPi2I0A13rKhXoXxiRIHK1QOWPv4gZxfm0+DKs="; + }; + }; src = appimageTools.extractType2 { inherit pname version; - src = - let - arch = selectSystem { - x86_64-linux = ""; - aarch64-linux = "-arm64"; - }; - in - fetchzip { - url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}${arch}.tar.gz"; - hash = selectSystem { - x86_64-linux = "sha256-rq0Hn9g+/u9C8vbEVH2mv62c1dvxr+t9tBhf26swQgI="; - aarch64-linux = "sha256-52wFejaKBSg/eeJu3NDGl1AdZLsJdi/838YeROD4Loc="; - }; - } - + "/jetbrains-toolbox"; + src = source + "/jetbrains-toolbox"; postExtract = '' patchelf --add-rpath ${lib.makeLibraryPath [ icu ]} $out/jetbrains-toolbox ''; @@ -71,15 +67,15 @@ let wrapProgram $out/bin/jetbrains-toolbox \ --append-flags "--update-failed" ''; + + passthru = { + src = source; + inherit updateScript; + }; }; darwin = stdenv.mkDerivation (finalAttrs: { - inherit - pname - version - passthru - meta - ; + inherit pname version meta; src = let @@ -91,8 +87,8 @@ let fetchurl { url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${finalAttrs.version}${arch}.dmg"; hash = selectSystem { - x86_64-darwin = "sha256-y0zXQEqY5lj/e440dRtyBfaw8CwqqgzO3Ujreb37Z/I="; - aarch64-darwin = "sha256-9Bj5puG9NUHO53oXBRlB5DvX9jGTmrkDgjV2QPH9qg0="; + x86_64-darwin = "sha256-Dw1CqthgvKIlHrcQIoOpYbAG5c6uvq/UgzaO4n25YJY="; + aarch64-darwin = "sha256-b/z8Pq8h6n34junSMyxRS3Y/TQ3tu05Bh77xlvMvEtI="; }; }; @@ -109,6 +105,10 @@ let runHook postInstall ''; + + passthru = { + inherit updateScript; + }; }); in if stdenv.hostPlatform.isDarwin then darwin else linux