nixos/preload: init
[NixPkgs.git] / nixos / modules / services / hardware / sane_extra_backends / brscan4_etc_files.nix
blobf76ab701c5b9b1f77fdc4791509fa945f3ed9029
1 { stdenv, lib, brscan4, netDevices ? [] }:
3 /*
5 Testing
6 -------
8 No net devices:
10 ~~~
11 nix-shell -E 'with import <nixpkgs> { }; brscan4-etc-files'
12 ~~~
14 Two net devices:
16 ~~~
17 nix-shell -E 'with import <nixpkgs> { }; brscan4-etc-files.override{netDevices=[{name="a"; model="MFC-7860DW"; nodename="BRW0080927AFBCE";} {name="b"; model="MFC-7860DW"; ip="192.168.1.2";}];}'
18 ~~~
22 let
24   addNetDev = nd: ''
25     brsaneconfig4 -a \
26     name="${nd.name}" \
27     model="${nd.model}" \
28     ${if (lib.hasAttr "nodename" nd && nd.nodename != null) then
29       ''nodename="${nd.nodename}"'' else
30       ''ip="${nd.ip}"''}'';
31   addAllNetDev = xs: lib.concatStringsSep "\n" (map addNetDev xs);
34 stdenv.mkDerivation {
36   pname = "brscan4-etc-files";
37   version = "0.4.3-3";
38   src = "${brscan4}/opt/brother/scanner/brscan4";
40   nativeBuildInputs = [ brscan4 ];
42   dontConfigure = true;
44   buildPhase = ''
45     TARGET_DIR="$out/etc/opt/brother/scanner/brscan4"
46     mkdir -p "$TARGET_DIR"
47     cp -rp "./models4" "$TARGET_DIR"
48     cp -rp "./Brsane4.ini" "$TARGET_DIR"
49     cp -rp "./brsanenetdevice4.cfg" "$TARGET_DIR"
51     export BRSANENETDEVICE4_CFG_FILENAME="$TARGET_DIR/brsanenetdevice4.cfg"
53     printf '${addAllNetDev netDevices}\n'
55     ${addAllNetDev netDevices}
56   '';
58   dontInstall = true;
59   dontStrip = true;
60   dontPatchELF = true;
62   meta = with lib; {
63     description = "Brother brscan4 sane backend driver etc files";
64     homepage = "http://www.brother.com";
65     platforms = platforms.linux;
66     license = licenses.unfree;
67     maintainers = with maintainers; [ jraygauthier ];
68   };