aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix')
-rw-r--r--nixpkgs/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix88
1 files changed, 88 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix b/nixpkgs/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix
new file mode 100644
index 00000000000..f101ffef95b
--- /dev/null
+++ b/nixpkgs/pkgs/misc/cups/drivers/brother/mfcl3770cdw/default.nix
@@ -0,0 +1,88 @@
+{ pkgsi686Linux
+, stdenv
+, fetchurl
+, dpkg
+, makeWrapper
+, coreutils
+, ghostscript
+, gnugrep
+, gnused
+, which
+, perl
+, lib
+}:
+
+let
+ model = "mfcl3770cdw";
+ version = "1.0.2-0";
+ src = fetchurl {
+ url = "https://download.brother.com/welcome/dlf103935/${model}pdrv-${version}.i386.deb";
+ sha256 = "09fhbzhpjymhkwxqyxzv24b06ybmajr6872yp7pri39595mhrvay";
+ };
+ reldir = "opt/brother/Printers/${model}/";
+
+in rec {
+ driver = pkgsi686Linux.stdenv.mkDerivation rec {
+ inherit src version;
+ name = "${model}drv-${version}";
+
+ nativeBuildInputs = [ dpkg makeWrapper ];
+
+ unpackPhase = "dpkg-deb -x $src $out";
+
+ installPhase = ''
+ dir="$out/${reldir}"
+ substituteInPlace $dir/lpd/filter_${model} \
+ --replace /usr/bin/perl ${perl}/bin/perl \
+ --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$dir\"; #" \
+ --replace "PRINTER =~" "PRINTER = \"${model}\"; #"
+ wrapProgram $dir/lpd/filter_${model} \
+ --prefix PATH : ${stdenv.lib.makeBinPath [
+ coreutils ghostscript gnugrep gnused which
+ ]}
+ # need to use i686 glibc here, these are 32bit proprietary binaries
+ patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+ $dir/lpd/brmfcl3770cdwfilter
+ '';
+
+ meta = {
+ description = "Brother ${lib.strings.toUpper model} driver";
+ homepage = http://www.brother.com/;
+ license = stdenv.lib.licenses.unfree;
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ maintainers = [ stdenv.lib.maintainers.steveej ];
+ };
+ };
+
+ cupswrapper = stdenv.mkDerivation rec {
+ inherit version src;
+ name = "${model}cupswrapper-${version}";
+
+ nativeBuildInputs = [ dpkg makeWrapper ];
+
+ unpackPhase = "dpkg-deb -x $src $out";
+
+ installPhase = ''
+ basedir=${driver}/${reldir}
+ dir=$out/${reldir}
+ substituteInPlace $dir/cupswrapper/brother_lpdwrapper_${model} \
+ --replace /usr/bin/perl ${perl}/bin/perl \
+ --replace "basedir =~" "basedir = \"$basedir\"; #" \
+ --replace "PRINTER =~" "PRINTER = \"${model}\"; #"
+ wrapProgram $dir/cupswrapper/brother_lpdwrapper_${model} \
+ --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gnugrep gnused ]}
+ mkdir -p $out/lib/cups/filter
+ mkdir -p $out/share/cups/model
+ ln $dir/cupswrapper/brother_lpdwrapper_${model} $out/lib/cups/filter
+ ln $dir/cupswrapper/brother_${model}_printer_en.ppd $out/share/cups/model
+ '';
+
+ meta = {
+ description = "Brother ${lib.strings.toUpper model} CUPS wrapper driver";
+ homepage = http://www.brother.com/;
+ license = stdenv.lib.licenses.gpl2;
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ maintainers = [ stdenv.lib.maintainers.steveej ];
+ };
+ };
+}