diff options
author | Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com> | 2015-12-26 19:48:33 +0100 |
---|---|---|
committer | Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com> | 2015-12-26 19:50:17 +0100 |
commit | 8b4273a65dfc73044f27f6f43fc7f9a7c2202d9f (patch) | |
tree | 403a1bb32b9c31ae3f5cd3b0205d84ae35180efd /pkgs/applications/graphics | |
parent | c05165ba5ce24fb793040218b8e899c53bda448c (diff) | |
download | nixlib-8b4273a65dfc73044f27f6f43fc7f9a7c2202d9f.tar nixlib-8b4273a65dfc73044f27f6f43fc7f9a7c2202d9f.tar.gz nixlib-8b4273a65dfc73044f27f6f43fc7f9a7c2202d9f.tar.bz2 nixlib-8b4273a65dfc73044f27f6f43fc7f9a7c2202d9f.tar.lz nixlib-8b4273a65dfc73044f27f6f43fc7f9a7c2202d9f.tar.xz nixlib-8b4273a65dfc73044f27f6f43fc7f9a7c2202d9f.tar.zst nixlib-8b4273a65dfc73044f27f6f43fc7f9a7c2202d9f.zip |
saneBackends: add generic extraFirmware support
This usurps the model-specific gt68xxFirmware and snapscanFirmware, which are still supported for backwards compatibility – hopefully not forever.
Diffstat (limited to 'pkgs/applications/graphics')
-rw-r--r-- | pkgs/applications/graphics/sane/backends/generic.nix | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/pkgs/applications/graphics/sane/backends/generic.nix b/pkgs/applications/graphics/sane/backends/generic.nix index 5b6c8943783d..e98774a43681 100644 --- a/pkgs/applications/graphics/sane/backends/generic.nix +++ b/pkgs/applications/graphics/sane/backends/generic.nix @@ -1,7 +1,14 @@ { stdenv, fetchurl , avahi, libusb1, libv4l, net_snmp , gettext, pkgconfig + +# List of { src name backend } attibute sets - see installFirmware below: +, extraFirmware ? [] + +# For backwards compatibility with older setups; use extraFirmware instead: , gt68xxFirmware ? null, snapscanFirmware ? null + +# Passed from versioned package (e.g. default.nix, git.nix): , version, src, ... }: @@ -20,20 +27,30 @@ stdenv.mkDerivation { buildInputs = [ avahi libusb1 libv4l net_snmp ]; nativeBuildInputs = [ gettext pkgconfig ]; - postInstall = '' + postInstall = let + + compatFirmware = extraFirmware + ++ stdenv.lib.optional (gt68xxFirmware != null) { + src = gt68xxFirmware.fw; + inherit (gt68xxFirmware) name; + backend = "gt68xx"; + } + ++ stdenv.lib.optional (snapscanFirmware != null) { + src = snapscanFirmware; + name = "your-firmwarefile.bin"; + backend = "snapscan"; + }; + + installFirmware = f: '' + mkdir -p $out/share/sane/${f.backend} + ln -sv ${f.src} $out/share/sane/${f.backend}/${f.name} + ''; + + in '' mkdir -p $out/etc/udev/rules.d/ ./tools/sane-desc -m udev > $out/etc/udev/rules.d/49-libsane.rules || \ cp tools/udev/libsane.rules $out/etc/udev/rules.d/49-libsane.rules - ''; - - preInstall = - if gt68xxFirmware != null then - "mkdir -p \${out}/share/sane/gt68xx ; ln -s " + gt68xxFirmware.fw + - " \${out}/share/sane/gt68xx/" + gt68xxFirmware.name - else if snapscanFirmware != null then - "mkdir -p \${out}/share/sane/snapscan ; ln -s " + snapscanFirmware + - " \${out}/share/sane/snapscan/your-firmwarefile.bin" - else ""; + '' + stdenv.lib.concatStrings (builtins.map installFirmware compatFirmware); meta = with stdenv.lib; { inherit version; |