Loading pkgs/by-name/pd/pdfsam-basic/package.nix +85 −63 Original line number Diff line number Diff line { lib, stdenv, maven, makeDesktopItem, fetchurl, fetchFromGitHub, temurin-jre-bin-21, javaPackages, wrapGAppsHook3, dpkg, xorg, temurin-bin-21, glib, libxxf86vm, libxtst, gtk3, libGL, alsa-lib, nix-update-script, desktop-file-utils, # native copyDesktopItems, wrapGAppsHook3, gettext, }: stdenv.mkDerivation (finalAttrs: { let mavenOurJdk = maven.override { jdk_headless = temurin-jre-bin-21; }; in mavenOurJdk.buildMavenPackage rec { pname = "pdfsam-basic"; version = "5.4.1"; src = fetchurl { url = "https://github.com/torakiki/pdfsam/releases/download/v${finalAttrs.version}/pdfsam-basic_${finalAttrs.version}-1_amd64.deb"; hash = "sha256-iM0avC0YwxaB2prWbiKJZ9Fzd/HcdDWJg5IWRmNlVkM="; src = fetchFromGitHub { owner = "torakiki"; repo = "pdfsam"; rev = "v${version}"; hash = "sha256-9IzYnWYE0OD1b4xybl3NdaBvVSw6C4+1ORUnrotqSuc="; }; mvnParameters = "-Drelease -Dmaven.test.skip"; mvnHash = "sha256-Y/wz/XuzDpT7qnk/pRBkv6PeI0GmqKXh54gqb7cWHHw="; buildInputs = [ glib libxxf86vm ]; nativeBuildInputs = [ dpkg # Used as the main java implementation. Also the build relies upon jlink # which is included in this package. temurin-bin-21 gettext wrapGAppsHook3 desktop-file-utils copyDesktopItems ]; installPhase = '' runHook preInstall desktop-file-edit usr/share/applications/pdfsam-basic.desktop \ --set-key="Exec" --set-value="pdfsam-basic %F" \ --set-key="Path" --set-value="$out/share/pdfsam-basic" \ --set-icon="pdfsam-basic" mkdir $out cp -r usr/share $out/share mkdir $out/share/pdfsam-basic cp -r opt/pdfsam-basic/lib $out/share/pdfsam-basic/lib install -Dm0644 opt/pdfsam-basic/splash.png $out/share/pdfsam-basic/splash.png install -Dm0644 opt/pdfsam-basic/icon.svg $out/share/icons/hicolor/scalable/apps/pdfsam-basic.svg mkdir $out/bin install -Dm0644 pdfsam-basic/src/deb/icon.svg $out/share/icons/pdfsam-basic.svg mkdir $out/lib tar -xf pdfsam-basic/target/pdfsam-basic-${version}-linux-x64.tar.gz -C $out/lib mv $out/lib/pdfsam-basic-${version}-linux-x64 $out/lib/pdfsam-basic # Based upon upstream's default $out/lib/pdfsam-basic/bin/pdfsam.sh file, # but with Nix specific dynamically loaded libraries makeWrapper ${temurin-jre-bin-21}/bin/java $out/bin/pdfsam-basic \ "''${gappsWrapperArgs[@]}" \ --set JAVA_HOME ${temurin-jre-bin-21} \ --set PDFSAM_JAVA_PATH ${temurin-jre-bin-21} \ --prefix LD_LIBRARY_PATH : ${ --prefix LD_LIBRARY_PATH : "${ lib.makeLibraryPath [ javaPackages.openjfx25 # PDFSam Basic requires JDK 21 and JavaFX 23 https://github.com/torakiki/pdfsam/issues/785#issuecomment-3446564717 xorg.libXxf86vm xorg.libXtst libxxf86vm libxtst gtk3 libGL alsa-lib ] } \ --add-flags ${ lib.escapeShellArg ( lib.escapeShellArgs [ "--enable-preview" "--module-path" "${placeholder "out"}/share/pdfsam-basic/lib" "--module" "org.pdfsam.basic/org.pdfsam.basic.App" "-Xmx512M" "-splash:${placeholder "out"}/share/pdfsam-basic/splash.png" "-Dapp.name=\"pdfsam-basic\"" "-Dapp.pid=\"$$\"" "-Dapp.home=\"${placeholder "out"}/share/pdfsam-basic\"" "-Dbasedir=\"${placeholder "out"}/share/pdfsam-basic\"" "-Dprism.lcdtext=false" ] ) } }" \ --argv0 pdfsam-basic \ --add-flags --enable-preview \ --add-flags "--module-path $out/lib/pdfsam-basic/lib" \ --add-flags "--module org.pdfsam.basic/org.pdfsam.basic.App" \ --add-flags "-Xmx512M" \ --add-flags "-Dprism.lcdtext=false" \ --add-flags "-splash:$out/lib/pdfsam-basic/splash.png" \ --add-flags "-Dapp.name=pdfsam-basic" \ --add-flags "-Dapp.home=$out/lib/pdfsam-basic" \ --add-flags "-Dbasedir=$out/lib/pdfsam-basic" # Remove bundled executables, shared objects etc, that are not needed on # Nix (we just need the jar files). rm -r $out/lib/pdfsam-basic/{doc,bin,runtime} runHook postInstall ''; dontWrapGApps = true; passthru.updateScript = nix-update-script { }; # Based on upstream's desktop file: # https://github.com/torakiki/pdfsam/blob/master/pdfsam-basic/src/deb/pdfsam-basic.desktop desktopItems = [ (makeDesktopItem { name = "PDFsam Basic"; exec = "pdfsam-basic"; icon = "pdfsam-basic"; comment = meta.description; desktopName = "PDFsam Basic"; genericName = "PDF Split and Merge"; mimeTypes = [ "application/pdf" ]; categories = [ "Office" ]; }) ]; meta = { homepage = "https://github.com/torakiki/pdfsam"; Loading @@ -92,6 +111,9 @@ stdenv.mkDerivation (finalAttrs: { ]; license = lib.licenses.agpl3Plus; platforms = [ "x86_64-linux" ]; maintainers = with lib.maintainers; [ _1000101 ]; maintainers = with lib.maintainers; [ doronbehar _1000101 ]; }; }) } Loading
pkgs/by-name/pd/pdfsam-basic/package.nix +85 −63 Original line number Diff line number Diff line { lib, stdenv, maven, makeDesktopItem, fetchurl, fetchFromGitHub, temurin-jre-bin-21, javaPackages, wrapGAppsHook3, dpkg, xorg, temurin-bin-21, glib, libxxf86vm, libxtst, gtk3, libGL, alsa-lib, nix-update-script, desktop-file-utils, # native copyDesktopItems, wrapGAppsHook3, gettext, }: stdenv.mkDerivation (finalAttrs: { let mavenOurJdk = maven.override { jdk_headless = temurin-jre-bin-21; }; in mavenOurJdk.buildMavenPackage rec { pname = "pdfsam-basic"; version = "5.4.1"; src = fetchurl { url = "https://github.com/torakiki/pdfsam/releases/download/v${finalAttrs.version}/pdfsam-basic_${finalAttrs.version}-1_amd64.deb"; hash = "sha256-iM0avC0YwxaB2prWbiKJZ9Fzd/HcdDWJg5IWRmNlVkM="; src = fetchFromGitHub { owner = "torakiki"; repo = "pdfsam"; rev = "v${version}"; hash = "sha256-9IzYnWYE0OD1b4xybl3NdaBvVSw6C4+1ORUnrotqSuc="; }; mvnParameters = "-Drelease -Dmaven.test.skip"; mvnHash = "sha256-Y/wz/XuzDpT7qnk/pRBkv6PeI0GmqKXh54gqb7cWHHw="; buildInputs = [ glib libxxf86vm ]; nativeBuildInputs = [ dpkg # Used as the main java implementation. Also the build relies upon jlink # which is included in this package. temurin-bin-21 gettext wrapGAppsHook3 desktop-file-utils copyDesktopItems ]; installPhase = '' runHook preInstall desktop-file-edit usr/share/applications/pdfsam-basic.desktop \ --set-key="Exec" --set-value="pdfsam-basic %F" \ --set-key="Path" --set-value="$out/share/pdfsam-basic" \ --set-icon="pdfsam-basic" mkdir $out cp -r usr/share $out/share mkdir $out/share/pdfsam-basic cp -r opt/pdfsam-basic/lib $out/share/pdfsam-basic/lib install -Dm0644 opt/pdfsam-basic/splash.png $out/share/pdfsam-basic/splash.png install -Dm0644 opt/pdfsam-basic/icon.svg $out/share/icons/hicolor/scalable/apps/pdfsam-basic.svg mkdir $out/bin install -Dm0644 pdfsam-basic/src/deb/icon.svg $out/share/icons/pdfsam-basic.svg mkdir $out/lib tar -xf pdfsam-basic/target/pdfsam-basic-${version}-linux-x64.tar.gz -C $out/lib mv $out/lib/pdfsam-basic-${version}-linux-x64 $out/lib/pdfsam-basic # Based upon upstream's default $out/lib/pdfsam-basic/bin/pdfsam.sh file, # but with Nix specific dynamically loaded libraries makeWrapper ${temurin-jre-bin-21}/bin/java $out/bin/pdfsam-basic \ "''${gappsWrapperArgs[@]}" \ --set JAVA_HOME ${temurin-jre-bin-21} \ --set PDFSAM_JAVA_PATH ${temurin-jre-bin-21} \ --prefix LD_LIBRARY_PATH : ${ --prefix LD_LIBRARY_PATH : "${ lib.makeLibraryPath [ javaPackages.openjfx25 # PDFSam Basic requires JDK 21 and JavaFX 23 https://github.com/torakiki/pdfsam/issues/785#issuecomment-3446564717 xorg.libXxf86vm xorg.libXtst libxxf86vm libxtst gtk3 libGL alsa-lib ] } \ --add-flags ${ lib.escapeShellArg ( lib.escapeShellArgs [ "--enable-preview" "--module-path" "${placeholder "out"}/share/pdfsam-basic/lib" "--module" "org.pdfsam.basic/org.pdfsam.basic.App" "-Xmx512M" "-splash:${placeholder "out"}/share/pdfsam-basic/splash.png" "-Dapp.name=\"pdfsam-basic\"" "-Dapp.pid=\"$$\"" "-Dapp.home=\"${placeholder "out"}/share/pdfsam-basic\"" "-Dbasedir=\"${placeholder "out"}/share/pdfsam-basic\"" "-Dprism.lcdtext=false" ] ) } }" \ --argv0 pdfsam-basic \ --add-flags --enable-preview \ --add-flags "--module-path $out/lib/pdfsam-basic/lib" \ --add-flags "--module org.pdfsam.basic/org.pdfsam.basic.App" \ --add-flags "-Xmx512M" \ --add-flags "-Dprism.lcdtext=false" \ --add-flags "-splash:$out/lib/pdfsam-basic/splash.png" \ --add-flags "-Dapp.name=pdfsam-basic" \ --add-flags "-Dapp.home=$out/lib/pdfsam-basic" \ --add-flags "-Dbasedir=$out/lib/pdfsam-basic" # Remove bundled executables, shared objects etc, that are not needed on # Nix (we just need the jar files). rm -r $out/lib/pdfsam-basic/{doc,bin,runtime} runHook postInstall ''; dontWrapGApps = true; passthru.updateScript = nix-update-script { }; # Based on upstream's desktop file: # https://github.com/torakiki/pdfsam/blob/master/pdfsam-basic/src/deb/pdfsam-basic.desktop desktopItems = [ (makeDesktopItem { name = "PDFsam Basic"; exec = "pdfsam-basic"; icon = "pdfsam-basic"; comment = meta.description; desktopName = "PDFsam Basic"; genericName = "PDF Split and Merge"; mimeTypes = [ "application/pdf" ]; categories = [ "Office" ]; }) ]; meta = { homepage = "https://github.com/torakiki/pdfsam"; Loading @@ -92,6 +111,9 @@ stdenv.mkDerivation (finalAttrs: { ]; license = lib.licenses.agpl3Plus; platforms = [ "x86_64-linux" ]; maintainers = with lib.maintainers; [ _1000101 ]; maintainers = with lib.maintainers; [ doronbehar _1000101 ]; }; }) }