nixpkgs/pkgs/applications/graphics/sane/backends/generic.nix
Jonathan Ringer 9bb3fccb5b treewide: pkgs.pkgconfig -> pkgs.pkg-config, move pkgconfig to alias.nix
continuation of #109595

pkgconfig was aliased in 2018, however, it remained in
all-packages.nix due to its wide usage. This cleans
up the remaining references to pkgs.pkgsconfig and
moves the entry to aliases.nix.

python3Packages.pkgconfig remained unchanged because
it's the canonical name of the upstream package
on pypi.
2021-01-19 01:16:25 -08:00

96 lines
2.6 KiB
Nix

{ lib, stdenv
, gettext, pkg-config
, avahi, libgphoto2, libieee1284, libjpeg, libpng, libtiff, libusb1, libv4l, net-snmp
# 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, ...
}:
stdenv.mkDerivation {
inherit src version;
name = "sane-backends-${version}";
outputs = [ "out" "doc" "man" ];
nativeBuildInputs = [
gettext
pkg-config
];
buildInputs = [
avahi
libgphoto2
libieee1284
libjpeg
libpng
libtiff
libusb1
libv4l
net-snmp
];
enableParallelBuilding = true;
configureFlags = []
++ lib.optional (avahi != null) "--enable-avahi"
++ lib.optional (libusb1 != null) "--with-usb"
;
postInstall = let
compatFirmware = extraFirmware
++ lib.optional (gt68xxFirmware != null) {
src = gt68xxFirmware.fw;
inherit (gt68xxFirmware) name;
backend = "gt68xx";
}
++ 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
# the created 49-libsane references /bin/sh
substituteInPlace $out/etc/udev/rules.d/49-libsane.rules \
--replace "RUN+=\"/bin/sh" "RUN+=\"${stdenv.shell}"
substituteInPlace $out/lib/libsane.la \
--replace "-ljpeg" "-L${libjpeg.out}/lib -ljpeg"
# net.conf conflicts with the file generated by the nixos module
rm -f $out/etc/sane.d/net.conf
'' + lib.concatStrings (builtins.map installFirmware compatFirmware);
meta = with lib; {
description = "SANE (Scanner Access Now Easy) backends";
longDescription = ''
Collection of open-source SANE backends (device drivers).
SANE is a universal scanner interface providing standardized access to
any raster image scanner hardware: flatbed scanners, hand-held scanners,
video- and still-cameras, frame-grabbers, etc. For a list of supported
scanners, see http://www.sane-project.org/sane-backends.html.
'';
homepage = "http://www.sane-project.org/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ peti ];
platforms = platforms.linux;
};
}