biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / graphics / imagej / default.nix
blob37fed43765ea680956c9ed81ee5721bdfdfe81ef
1 { lib
2 , stdenv
3 , fetchurl
4 , glib
5 , jre
6 , unzip
7 , makeWrapper
8 , makeDesktopItem
9 , copyDesktopItems
10 , wrapGAppsHook3
13 let
14   icon = fetchurl {
15     url = "https://imagej.net/media/icons/imagej.png";
16     sha256 = "sha256-nU2nWI1wxZB/xlOKsZzdUjj+qiCTjO6GwEKYgZ5Risg=";
17   };
18 in stdenv.mkDerivation rec {
19   pname = "imagej";
20   version = "153";
22   src = fetchurl {
23     url = "https://wsr.imagej.net/distros/cross-platform/ij${version}.zip";
24     sha256 = "sha256-MGuUdUDuW3s/yGC68rHr6xxzmYScUjdXRawDpc1UQqw=";
25   };
26   nativeBuildInputs = [ copyDesktopItems makeWrapper unzip wrapGAppsHook3 ];
27   buildInputs = [ glib ];
28   dontWrapGApps = true;
30   desktopItems = lib.optionals stdenv.hostPlatform.isLinux [
31     (makeDesktopItem {
32       name = "ImageJ";
33       desktopName = "ImageJ";
34       icon = "imagej";
35       categories = [ "Science" "Utility" "Graphics" ];
36       exec = "imagej";
37     })
38   ];
40   passthru = {
41     inherit jre;
42   };
44   # JAR files that are intended to be used by other packages
45   # should go to $out/share/java.
46   # (Some uses ij.jar as a library not as a standalone program.)
47   installPhase = ''
48     runHook preInstall
50     mkdir -p $out/share/java $out/bin
51     # Read permisssion suffices for the jar and others.
52     # Simple cp shall clear suid bits, if any.
53     cp ij.jar $out/share/java
54     cp -dR luts macros plugins $out/share
56     runHook postInstall
57   '';
59   postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
60     makeWrapper ${jre}/bin/java $out/bin/imagej \
61       ''${gappsWrapperArgs[@]} \
62       --add-flags "-jar $out/share/java/ij.jar -ijpath $out/share"
64     install -Dm644 ${icon} $out/share/icons/hicolor/128x128/apps/imagej.png
65     substituteInPlace $out/share/applications/ImageJ.desktop \
66       --replace Exec=imagej Exec=$out/bin/imagej
67   '';
69   meta = with lib; {
70     homepage = "https://imagej.nih.gov/ij/";
71     description = "Image processing and analysis in Java";
72     longDescription = ''
73       ImageJ is a public domain Java image processing program
74       inspired by NIH Image for the Macintosh.
75       It runs on any computer with a Java 1.4 or later virtual machine.
76     '';
77     sourceProvenance = with sourceTypes; [ binaryBytecode ];
78     license = licenses.publicDomain;
79     platforms = platforms.unix;
80     maintainers = with maintainers; [ yuriaisaka ];
81     mainProgram = "imagej";
82   };