Skip to content
Permalink
Browse files

Merge pull request #57077 from callahad/brother-dsseries

dsseries: init at 1.0.5-1
  • Loading branch information...
ryantm committed Mar 15, 2019
2 parents e59fe20 + c80385d commit 4b6a41a939faf6d224d593af68f305fdb69b6ddc
@@ -310,6 +310,7 @@
./services/hardware/ratbagd.nix
./services/hardware/sane.nix
./services/hardware/sane_extra_backends/brscan4.nix
./services/hardware/sane_extra_backends/dsseries.nix
./services/hardware/tcsd.nix
./services/hardware/tlp.nix
./services/hardware/thinkfan.nix
@@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:

with lib;

{
options = {

hardware.sane.dsseries.enable =
mkEnableOption "Brother DSSeries scan backend" // {
description = ''
When enabled, will automatically register the "dsseries" SANE backend.
This supports the Brother DSmobile scanner series, including the
DS-620, DS-720D, DS-820W, and DS-920DW scanners.
'';
};
};

config = mkIf (config.hardware.sane.enable && config.hardware.sane.dsseries.enable) {

hardware.sane.extraBackends = [ pkgs.dsseries ];
services.udev.packages = [ pkgs.dsseries ];
boot.kernelModules = [ "sg" ];

};
}
@@ -0,0 +1,53 @@
{ stdenv, fetchurl, rpmextract }:

stdenv.mkDerivation rec {
name = "libsane-dsseries-${version}";
version = "1.0.5-1";

src = fetchurl {
url = "https://download.brother.com/welcome/dlf100974/${name}.x86_64.rpm";
sha256 = "1wfdbfbf51cc7njzikdg48kwpnpc0pg5s6p0s0y3z0q7y59x2wbq";
};

nativeBuildInputs = [ rpmextract ];

unpackCmd = ''
mkdir ${name} && pushd ${name}
rpmextract $curSrc
popd
'';

patchPhase = ''
substituteInPlace etc/udev/rules.d/50-Brother_DSScanner.rules \
--replace 'GROUP="users"' 'GROUP="scanner", ENV{libsane_matched}="yes"'
mkdir -p etc/sane.d/dll.d
echo "dsseries" > etc/sane.d/dll.d/dsseries.conf
'';

installPhase = ''
mkdir -p $out
cp -dr etc $out
cp -dr usr/lib64 $out/lib
'';

preFixup = ''
for f in `find $out/lib/sane/ -type f`; do
# Make it possible to find libstdc++.so.6
patchelf --set-rpath ${stdenv.cc.cc.lib}/lib:$out/lib/sane $f
# Horrible kludge: The driver hardcodes /usr/lib/sane/ as a dlopen path.
# We can directly modify the binary to force a relative lookup instead.
# The new path is NULL-padded to the same length as the original path.
sed -i "s|/usr/lib/sane/%s|%s\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|g" $f
done
'';

meta = {
description = "Brother DSSeries SANE backend driver";
homepage = http://www.brother.com;
platforms = stdenv.lib.platforms.linux;
license = stdenv.lib.licenses.unfree;
maintainers = with stdenv.lib.maintainers; [ callahad ];
};
}

brscan4 = callPackage ../applications/graphics/sane/backends/brscan4 { };

dsseries = callPackage ../applications/graphics/sane/backends/dsseries { };

mkSaneConfig = callPackage ../applications/graphics/sane/config.nix { };

sane-frontends = callPackage ../applications/graphics/sane/frontends.nix { };

0 comments on commit 4b6a41a

Please sign in to comment.
You can’t perform that action at this time.