about summary refs log tree commit diff
path: root/pkgs/by-name/fo/foomatic-db-nonfree/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/fo/foomatic-db-nonfree/package.nix')
-rw-r--r--pkgs/by-name/fo/foomatic-db-nonfree/package.nix87
1 files changed, 87 insertions, 0 deletions
diff --git a/pkgs/by-name/fo/foomatic-db-nonfree/package.nix b/pkgs/by-name/fo/foomatic-db-nonfree/package.nix
new file mode 100644
index 0000000000000..a433b58a0ac92
--- /dev/null
+++ b/pkgs/by-name/fo/foomatic-db-nonfree/package.nix
@@ -0,0 +1,87 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoconf
+, automake
+, perl
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "foomatic-db-nonfree";
+  version = "unstable-2015-06-05";
+
+  src = fetchFromGitHub {
+    # there is also a daily snapshot at the `downloadPage`,
+    # but it gets deleted quickly and would provoke 404 errors
+    owner = "OpenPrinting";
+    repo = "foomatic-db-nonfree";
+    rev = "6ddae02ac89240c019f8b5026cfe70e30fd2b3db";
+    hash = "sha256-cRZH0CXg03FEqUJdxaNnPVXjf8+ct86PjhL59WQbw60=";
+  };
+
+  nativeBuildInputs = [ autoconf automake perl ];
+
+  # sed-substitute indirection is more robust against
+  # characters in paths that might need escaping
+  postPatch = ''
+    sed -Ei -e 's|^(S?BINSEARCHPATH=).+$|\1"@PATH@"|g'  \
+      -e 's|^(DATASEARCHPATH=).+$|\1"@DATA@"|g' configure.ac
+    substituteInPlace configure.ac  \
+      --subst-var PATH  \
+      --subst-var-by DATA "${placeholder "out"}/share"
+  '';
+
+  preConfigure = ''
+    mkdir -p "${placeholder "out"}/share/foomatic/db/source"
+    ./make_configure
+  '';
+
+  # make ppd files available to cups,
+  # use a package-specific subdirectory to avoid
+  # conflicts with other ppd-containing packages
+  postInstall = ''
+    if ! [[ -d "${placeholder "out"}/share/foomatic/db/source/PPD" ]]; then
+        echo "failed to create share/foomatic/db/source/PPD"
+        exit 1
+    fi
+    mkdir -p "${placeholder "out"}/share/cups/model"
+    ln -s "${placeholder "out"}/share/foomatic/db/source/PPD"  \
+      "${placeholder "out"}/share/cups/model/foomatic-db-nonfree"
+  '';
+
+  # we might patch ppd file commands with `patchPpdFilesHook`,
+  # but the only command "rastertophaser6100" isn't packaged yet
+
+  # compress ppd files
+  postFixup = ''
+    echo 'compressing ppd files'
+    find -H "${placeholder "out"}/share/cups/model/foomatic-db-nonfree" -type f -iname '*.ppd' -print0  \
+      | xargs -0r -n 64 -P "$NIX_BUILD_CORES" gzip -9n
+  '';
+
+  meta = {
+    changelog = "https://github.com/OpenPrinting/foomatic-db-nonfree/blob/${finalAttrs.src.rev}/ChangeLog";
+    description = "OpenPrinting printer support database (unfree content)";
+    downloadPage = "https://www.openprinting.org/download/foomatic/";
+    homepage = "https://openprinting.github.io/projects/02-foomatic/";
+    license = lib.licenses.unfree;
+    maintainers = [ lib.maintainers.yarny ];
+    # list printer manufacturers here so people
+    # searching for ppd files can find this package
+    longDescription = ''
+      The collected knowledge about printers,
+      drivers, and driver options in XML files,
+      used by `foomatic-db-engine` to generate PPD files.
+      This is a package of PPD and Foomatic XML files
+      that may have restrictions that keep them
+      from being used on a variety of machines
+      for licensing and other non-technical reasons.
+      The XML files in this package enable `foomatic-db-ppds`
+      to create about 120 additional PPD files, for printer from
+      Dell, Genicom, Lexmark, Oce, Tektronix and Xerox.
+      Besides the XML files, this package contains
+      about 130 PPD files, for printers from
+      Dell, Genicom, Lexmark, Oce and Xerox.
+    '';
+  };
+})