about summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorMartin Weinelt <hexa@darmstadt.ccc.de>2022-12-06 01:27:11 +0100
committerMartin Weinelt <hexa@darmstadt.ccc.de>2022-12-06 01:27:11 +0100
commit60f52f6c836b27882a6ffaf529f505d4e1e0f45c (patch)
tree2887c3d421b4d1e71e2cd20ea355e7d3965a38c8 /pkgs/misc
parent602ee7a175d2bd2c95daae302aa7a7c6c65dcd53 (diff)
parent7ea3d4395dc97845ff755caa790b3ccffdb681dc (diff)
Merge remote-tracking branch 'origin/staging-next' into staging
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/cups/drivers/kyodialog/default.nix106
-rw-r--r--pkgs/misc/cups/drivers/kyodialog3/default.nix62
2 files changed, 106 insertions, 62 deletions
diff --git a/pkgs/misc/cups/drivers/kyodialog/default.nix b/pkgs/misc/cups/drivers/kyodialog/default.nix
new file mode 100644
index 0000000000000..7137b5df56bf0
--- /dev/null
+++ b/pkgs/misc/cups/drivers/kyodialog/default.nix
@@ -0,0 +1,106 @@
+{ lib
+, stdenv
+, fetchzip
+, cups
+, autoPatchelfHook
+, python3Packages
+
+# Sets the default paper format: use "EU" for A4, or "Global" for Letter
+, region ? "EU"
+# optional GUI, quite redundant to CUPS admin web GUI
+, withQtGui ? false
+, qt5
+}:
+
+# Open issues:
+#
+# Printing in grayscale mode (e.g. the test page) generates a warning
+# > [Job 59] Grayscale/monochrome printing requested for this job but Poppler is not able to convert to grayscale/monochrome PostScript.
+# > [Job 59] Use \"pdftops-renderer\" option (see cups-filters README file) to use Ghostscript or MuPDF for the PDF -> PostScript conversion.
+#
+# This is related to https://github.com/OpenPrinting/cups-filters/issues/169.
+
+assert region == "Global" || region == "EU";
+
+let
+  kyodialog_version = "9.2";
+  date = "20220928";
+in
+stdenv.mkDerivation rec {
+  pname = "cups-kyodialog";
+  version = "${kyodialog_version}-${date}";
+
+  dontStrip = true;
+
+  src = fetchzip {
+    urls = [
+      "https://www.kyoceradocumentsolutions.us/content/download-center-americas/us/drivers/drivers/KyoceraLinuxPackages_${date}_tar_gz.download.gz"
+      "https://web.archive.org/web/20221122230412/https://www.kyoceradocumentsolutions.us/content/download-center-americas/us/drivers/drivers/KyoceraLinuxPackages_${date}_tar_gz.download.gz"
+    ];
+    sha256 = "sha256-WCHuAQO2T6S8JtRsI2Yf/ypeCLMH365Ax/qX+Ah2s3k=";
+    extension = "tar.gz";
+    stripRoot = false;
+    postFetch = ''
+      # delete redundant Linux package dirs to reduce size in the Nix store; only keep Debian
+      rm -r $out/{CentOS,Fedora,OpenSUSE,Redhat,Ubuntu}
+    '';
+  };
+
+  sourceRoot = ".";
+
+  unpackCmd = let
+    platforms = {
+      x86_64-linux = "amd64";
+      i686-linux = "i386";
+    };
+    platform = platforms.${stdenv.hostPlatform.system} or (throw "unsupported system: ${stdenv.hostPlatform.system}");
+  in ''
+    ar p "$src/Debian/${region}/kyodialog_${platform}/kyodialog_${kyodialog_version}-0_${platform}.deb" data.tar.gz | tar -xz
+  '';
+
+  nativeBuildInputs = [ autoPatchelfHook python3Packages.wrapPython ]
+  ++ lib.optionals withQtGui [ qt5.wrapQtAppsHook ];
+
+  buildInputs = [ cups ] ++ lib.optionals withQtGui [ qt5.qtbase ];
+
+  # For lib/cups/filter/kyofilter_pre_H.
+  # The source already contains a copy of pypdf3, but we use the Nix package
+  propagatedBuildInputs = with python3Packages; [ reportlab pypdf3 setuptools ];
+
+  installPhase = ''
+    # allow cups to find the ppd files
+    mkdir -p $out/share/cups/model
+    mv ./usr/share/kyocera${kyodialog_version}/ppd${kyodialog_version} $out/share/cups/model/Kyocera
+
+    # remove absolute path prefixes to filters in ppd
+    find $out -name "*.ppd" -exec sed -E -i "s:/usr/lib/cups/filter/::g" {} \;
+
+
+    mkdir -p $out/lib/cups/
+    mv ./usr/lib/cups/filter/ $out/lib/cups/
+    # for lib/cups/filter/kyofilter_pre_H
+    wrapPythonProgramsIn $out/lib/cups/filter "$propagatedBuildInputs"
+
+
+    install -Dm444 usr/share/doc/kyodialog/copyright $out/share/doc/${pname}/copyright
+  '' + lib.optionalString withQtGui ''
+    install -D usr/bin/kyoPPDWrite_H $out/bin/kyoPPDWrite_H
+    install -D usr/bin/kyodialog${kyodialog_version} $out/bin/kyodialog
+
+    install -Dm444 usr/share/kyocera${kyodialog_version}/appicon_H.png $out/share/${pname}/icons/appicon_H.png
+
+    install -Dm444 usr/share/applications/kyodialog${kyodialog_version}.desktop $out/share/applications/kyodialog.desktop
+    substituteInPlace $out/share/applications/kyodialog.desktop \
+      --replace Exec=\"/usr/bin/kyodialog${kyodialog_version}\" Exec=\"$out/bin/kyodialog\" \
+      --replace Icon=/usr/share/kyocera/appicon_H.png Icon=$out/share/${pname}/icons/appicon_H.png
+  '';
+
+  meta = with lib; {
+    description = "CUPS drivers for several Kyocera printers";
+    homepage = "https://www.kyoceradocumentsolutions.com";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    license = licenses.unfree;
+    maintainers = [ maintainers.steveej ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/misc/cups/drivers/kyodialog3/default.nix b/pkgs/misc/cups/drivers/kyodialog3/default.nix
deleted file mode 100644
index 7eeae6daa53c4..0000000000000
--- a/pkgs/misc/cups/drivers/kyodialog3/default.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{ stdenv, lib, fetchzip, cups, autoPatchelfHook
-
-  # Can either be "EU" or "Global"; it's unclear what the difference is
-  , region ? "Global", qt4
-}:
-
-let
-  platform =
-    if stdenv.hostPlatform.system == "x86_64-linux" then "64bit"
-    else if stdenv.hostPlatform.system == "i686-linux" then "32bit"
-         else throw "Unsupported system: ${stdenv.hostPlatform.system}";
-  debPlatform =
-    if platform == "64bit" then "amd64"
-    else "i386";
-  debRegion = if region == "EU" then "EU." else "";
-in
-stdenv.mkDerivation rec {
-  pname = "cups-kyodialog3";
-  version = "8.1601";
-
-  dontStrip = true;
-
-  src = fetchzip {
-    url = "https://www.kyoceradocumentsolutions.us/content/download-center-americas/us/drivers/drivers/Kyocera_Linux_PPD_Ver_${lib.replaceChars ["."] ["_"] version}_tar_gz.download.gz";
-    sha256 = "11znnlkfssakml7w80gxlz1k59f3nvhph91fkzzadnm9i7a8yjal";
-  };
-
-  nativeBuildInputs = [ autoPatchelfHook ];
-
-  buildInputs = [ cups qt4 ];
-
-  installPhase = ''
-    mkdir -p $out
-    cd $out
-
-    # unpack the debian archive
-    ar p ${src}/KyoceraLinuxPackages/${region}/${platform}/kyodialog3.en${debRegion}_0.5-0_${debPlatform}.deb data.tar.gz | tar -xz
-    rm -Rf KyoceraLinuxPackages
-
-    # strip $out/usr
-    mv usr/* .
-    rmdir usr
-
-    # allow cups to find the ppd files
-    mkdir -p share/cups/model
-    mv share/ppd/kyocera share/cups/model/Kyocera
-    rmdir share/ppd
-
-    # prepend $out to all references in ppd and desktop files
-    find -name "*.ppd" -exec sed -E -i "s:/usr/lib:$out/lib:g" {} \;
-    find -name "*.desktop" -exec sed -E -i "s:/usr/lib:$out/lib:g" {} \;
-  '';
-
-  meta = with lib; {
-    description = "CUPS drivers for several Kyocera printers";
-    homepage = "https://www.kyoceradocumentsolutions.com";
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    license = licenses.unfree;
-    maintainers = [ maintainers.steveej ];
-    platforms = platforms.linux;
-  };
-}