nixos/preload: init
[NixPkgs.git] / nixos / modules / services / hardware / sane_extra_backends / brscan5_etc_files.nix
blob432f0316a4fa82f9aba17a80e0e65697a6580882
1 { stdenv, lib, brscan5, netDevices ? [] }:
3 /*
5 Testing
6 -------
7 From nixpkgs repo
9 No net devices:
11 ~~~
12 nix-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 ~~~
17 Two net devices:
19 ~~~
20 nix-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 ~~~
32 let
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);
44 stdenv.mkDerivation {
46   name = "brscan5-etc-files";
47   version = "1.2.6-0";
48   src = "${brscan5}/opt/brother/scanner/brscan5";
50   nativeBuildInputs = [ brscan5 ];
52   dontConfigure = true;
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"
61     export NIX_REDIRECTS="/etc/opt/brother/scanner/brscan5/=$TARGET_DIR/"
63     printf '${addAllNetDev netDevices}\n'
65     ${addAllNetDev netDevices}
66   '';
68   dontInstall = true;
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   };