From 487300c6aa99dfb373df194013ceee8c7b3792e9 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Fri, 25 Jun 2021 10:41:59 +0300 Subject: [PATCH 1/3] imagej: reformat expression - Use 1 line per input argument. - Don't use let ... in if not needed. - Use ${version} in url string. - Run hooks in explicit installPhase. (cherry picked from commit e1d6051d81835079f0e37e1d5fc5f029f32df512) --- pkgs/applications/graphics/imagej/default.nix | 93 ++++++++++--------- 1 file changed, 48 insertions(+), 45 deletions(-) diff --git a/pkgs/applications/graphics/imagej/default.nix b/pkgs/applications/graphics/imagej/default.nix index 65d3c9735df..5050669c524 100644 --- a/pkgs/applications/graphics/imagej/default.nix +++ b/pkgs/applications/graphics/imagej/default.nix @@ -1,48 +1,51 @@ -{ lib, stdenv, fetchurl, jre, unzip, makeWrapper }: +{ lib +, stdenv +, fetchurl +, jre +, unzip +, makeWrapper +}: -# Note: -# - User config dir is hard coded by upstream to $HOME/.imagej on linux systems -# and to $HOME/Library/Preferences on macOS. -# (The current trend appears to be to use $HOME/.config/imagej -# on linux systems, but we here do not attempt to fix it.) +stdenv.mkDerivation { + pname = "imagej"; + version = "150"; -let - imagej150 = stdenv.mkDerivation { - pname = "imagej"; - version = "150"; - - src = fetchurl { - url = "https://wsr.imagej.net/distros/cross-platform/ij150.zip"; - sha256 = "97aba6fc5eb908f5160243aebcdc4965726693cb1353d9c0d71b8f5dd832cb7b"; - }; - nativeBuildInputs = [ makeWrapper unzip ]; - 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 = '' - mkdir -p $out/share/java - # 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 - mkdir $out/bin - makeWrapper ${jre}/bin/java $out/bin/imagej \ - --add-flags "-jar $out/share/java/ij.jar -ijpath $out/share" - ''; - 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 = with platforms; linux ++ darwin; - maintainers = with maintainers; [ yuriaisaka ]; - }; + src = fetchurl { + url = "https://wsr.imagej.net/distros/cross-platform/ij${version}.zip"; + sha256 = "97aba6fc5eb908f5160243aebcdc4965726693cb1353d9c0d71b8f5dd832cb7b"; }; -in - imagej150 + nativeBuildInputs = [ makeWrapper unzip ]; + 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 + ''; + + 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 ]; + }; +} From d16a1e9975e566e299ae9b561c41be1ecb858515 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Fri, 25 Jun 2021 10:44:59 +0300 Subject: [PATCH 2/3] imagej: Add desktop item and icon (cherry picked from commit 0750062126633db814ead9298902e845102ab1ba) --- pkgs/applications/graphics/imagej/default.nix | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/graphics/imagej/default.nix b/pkgs/applications/graphics/imagej/default.nix index 5050669c524..ac1ea9560ae 100644 --- a/pkgs/applications/graphics/imagej/default.nix +++ b/pkgs/applications/graphics/imagej/default.nix @@ -4,9 +4,16 @@ , jre , unzip , makeWrapper +, makeDesktopItem +, copyDesktopItems }: -stdenv.mkDerivation { +let + icon = fetchurl { + url = "https://imagej.net/media/icons/imagej.png"; + sha256 = "sha256-nU2nWI1wxZB/xlOKsZzdUjj+qiCTjO6GwEKYgZ5Risg="; + }; +in stdenv.mkDerivation rec { pname = "imagej"; version = "150"; @@ -14,7 +21,17 @@ stdenv.mkDerivation { url = "https://wsr.imagej.net/distros/cross-platform/ij${version}.zip"; sha256 = "97aba6fc5eb908f5160243aebcdc4965726693cb1353d9c0d71b8f5dd832cb7b"; }; - nativeBuildInputs = [ makeWrapper unzip ]; + 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; }; @@ -36,6 +53,12 @@ stdenv.mkDerivation { 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"; From ce711cc113de9518b0201cbebd6b586835264a68 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Fri, 25 Jun 2021 10:57:17 +0300 Subject: [PATCH 3/3] imagej: 150 -> 153 (cherry picked from commit 796ae067c4b6348e900c1384ef3759dc90fef01c) --- pkgs/applications/graphics/imagej/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/graphics/imagej/default.nix b/pkgs/applications/graphics/imagej/default.nix index ac1ea9560ae..0dbc2d5d4e1 100644 --- a/pkgs/applications/graphics/imagej/default.nix +++ b/pkgs/applications/graphics/imagej/default.nix @@ -15,11 +15,11 @@ let }; in stdenv.mkDerivation rec { pname = "imagej"; - version = "150"; + version = "153"; src = fetchurl { url = "https://wsr.imagej.net/distros/cross-platform/ij${version}.zip"; - sha256 = "97aba6fc5eb908f5160243aebcdc4965726693cb1353d9c0d71b8f5dd832cb7b"; + sha256 = "sha256-MGuUdUDuW3s/yGC68rHr6xxzmYScUjdXRawDpc1UQqw="; }; nativeBuildInputs = [ copyDesktopItems makeWrapper unzip ]; desktopItems = lib.optionals stdenv.isLinux [