{ lib, stdenv, fetchurl, rpmextract, autoreconfHook, file, libjpeg, cups }: let version = "1.0.1"; filterVersion = "1.0.0"; in stdenv.mkDerivation { pname = "epson-201106w"; inherit version; src = fetchurl { # NOTE: Don't forget to update the webarchive link too! urls = [ "https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-201106w-${version}-1lsb3.2.src.rpm" "https://web.archive.org/web/https://download.ebz.epson.net/dsc/op/stable/SRPMS/epson-inkjet-printer-201106w-${version}-1lsb3.2.src.rpm" ]; sha256 = "1yig1xrh1ikblbp7sx706n5nnc237wy4mbch23ymy6akbgqg4aig"; }; nativeBuildInputs = [ rpmextract autoreconfHook file ]; buildInputs = [ libjpeg cups ]; unpackPhase = '' rpmextract $src tar -zxf epson-inkjet-printer-201106w-${version}.tar.gz tar -zxf epson-inkjet-printer-filter-${filterVersion}.tar.gz for ppd in epson-inkjet-printer-201106w-${version}/ppds/*; do substituteInPlace $ppd --replace "/opt/epson-inkjet-printer-201106w" "$out" substituteInPlace $ppd --replace "/cups/lib" "/lib/cups" done cd epson-inkjet-printer-filter-${filterVersion} ''; preConfigure = '' chmod +x configure export LDFLAGS="$LDFLAGS -Wl,--no-as-needed" ''; postInstall = '' cd ../epson-inkjet-printer-201106w-${version} cp -a lib64 resource watermark $out mkdir -p $out/share/cups/model/epson-inkjet-printer-201106w cp -a ppds $out/share/cups/model/epson-inkjet-printer-201106w/ cp -a Manual.txt $out/doc/ cp -a README $out/doc/README.driver ''; meta = with lib; { homepage = "https://www.openprinting.org/driver/epson-201106w"; description = "Epson printer driver (BX535WD, BX630FW, BX635FWD, ME940FW, NX530, NX635, NX635, SX535WD, WorkForce 545, WorkForce 645"; longDescription = '' This software is a filter program used with the Common UNIX Printing System (CUPS) under Linux. It supplies high quality printing with Seiko Epson Color Ink Jet Printers. List of printers supported by this package: Epson BX535WD Series Epson BX630FW Series Epson BX635FWD Series Epson ME940FW Series Epson NX530 Series Epson SX535WD Series Epson WorkForce 545 Series Epson WorkForce 645 Series To use the driver adjust your configuration.nix file: services.printing = { enable = true; drivers = [ pkgs.epson-201106w ]; }; ''; license = with licenses; [ lgpl21 epson ]; platforms = platforms.linux; maintainers = [ maintainers.nphilou ]; }; }