nixpkgs/pkgs/misc/cups/drivers/samsung/default.nix
Tobias Geerinckx-Rice af911744fd samsung-unified-linux-driver: add 1.00.37
Very experimental. Probably very broken. Adds support for newer
models but removes it for some older ones.

Hence not the default yet, if ever.
2016-01-26 04:09:36 +01:00

90 lines
2.8 KiB
Nix

{ stdenv, fetchurl, patchelf, cups, libusb, libxml2 }:
let
arch = if stdenv.system == "x86_64-linux"
then "x86_64"
else "i386";
in stdenv.mkDerivation rec {
name = "samsung-unified-linux-driver-${version}";
version = "1.00.37";
src = fetchurl {
sha256 = "0r66l9zp0p1qgakh4j08hynwsr4lsgq5yrpxyr0x4ldvl0z2b1bb";
url = "http://www.bchemnet.com/suldr/driver/UnifiedLinuxDriver-${version}.tar.gz";
};
nativeBuildInputs = [ patchelf ];
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
my_patchelf() {
opts=(); while [[ "$1" != - ]]; do opts+=( "$1" ); shift; done; shift
for binary in "$@"; do
echo "Patching ELF file: $binary"
patchelf "''${opts[@]}" $binary
ldd $binary | grep "not found" && exit 1
done; true
}
my_patchelf \
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
--set-rpath ${cups}/lib:$(cat $NIX_CC/nix-support/orig-cc)/lib:${stdenv.glibc}/lib \
- ${arch}/{pstosecps,rastertospl,smfpnetdiscovery}
mkdir -p $out/etc/sane.d/dll.d/
install -m644 noarch/etc/smfp.conf $out/etc/sane.d
echo smfp >> $out/etc/sane.d/dll.d/smfp-scanner
mkdir -p $out/lib
my_patchelf \
--set-rpath $(cat $NIX_CC/nix-support/orig-cc)/lib:${stdenv.glibc}/lib \
- ${arch}/libscmssc.so*
install -m755 ${arch}/libscmssc.so* $out/lib
mkdir -p $out/lib/cups/backend
install -m755 ${arch}/smfpnetdiscovery $out/lib/cups/backend
mkdir -p $out/lib/cups/filter
install -m755 ${arch}/{pstosecps,rastertospl} $out/lib/cups/filter
mkdir -p $out/lib/sane
my_patchelf \
--set-rpath $(cat $NIX_CC/nix-support/orig-cc)/lib:${stdenv.glibc}/lib:${libusb}/lib:${libxml2}/lib \
- ${arch}/libsane-smfp.so*
install -m755 ${arch}/libsane-smfp.so* $out/lib/sane
ln -s libsane-smfp.so.1.0.1 $out/lib/sane/libsane-smfp.so.1
ln -s libsane-smfp.so.1 $out/lib/sane/libsane-smfp.so
mkdir -p $out/lib/udev/rules.d
(
OEM_FILE=noarch/oem.conf
INSTALL_LOG_FILE=/dev/null
. noarch/scripting_utils
. noarch/package_utils
. noarch/scanner-script.pkg
fill_full_template noarch/etc/smfp.rules.in $out/lib/udev/rules.d/60_smfp_samsung.rules
)
mkdir -p $out/share/ppd
gzip -9 noarch/share/ppd/*.ppd
cp -R noarch/share/ppd $out/share/ppd/suld
cp -R noarch/share/locale $out/share
rm -r $out/share/locale/*/*/install.mo
'';
meta = with stdenv.lib; {
description = "Unified Linux Driver for Samsung printers and scanners";
homepage = http://www.bchemnet.com/suldr;
downloadPage = http://www.bchemnet.com/suldr/driver/;
license = licenses.unfree;
# Tested on linux-x86_64. Might work on linux-i386.
# Probably won't work on anything else.
platforms = platforms.linux;
maintainers = with maintainers; [ nckx ];
};
}