From 91281e7f6b8a042058d1313a691bda551ba9cee3 Mon Sep 17 00:00:00 2001 From: u2x1 Date: Thu, 7 Sep 2023 11:46:26 +0800 Subject: [PATCH] cups-brother-hl2260d: init at 3.2.0-1 --- pkgs/misc/cups/drivers/hl2260d/default.nix | 89 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 91 insertions(+) create mode 100644 pkgs/misc/cups/drivers/hl2260d/default.nix diff --git a/pkgs/misc/cups/drivers/hl2260d/default.nix b/pkgs/misc/cups/drivers/hl2260d/default.nix new file mode 100644 index 000000000000..9883bd99a314 --- /dev/null +++ b/pkgs/misc/cups/drivers/hl2260d/default.nix @@ -0,0 +1,89 @@ +{ lib, stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, coreutils, perl, gnugrep, which +, debugLvl ? "0" +}: + +let + version = "3.2.0-1"; + lprdeb = fetchurl { + url = "https://download.brother.com/welcome/dlf102692/hl2260dlpr-${version}.i386.deb"; + hash = "sha256-R+cM2SKc/MP6keo3PUrKXPC6a2dEQQdBunrpNtAHlH0="; + }; + + cupsdeb = fetchurl { + url = "https://download.brother.com/welcome/dlf102693/hl2260dcupswrapper-${version}.i386.deb"; + hash = "sha256-k6+ulZVoFTpEY6WJ9TO9Rzp2c4dwPqL3NY5/XYJpvOc="; + }; +in +stdenv.mkDerivation { + pname = "cups-brother-hl2260d"; + inherit version; + + nativeBuildInputs = [ makeWrapper dpkg ]; + buildInputs = [ cups ghostscript perl ]; + + dontPatchELF = true; + dontBuild = true; + + unpackPhase = '' + mkdir -p $out + dpkg-deb -x ${cupsdeb} $out + dpkg-deb -x ${lprdeb} $out + ''; + + patchPhase = '' + # Patch lpr + INFDIR=$out/opt/brother/Printers/HL2260D/inf + LPDDIR=$out/opt/brother/Printers/HL2260D/lpd + + substituteInPlace $LPDDIR/filter_HL2260D \ + --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$out/opt/brother/Printers/HL2260D\"; #" \ + --replace "PRINTER =~" "PRINTER = \"HL2260D\"; #" + + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $INFDIR/braddprinter + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $LPDDIR/brprintconflsr3 + patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $LPDDIR/rawtobr3 + + # Patch cupswrapper + WRAPPER=$out/opt/brother/Printers/HL2260D/cupswrapper/brother_lpdwrapper_HL2260D + PAPER_CFG=$out/opt/brother/Printers/HL2260D/cupswrapper/paperconfigml1 + + substituteInPlace $WRAPPER \ + --replace "basedir =~" "basedir = \"$out/opt/brother/Printers/HL2260D\"; #" \ + --replace "PRINTER =~" "PRINTER = \"HL2260D\"; #" \ + --replace "\$DEBUG=0;" "\$DEBUG=${debugLvl};" + substituteInPlace $WRAPPER \ + --replace "\`cp " "\`cp -p " \ + --replace "\$TEMPRC\`" "\$TEMPRC; chmod a+rw \$TEMPRC\`" \ + --replace "\`mv " "\`cp -p " + # This config script make this assumption that the *.ppd are found in a global location `/etc/cups/ppd`. + substituteInPlace $PAPER_CFG \ + --replace "/etc/cups/ppd" "$out/share/cups/model" + ''; + + installPhase = '' + mkdir -p $out/share/cups/model + ln -s $out/opt/brother/Printers/HL2260D/cupswrapper/brother-HL2260D-cups-en.ppd $out/share/cups/model + + mkdir -p $out/lib/cups/filter/ + makeWrapper \ + $out/opt/brother/Printers/HL2260D/cupswrapper/brother_lpdwrapper_HL2260D \ + $out/lib/cups/filter/brother_lpdwrapper_HL2260D \ + --prefix PATH : ${lib.makeBinPath [coreutils gnugrep gnused]} + + wrapProgram $out/opt/brother/Printers/HL2260D/lpd/filter_HL2260D \ + --prefix PATH ":" ${ lib.makeBinPath [ ghostscript which ] } + ''; + + meta = with lib; { + homepage = "http://www.brother.com/"; + description = "Brother HL-2260D printer driver"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = [ "x86_64-linux" "i686-linux" ]; + downloadPage = "https://support.brother.com/g/b/downloadtop.aspx?c=cn_ot&lang=en&prod=hl2260d_cn"; + maintainers = with maintainers; [ u2x1 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 55b14c6948c5..9ad2a2a4b7d0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -39407,6 +39407,8 @@ with pkgs; cups-brother-hl1210w = pkgsi686Linux.callPackage ../misc/cups/drivers/hl1210w { }; + cups-brother-hl2260d = pkgsi686Linux.callPackage ../misc/cups/drivers/hl2260d { }; + cups-brother-hl3140cw = pkgsi686Linux.callPackage ../misc/cups/drivers/hl3140cw { }; cups-brother-hll2340dw = pkgsi686Linux.callPackage ../misc/cups/drivers/hll2340dw { };