nixpkgs/pkgs/applications/misc/pdfstudio/default.nix
2021-12-21 00:52:30 -07:00

92 lines
2.2 KiB
Nix

{ stdenv,
lib,
makeWrapper,
fetchurl,
dpkg,
makeDesktopItem,
copyDesktopItems,
autoPatchelfHook,
gst_all_1,
sane-backends,
xorg,
gnome2,
alsa-lib,
libgccjit,
jdk11
}:
let
year = "2021";
major = "1";
minor = "1";
in stdenv.mkDerivation rec {
pname = "pdfstudio";
version = "${year}.${major}.${minor}";
autoPatchelfIgnoreMissingDeps = true;
src = fetchurl {
url = "https://download.qoppa.com/${pname}/v${year}/PDFStudio_v${year}_${major}_${minor}_linux64.deb";
sha256 = "089jfpbsxwjhx245g8svlmg213kny3z5nl6ra1flishnrsfjjcxb";
};
nativeBuildInputs = [
gst_all_1.gst-libav
sane-backends
xorg.libXxf86vm
xorg.libXtst
gnome2.libgtkhtml
alsa-lib
libgccjit
autoPatchelfHook
makeWrapper
dpkg
copyDesktopItems
jdk11 # only for unpacking .jar.pack files
];
desktopItems = [(makeDesktopItem {
name = "${pname}${year}";
desktopName = "PDF Studio";
genericName = "View and edit PDF files";
exec = "${pname} %f";
icon = "${pname}${year}";
comment = "Views and edits PDF files";
mimeType = "application/pdf";
categories = "Office";
type = "Application";
terminal = false;
})];
unpackPhase = "dpkg-deb -x $src .";
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mkdir -p $out/share
mkdir -p $out/share/applications
mkdir -p $out/share/pixmaps
cp -r opt/${pname}${year} $out/share/
ln -s $out/share/${pname}${year}/.install4j/${pname}${year}.png $out/share/pixmaps/
makeWrapper $out/share/${pname}${year}/${pname}${year} $out/bin/${pname}
#Unpack jar files. Otherwise pdfstudio does this and fails due to read-only FS.
for pfile in $out/share/${pname}${year}/jre/lib/{,ext/}*.jar.pack; do
jar_file=`echo "$pfile" | awk '{ print substr($0,1,length($0)-5) }'`
unpack200 -r "$pfile" "$jar_file"
done
runHook postInstall
'';
meta = with lib; {
homepage = "https://www.qoppa.com/pdfstudio/";
description = "An easy to use, full-featured PDF editing software";
license = licenses.unfree;
platforms = platforms.linux;
maintainers = [ maintainers.pwoelfel ];
};
}