at 25.11-pre 2.0 kB view raw
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}