toxic: 0.15.1 -> 0.16.0
[NixPkgs.git] / nixos / modules / services / hardware / sane_extra_backends / brscan5_etc_files.nix
blob9ad64c41ee69d14f13e7da06aa03685a66aed292
2   stdenv,
3   lib,
4   brscan5,
5   netDevices ? [ ],
6 }:
8 /*
9   Testing
10   -------
11   From nixpkgs repo
13   No net devices:
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   ~~~
21   Two net devices:
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   ~~~
35 let
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);
50 stdenv.mkDerivation {
52   name = "brscan5-etc-files";
53   version = "1.2.6-0";
54   src = "${brscan5}/opt/brother/scanner/brscan5";
56   nativeBuildInputs = [ brscan5 ];
58   dontConfigure = true;
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"
67     export NIX_REDIRECTS="/etc/opt/brother/scanner/brscan5/=$TARGET_DIR/"
69     printf '${addAllNetDev netDevices}\n'
71     ${addAllNetDev netDevices}
72   '';
74   dontInstall = true;
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   };