{ lib , stdenv , fetchurl , jre , unzip , makeWrapper , makeDesktopItem , copyDesktopItems }: let icon = fetchurl { url = "https://imagej.net/media/icons/imagej.png"; sha256 = "sha256-nU2nWI1wxZB/xlOKsZzdUjj+qiCTjO6GwEKYgZ5Risg="; }; in stdenv.mkDerivation rec { pname = "imagej"; version = "153"; src = fetchurl { url = "https://wsr.imagej.net/distros/cross-platform/ij${version}.zip"; sha256 = "sha256-MGuUdUDuW3s/yGC68rHr6xxzmYScUjdXRawDpc1UQqw="; }; nativeBuildInputs = [ copyDesktopItems makeWrapper unzip ]; desktopItems = lib.optionals stdenv.isLinux [ (makeDesktopItem { name = "ImageJ"; desktopName = "ImageJ"; icon = "imagej"; categories = "Science;Utility;Graphics;"; exec = "imagej"; }) ]; passthru = { inherit jre; }; # JAR files that are intended to be used by other packages # should go to $out/share/java. # (Some uses ij.jar as a library not as a standalone program.) installPhase = '' runHook preInstall mkdir -p $out/share/java $out/bin # Read permisssion suffices for the jar and others. # Simple cp shall clear suid bits, if any. cp ij.jar $out/share/java cp -dR luts macros plugins $out/share makeWrapper ${jre}/bin/java $out/bin/imagej \ --add-flags "-jar $out/share/java/ij.jar -ijpath $out/share" runHook postInstall ''; postFixup = lib.optionalString stdenv.isLinux '' install -Dm644 ${icon} $out/share/icons/hicolor/128x128/apps/imagej.png substituteInPlace $out/share/applications/ImageJ.desktop \ --replace Exec=imagej Exec=$out/bin/imagej ''; meta = with lib; { homepage = "https://imagej.nih.gov/ij/"; description = "Image processing and analysis in Java"; longDescription = '' ImageJ is a public domain Java image processing program inspired by NIH Image for the Macintosh. It runs on any computer with a Java 1.4 or later virtual machine. ''; license = licenses.publicDomain; platforms = platforms.unix; maintainers = with maintainers; [ yuriaisaka ]; }; }