Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / misc / jetbrains-toolbox / default.nix
blobb3800d6c7e112332ee78e1c9bd811ebd2d2b2f85
1 { stdenv
2 , lib
3 , fetchzip
4 , copyDesktopItems
5 , makeDesktopItem
6 , makeWrapper
7 , runCommand
8 , appimageTools
9 , icu
11 let
12   pname = "jetbrains-toolbox";
13   version = "2.1.0.18144";
15   src = fetchzip {
16     url = "https://download.jetbrains.com/toolbox/jetbrains-toolbox-${version}.tar.gz";
17     sha256 = "sha256-K65naW+RWAy4uxQq2GQmL0kwCH+G73ez1kgTtnTwjEw=";
18     stripRoot = false;
19   };
21   appimageContents = runCommand "${pname}-extracted"
22     {
23       nativeBuildInputs = [ appimageTools.appimage-exec ];
24     }
25     ''
26       appimage-exec.sh -x $out ${src}/${pname}-${version}/${pname}
27     '';
29   appimage = appimageTools.wrapAppImage {
30     inherit pname version;
31     src = appimageContents;
32     extraPkgs = pkgs: (appimageTools.defaultFhsEnvArgs.targetPkgs pkgs);
33   };
35   desktopItem = makeDesktopItem {
36     name = "JetBrains Toolbox";
37     exec = "jetbrains-toolbox";
38     comment = "JetBrains Toolbox";
39     desktopName = "JetBrains Toolbox";
40     type = "Application";
41     icon = "jetbrains-toolbox";
42     terminal = false;
43     categories = [ "Development" ];
44     startupWMClass = "jetbrains-toolbox";
45     startupNotify = false;
46   };
48 stdenv.mkDerivation {
49   inherit pname version src appimage;
51   nativeBuildInputs = [ makeWrapper copyDesktopItems ];
53   installPhase = ''
54     runHook preInstall
56     install -Dm644 ${appimageContents}/.DirIcon $out/share/icons/hicolor/scalable/apps/jetbrains-toolbox.svg
57     makeWrapper ${appimage}/bin/${pname}-${version} $out/bin/${pname} \
58       --append-flags "--update-failed" \
59       --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [icu]}
61     runHook postInstall
62   '';
64   desktopItems = [ desktopItem ];
66   # Disabling the tests, this seems to be very difficult to test this app.
67   doCheck = false;
69   meta = with lib; {
70     description = "Jetbrains Toolbox";
71     homepage = "https://jetbrains.com/";
72     license = licenses.unfree;
73     maintainers = with maintainers; [ AnatolyPopov ];
74     platforms = [ "x86_64-linux" ];
75   };