nixpkgs/pkgs/misc/cups/drivers/cups-drv-rastertosag-gdi/default.nix
Yarny0 eaa62fa391 rastertosag-gdi (cups driver): init at 0.1
Some Ricoh printers use the proprietary sag-gdi format
and can't handle other, more common formats.
This commit brings a filter for cups
that generates the sag-gdi format.

The latest version 0.1 is dated 2011.  So updates are unlikely.

The filter is written for Python 2.
To avoid new reverse dependencies on Python 2,
we employ a patch from Debian
that migrates the code to Python 3.

The README file just states "GPL" as license.
It is unclear whether that refers to the first version or
to the "current version" in the year of the copyright
(would be 3), and whether newer versions would be included.
The commit picks the nixpkgs `free` license
as this seems to be the most general license
covering all possible GPL combinations.
At least, `free` should permit Hydra to build the package.

The source tarball brings pdd files, but also a
drv file that can be used to generate those ppd files.
Since we prefer building from source,
we call cups' `ppdc` to build ppd files from the drv file.

Here is a documentation of the sag-gdi format:
https://www.undocprint.org/formats/page_description_languages/sagem-gdi
2021-04-02 10:51:36 +02:00

53 lines
2 KiB
Nix

{ lib
, fetchzip
, fetchpatch
, cups
, python3Packages
}:
python3Packages.buildPythonApplication rec {
pname = "rastertosag-gdi";
version = "0.1";
src = fetchzip {
url = "https://www.openprinting.org/download/printing/${pname}/${pname}-${version}.tar.gz";
sha256 = "1ldplpv497j8vhw24sksg3fiw8c5pqr0wajajh7p5xpvb6zlcmvw";
};
patches = [
# port to python 3
( fetchpatch {
url = "https://sources.debian.org/data/main/r/${pname}/0.1-7/debian/patches/0001-${pname}-python3.patch";
sha256 = "1l3xbrs67025595k9ba5794q3s74anizpbxwsshcfhmbrzd9h8hg";
})
];
format = "other";
nativeBuildInputs = [ (lib.getBin cups) ];
# The source image also brings pre-built ppd files,
# be we prefer to generate from source where possible, so
# the following line generates ppd files from the drv file.
postBuild = ''
ppdc -v -d . -I "${cups}/share/cups/ppdc" rastertosag-gdi.drv
'';
installPhase = ''
runHook preInstall
install -vDm 0644 -t "${placeholder "out"}/share/cups/model/rastertosag-gdi/" *.ppd
install -vDm 0755 -t "${placeholder "out"}/bin/" rastertosag-gdi
install -vd "${placeholder "out"}/lib/cups/filter/"
ln -vst "${placeholder "out"}/lib/cups/filter/" "${placeholder "out"}/bin/rastertosag-gdi"
runHook postInstall
'';
meta = {
description = "CUPS driver for Ricoh Aficio SP 1000S and SP 1100S printers";
downloadPage = "https://www.openprinting.org/download/printing/rastertosag-gdi/";
homepage = "https://www.openprinting.org/driver/rastertosag-gdi/";
license = lib.licenses.free; # just "GPL", according to README
maintainers = [ lib.maintainers.yarny ];
longDescription = ''
This package brings CUPS raster filter
for Ricoh Aficio SP 1000S and SP 1100S.
In contrast to other Ricoh laser printers,
they use the proprietary SAG-GDI raster format by
Sagem Communication and do not understand PCL or PostScript.
Therefore they do not work with Ricoh's PPD files.
'';
};
}