af911744fd
Very experimental. Probably very broken. Adds support for newer models but removes it for some older ones. Hence not the default yet, if ever.
90 lines
2.8 KiB
Nix
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 ];
|
|
};
|
|
}
|