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