1{ stdenv, lib, brscan5, netDevices ? [] }:
2
3/*
4
5Testing
6-------
7From nixpkgs repo
8
9No net devices:
10
11~~~
12nix-build -E 'let pkgs = import ./. {};
13 brscan5-etc-files = pkgs.callPackage (import ./nixos/modules/services/hardware/sane_extra_backends/brscan5_etc_files.nix) {};
14 in brscan5-etc-files'
15~~~
16
17Two net devices:
18
19~~~
20nix-build -E 'let pkgs = import ./. {};
21 brscan5-etc-files = pkgs.callPackage (import ./nixos/modules/services/hardware/sane_extra_backends/brscan5_etc_files.nix) {};
22 in brscan5-etc-files.override {
23 netDevices = [
24 {name="a"; model="ADS-1200"; nodename="BRW0080927AFBCE";}
25 {name="b"; model="ADS-1200"; ip="192.168.1.2";}
26 ];
27 }'
28~~~
29
30*/
31
32let
33
34 addNetDev = nd: ''
35 brsaneconfig5 -a \
36 name="${nd.name}" \
37 model="${nd.model}" \
38 ${if (lib.hasAttr "nodename" nd && nd.nodename != null) then
39 ''nodename="${nd.nodename}"'' else
40 ''ip="${nd.ip}"''}'';
41 addAllNetDev = xs: lib.concatStringsSep "\n" (map addNetDev xs);
42in
43
44stdenv.mkDerivation {
45
46 name = "brscan5-etc-files";
47 version = "1.2.6-0";
48 src = "${brscan5}/opt/brother/scanner/brscan5";
49
50 nativeBuildInputs = [ brscan5 ];
51
52 dontConfigure = true;
53
54 buildPhase = ''
55 TARGET_DIR="$out/etc/opt/brother/scanner/brscan5"
56 mkdir -p "$TARGET_DIR"
57 cp -rp "./models" "$TARGET_DIR"
58 cp -rp "./brscan5.ini" "$TARGET_DIR"
59 cp -rp "./brsanenetdevice.cfg" "$TARGET_DIR"
60
61 export NIX_REDIRECTS="/etc/opt/brother/scanner/brscan5/=$TARGET_DIR/"
62
63 printf '${addAllNetDev netDevices}\n'
64
65 ${addAllNetDev netDevices}
66 '';
67
68 dontInstall = true;
69
70 meta = with lib; {
71 description = "Brother brscan5 sane backend driver etc files";
72 homepage = "https://www.brother.com";
73 platforms = platforms.linux;
74 license = licenses.unfree;
75 maintainers = with maintainers; [ mattchrist ];
76 };
77}