109 lines
3.3 KiB
Nix
109 lines
3.3 KiB
Nix
{
|
|
pkgsi686Linux,
|
|
stdenv,
|
|
fetchurl,
|
|
dpkg,
|
|
makeWrapper,
|
|
coreutils,
|
|
ghostscript,
|
|
gnugrep,
|
|
gnused,
|
|
which,
|
|
lib,
|
|
cups,
|
|
a2ps,
|
|
gawk,
|
|
file,
|
|
proot,
|
|
bash,
|
|
}: let
|
|
model = "dcpj4110dw";
|
|
version = "3.0.1-1";
|
|
src = fetchurl {
|
|
url = "https://download.brother.com/welcome/dlf005595/${model}lpr-${version}.i386.deb";
|
|
sha256 = "sha256-ryKDsSkabAD2X3WLmeqjdB3+4DXdJ0qUz3O64DV+ixw=";
|
|
};
|
|
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 = ''
|
|
# need to use i686 glibc here, these are 32bit proprietary binaries
|
|
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
|
$out/${reldir}/lpd/br${model}filter
|
|
|
|
mkdir -p $out/lib/cups/filter/
|
|
ln -s $out/${reldir}/lpd/filter${model} $out/lib/cups/filter/brother_lpdwrapper_${model}
|
|
|
|
# use proot to bind /opt for the filter
|
|
mv $out/${reldir}/lpd/filter${model} $out/${reldir}/lpd/.wrapped_filter${model}
|
|
|
|
cat <<-EOF >$out/${reldir}/lpd/.wrapper_inner_filter${model}
|
|
export PATH=\$PATH:${lib.makeBinPath [gawk file a2ps coreutils ghostscript gnugrep gnused which]}
|
|
exec $out/${reldir}/lpd/.wrapped_filter${model}
|
|
EOF
|
|
chmod +x $out/${reldir}/lpd/.wrapper_inner_filter${model}
|
|
|
|
cat <<-EOF >$out/${reldir}/lpd/filter${model}
|
|
#!${bash}/bin/bash
|
|
exec ${proot}/bin/proot \
|
|
-b /nix/store:/nix/store \
|
|
-b $out/opt:/opt \
|
|
-b ${cups}/share:/usr/share/cups \
|
|
$out/${reldir}/lpd/.wrapper_inner_filter${model}
|
|
EOF
|
|
chmod +x $out/${reldir}/lpd/filter${model}
|
|
'';
|
|
|
|
meta = {
|
|
description = "Brother ${lib.strings.toUpper model} driver";
|
|
homepage = "http://www.brother.com/";
|
|
sourceProvenance = with lib.sourceTypes; [binaryNativeCode];
|
|
# license = lib.licenses.unfree;
|
|
platforms = ["x86_64-linux" "i686-linux"];
|
|
maintainers = [lib.maintainers.steveej];
|
|
};
|
|
};
|
|
|
|
cupswrapper = stdenv.mkDerivation rec {
|
|
inherit version;
|
|
|
|
src = fetchurl {
|
|
url = "https://download.brother.com/welcome/dlf005597/${model}cupswrapper-${version}.i386.deb";
|
|
sha256 = "sha256-nwpuuXqBrEh5tye14gFLrezktTz6kq7HtnGqdBbgGkk=";
|
|
};
|
|
|
|
name = "${model}cupswrapper-${version}";
|
|
|
|
nativeBuildInputs = [dpkg makeWrapper];
|
|
buildInputs = [cups ghostscript a2ps gawk];
|
|
|
|
unpackPhase = "dpkg-deb -x $src $out";
|
|
|
|
installPhase = ''
|
|
wrapProgram $out/${reldir}/cupswrapper/cupswrapper${model} \
|
|
--prefix PATH : ${lib.makeBinPath [coreutils ghostscript gnugrep gnused]}
|
|
|
|
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
|
$out/${reldir}/cupswrapper/brcupsconfpt1
|
|
|
|
mkdir -p $out/share/cups/model
|
|
ln -s $out/${reldir}/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/";
|
|
sourceProvenance = with lib.sourceTypes; [binaryNativeCode];
|
|
license = lib.licenses.gpl2;
|
|
platforms = ["x86_64-linux" "i686-linux"];
|
|
maintainers = [lib.maintainers.steveej];
|
|
};
|
|
};
|
|
}
|