about summary refs log tree commit diff
path: root/pkgs/applications/misc/pdfstudio/common.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/misc/pdfstudio/common.nix')
-rw-r--r--pkgs/applications/misc/pdfstudio/common.nix98
1 files changed, 98 insertions, 0 deletions
diff --git a/pkgs/applications/misc/pdfstudio/common.nix b/pkgs/applications/misc/pdfstudio/common.nix
new file mode 100644
index 0000000000000..7240e8a026e2e
--- /dev/null
+++ b/pkgs/applications/misc/pdfstudio/common.nix
@@ -0,0 +1,98 @@
+{ pname
+, src
+, year
+, version
+, desktopName
+, longDescription
+, buildFHSUserEnv
+, extraBuildInputs ? []
+, stdenv
+, lib
+, dpkg
+, makeDesktopItem
+, copyDesktopItems
+, autoPatchelfHook
+, sane-backends
+, cups
+, jdk11
+}:
+let
+  thisPackage = stdenv.mkDerivation rec {
+    inherit pname src version;
+    strictDeps = true;
+
+    buildInputs = [
+      sane-backends #for libsane.so.1
+      jdk11
+    ] ++ extraBuildInputs;
+
+    nativeBuildInputs = [
+      autoPatchelfHook
+      dpkg
+      copyDesktopItems
+    ];
+
+    desktopItems = [
+      (makeDesktopItem {
+        name = "${pname}${year}";
+        desktopName = desktopName;
+        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;
+      })
+    ];
+
+    unpackCmd = "dpkg-deb -x $src ./${pname}-${version}";
+    dontBuild = true;
+
+    postPatch = ''
+      substituteInPlace opt/${pname}${year}/${pname}${year} --replace "# INSTALL4J_JAVA_HOME_OVERRIDE=" "INSTALL4J_JAVA_HOME_OVERRIDE=${jdk11.out}"
+      substituteInPlace opt/${pname}${year}/updater --replace "# INSTALL4J_JAVA_HOME_OVERRIDE=" "INSTALL4J_JAVA_HOME_OVERRIDE=${jdk11.out}"
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/{bin,share/pixmaps}
+      rm -rf opt/${pname}${year}/jre
+      cp -r opt/${pname}${year} $out/share/
+      ln -s $out/share/${pname}${year}/.install4j/${pname}${year}.png  $out/share/pixmaps/
+      ln -s $out/share/${pname}${year}/${pname}${year} $out/bin/${pname}
+
+      runHook postInstall
+    '';
+  };
+
+in
+# Package with cups in FHS sandbox, because JAVA bin expects "/usr/bin/lpr" for printing.
+buildFHSUserEnv {
+  name = pname;
+  targetPkgs = pkgs: [
+    cups
+    thisPackage
+  ];
+  runScript = pname;
+
+  # link desktop item and icon into FHS user environment
+  extraInstallCommands = ''
+    mkdir -p "$out/share/applications"
+    mkdir -p "$out/share/pixmaps"
+    ln -s ${thisPackage}/share/applications/*.desktop "$out/share/applications/"
+    ln -s ${thisPackage}/share/pixmaps/*.png "$out/share/pixmaps/"
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.qoppa.com/${pname}/";
+    description = "An easy to use, full-featured PDF editing software";
+    longDescription = longDescription;
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    mainProgram = pname;
+    maintainers = [ maintainers.pwoelfel ];
+  };
+}