@@ -1,86 +1,105 @@
|
||||
{
|
||||
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
|
||||
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 : ${
|
||||
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
|
||||
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"
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
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[@]}" \
|
||||
--prefix LD_LIBRARY_PATH : "${
|
||||
lib.makeLibraryPath [
|
||||
libxxf86vm
|
||||
libxtst
|
||||
gtk3
|
||||
libGL
|
||||
]
|
||||
}" \
|
||||
--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";
|
||||
@@ -97,4 +116,4 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
_1000101
|
||||
];
|
||||
};
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user