summary refs log tree commit diff
path: root/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/misc/cups/drivers/samsung/1.00.36/default.nix')
-rw-r--r--pkgs/misc/cups/drivers/samsung/1.00.36/default.nix116
1 files changed, 116 insertions, 0 deletions
diff --git a/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix b/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix
new file mode 100644
index 00000000000..872e49dc3c7
--- /dev/null
+++ b/pkgs/misc/cups/drivers/samsung/1.00.36/default.nix
@@ -0,0 +1,116 @@
+{ stdenv, fetchurl, glibc, cups, libusb, libxml2, ghostscript, perl }:
+
+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.36";
+
+  src = fetchurl {
+    sha256 = "1a7ngd03x0bkdl7pszy5zqqic0plxvdxqm5w7klr6hbdskx1lir9";
+    url = "http://www.bchemnet.com/suldr/driver/UnifiedLinuxDriver-${version}.tar.gz";
+  };
+
+  buildInputs = [
+    cups
+    libusb
+    libxml2
+    perl
+  ];
+
+  installPhase = ''
+
+    mkdir -p $out/bin
+    cp -R ${arch}/{gettext,pstosecps,rastertospl,smfpnetdiscovery,usbresetter} $out/bin
+
+    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.conf
+
+    mkdir -p $out/etc/smfp-common/scanner/share/
+    install -m644 noarch/libsane-smfp.cfg $out/etc/smfp-common/scanner/share/
+    install -m644 noarch/pagesize.xml $out/etc/smfp-common/scanner/share/
+
+    mkdir -p $out/etc/samsung/scanner/share/
+    install -m644 noarch/oem.conf $out/etc/samsung/scanner/share/
+
+    mkdir -p $out/lib
+    install -m755 ${arch}/libscmssc.so* $out/lib
+
+    mkdir -p $out/lib/cups/backend
+    ln -s $out/bin/smfpnetdiscovery $out/lib/cups/backend
+
+    mkdir -p $out/lib/cups/filter
+    ln -s $out/bin/{pstosecps,rastertospl} $out/lib/cups/filter
+    ln -s $ghostscript/bin/gs $out/lib/cups/filter
+
+    mkdir -p $out/lib/sane
+    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
+
+    perl -pi -e \
+      's|/opt/smfp-common/scanner/.usedby/|/tmp/\0\0fp-common/scanner/.usedby/|g' \
+       $out/lib/sane/libsane-smfp.so.1.0.1
+    perl -pi -e 's|/opt|/etc|g' \
+       $out/lib/sane/libsane-smfp.so.1.0.1 \
+       $out/bin/rastertospl \
+       noarch/package_utils \
+       noarch/pre_install.sh
+
+    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
+      chmod -x $out/lib/udev/rules.d/60_smfp_samsung.rules
+    )
+
+    mkdir -p $out/share
+    cp -R noarch/share/* $out/share
+    gzip -9 $out/share/ppd/*.ppd
+    rm -r $out/share/locale/*/*/install.mo
+
+    mkdir -p $out/share/cups
+    cd $out/share/cups
+    ln -s ../ppd .
+    ln -s ppd model
+  '';
+
+  preFixup = ''
+    for bin in "$out/bin/"*; do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$bin"
+      patchelf --set-rpath "$out/lib:${stdenv.lib.getLib cups}/lib" "$bin"
+    done
+
+    patchelf --set-rpath "$out/lib:${stdenv.lib.getLib cups}/lib" "$out/lib/libscmssc.so"
+    patchelf --set-rpath "$out/lib:${libxml2.out}/lib:${libusb.out}/lib" "$out/lib/sane/libsane-smfp.so.1.0.1"
+
+    ln -s ${stdenv.cc.cc.lib}/lib/libstdc++.so.6 $out/lib/
+  '';
+
+  # all binaries are already stripped
+  dontStrip = true;
+
+  # we did this in prefixup already
+  dontPatchELF = true;
+
+  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; [ tohl ];
+  };
+}