summaryrefslogtreecommitdiffstats
path: root/pkgs/misc/drivers
diff options
context:
space:
mode:
authorLuna D. Dragon <advaith.madhukar@gmail.com>2022-01-20 12:02:19 +0530
committerLuna D. Dragon <advaith.madhukar@gmail.com>2022-01-20 21:56:42 +0530
commit39b3e3fa2b3abe88f6a2eb4405e10c3f73569467 (patch)
treeb4a15688c380f6089803d46675032ad72d9829c3 /pkgs/misc/drivers
parent0682cabc82478c3bdec4b4f74fe81160e39026fe (diff)
epson-201401w: init at 1.0.0
Diffstat (limited to 'pkgs/misc/drivers')
-rw-r--r--pkgs/misc/drivers/epson-201401w/default.nix67
-rw-r--r--pkgs/misc/drivers/epson-201401w/fixbuild.patch101
2 files changed, 168 insertions, 0 deletions
diff --git a/pkgs/misc/drivers/epson-201401w/default.nix b/pkgs/misc/drivers/epson-201401w/default.nix
new file mode 100644
index 000000000000..cffa631cfe33
--- /dev/null
+++ b/pkgs/misc/drivers/epson-201401w/default.nix
@@ -0,0 +1,67 @@
+{ lib, stdenv, fetchurl, rpmextract, autoreconfHook, file, libjpeg, cups }:
+
+let
+ version = "1.0.0";
+ filterVersion = "1.0.0";
+in stdenv.mkDerivation {
+ pname = "epson-201401w";
+ inherit version;
+
+ src = fetchurl {
+ # NOTE: Don't forget to update the webarchive link too!
+ urls = [
+ "https://download3.ebz.epson.net/dsc/f/03/00/03/45/41/92e9c9254f0ee4230a069545ba27ec2858a2c457/epson-inkjet-printer-201401w-1.0.0-1lsb3.2.src.rpm"
+ "https://web.archive.org/web/20200725175832/https://download3.ebz.epson.net/dsc/f/03/00/03/45/41/92e9c9254f0ee4230a069545ba27ec2858a2c457/epson-inkjet-printer-201401w-1.0.0-1lsb3.2.src.rpm"
+ ];
+ sha256 = "0c60m1sd59s4sda38dc5nniwa7dh1b0kv1maajr0x9d38gqlyk3x";
+ };
+ patches = [ ./fixbuild.patch ];
+
+ nativeBuildInputs = [ rpmextract autoreconfHook file ];
+
+ buildInputs = [ libjpeg cups ];
+
+ unpackPhase = ''
+ rpmextract $src
+ tar -zxf epson-inkjet-printer-201401w-${version}.tar.gz
+ tar -zxf epson-inkjet-printer-filter-${filterVersion}.tar.gz
+ for ppd in epson-inkjet-printer-201401w-${version}/ppds/*; do
+ substituteInPlace $ppd --replace "/opt/epson-inkjet-printer-201401w" "$out"
+ substituteInPlace $ppd --replace "/cups/lib" "/lib/cups"
+ done
+ cd epson-inkjet-printer-filter-${filterVersion}
+ '';
+
+ preConfigure = ''
+ chmod +x configure
+ '';
+
+ postInstall = ''
+ cd ../epson-inkjet-printer-201401w-${version}
+ cp -a lib64 resource watermark $out
+ mkdir -p $out/share/cups/model/epson-inkjet-printer-201401w
+ cp -a ppds $out/share/cups/model/epson-inkjet-printer-201401w/
+ cp -a Manual.txt $out/doc/
+ cp -a README $out/doc/README.driver
+ '';
+
+ meta = with lib; {
+ homepage = "https://www.openprinting.org/driver/epson-201401w";
+ description =
+ "Epson printer driver (L456, L455, L366, L365, L362, L360, L312, L310, L222, L220, L132, L130)";
+ 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.
+
+ To use the driver adjust your configuration.nix file:
+ services.printing = {
+ enable = true;
+ drivers = [ pkgs.epson-201401w ];
+ };
+ '';
+ license = with licenses; [ lgpl21 epson ];
+ platforms = platforms.linux;
+ maintainers = [ maintainers.lunarequest ];
+ };
+}
diff --git a/pkgs/misc/drivers/epson-201401w/fixbuild.patch b/pkgs/misc/drivers/epson-201401w/fixbuild.patch
new file mode 100644
index 000000000000..4baa029a5739
--- /dev/null
+++ b/pkgs/misc/drivers/epson-201401w/fixbuild.patch
@@ -0,0 +1,101 @@
+diff --git a/src/pagemanager/pagemanager.c b/src/pagemanager/pagemanager.c
+index 029e6d3..3c1f450 100644
+--- a/src/pagemanager/pagemanager.c
++++ b/src/pagemanager/pagemanager.c
+@@ -22,7 +22,7 @@
+ #include "epcgdef.h"
+ #include "debuglog.h"
+ #include "memory.h"
+-#include "raster.h"
++#include "raster-helper.h"
+ #include "pagemanager.h"
+
+ extern int JobCanceled;
+@@ -45,7 +45,7 @@ fetchRaster(EpsPageManager *pageManager)
+ int error = 0;
+ int did_fetch = 0;
+ int read_bytes = 0;
+- int nraster;
++ size_t nraster;
+
+ while (error == 0 && did_fetch == 0 && JobCanceled == 0) {
+ eps_raster_fetch(privateData->raster_h, NULL, 0, 0, &status);
+@@ -212,7 +212,7 @@ int pageManagerGetPageRegion(EpsPageManager *pageManager, EpsPageRegion *pageReg
+ return EPS_OK;
+ }
+
+-int pageManagerGetRaster(EpsPageManager *pageManager, char *buf, int bufSize)
++size_t pageManagerGetRaster(EpsPageManager *pageManager, char *buf, int bufSize)
+ {
+ PageManagerPrivateData *privateData = NULL;
+ int error = EPS_OK;
+diff --git a/src/pagemanager/pagemanager.h b/src/pagemanager/pagemanager.h
+index 87fbbd5..c9743fb 100644
+--- a/src/pagemanager/pagemanager.h
++++ b/src/pagemanager/pagemanager.h
+@@ -31,7 +31,7 @@ extern "C"
+ #define EPS_ERROR -1
+ #define EPS_OK 0
+
+-typedef int (*EpsRasterSource)(char *buf, int bufSize);
++typedef size_t (*EpsRasterSource)(char *buf, int bufSize);
+
+ typedef struct {
+ EpsRasterSource rasterSource;
+@@ -47,7 +47,7 @@ typedef struct {
+ EpsPageManager* pageManagerCreate(EpsPageRegion pageRegion, EpsFilterPrintOption filterPrintOption, EpsRasterSource rasterSource);
+ void pageManagerDestroy(EpsPageManager *pageManager);
+ int pageManagerGetPageRegion(EpsPageManager *pageManager, EpsPageRegion *pageRegion);
+-int pageManagerGetRaster(EpsPageManager *pageManager, char *buf, int bufSize);
++size_t pageManagerGetRaster(EpsPageManager *pageManager, char *buf, int bufSize);
+ int pageManagerIsNextPage(EpsPageManager *pageManager);
+
+ #ifdef __cplusplus
+diff --git a/src/raster/raster.c b/src/raster/raster.c
+index 7e4946b..dd5aef6 100644
+--- a/src/raster/raster.c
++++ b/src/raster/raster.c
+@@ -218,7 +218,7 @@ eps_raster_init (RASTER * handle, EpsRasterOpt * data, EpsRasterPipeline * pipel
+
+ /* if raster_p equals NULL means that it is need to flush a page. */
+ int
+-eps_raster_print (RASTER handle, char * raster_p, int raster_bytes, int pixel_num, int * outraster)
++eps_raster_print (RASTER handle, char * raster_p, int raster_bytes, int pixel_num, size_t * outraster)
+ {
+ EpsRaster * raster = (EpsRaster *) handle;
+ EpsRasterPipeline * pipeline = NULL;
+diff --git a/src/raster/raster.h b/src/raster/raster.h
+index 9be0977..cc5054d 100644
+--- a/src/raster/raster.h
++++ b/src/raster/raster.h
+@@ -143,7 +143,7 @@ typedef enum {
+ } EpsRasterFetchStatus;
+
+ int eps_raster_init (RASTER *, EpsRasterOpt *, EpsRasterPipeline *);
+-int eps_raster_print (RASTER, char *, int, int, int *);
++int eps_raster_print (RASTER, char *, int, int, size_t *);
+ int eps_raster_fetch (RASTER, char *, int, int, EpsRasterFetchStatus *);
+ int eps_raster_free (RASTER);
+
+diff --git a/src/raster_to_epson.c b/src/raster_to_epson.c
+index 6e621c8..a0811d6 100644
+--- a/src/raster_to_epson.c
++++ b/src/raster_to_epson.c
+@@ -33,7 +33,7 @@
+ #include <cups/ppd.h>
+ #include <cups/raster.h>
+
+-#include "raster.h"
++#include "raster-helper.h"
+ #include "memory.h"
+ #include "raster_to_epson.h"
+ #include "pagemanager.h"
+@@ -75,7 +75,7 @@ static int page_no = 0;
+ static int pageHeight = 0;
+ #endif
+
+-int rasterSource(char *buf, int bufSize)
++size_t rasterSource(char *buf, int bufSize)
+ {
+ int readBytes = 0;
+ if (JobCanceled == 0) {