From 0eecd67d1408369e07141172260c03ea17d8ceca Mon Sep 17 00:00:00 2001 From: Evgeny Egorochkin Date: Wed, 5 Dec 2012 05:37:44 +0200 Subject: [PATCH] Package Samsung unified printer driver. i686 only but apparently can be improved to support x86_64. Based on patch by James Cook --- pkgs/misc/cups/drivers/samsung/builder.sh | 35 ++++++++++++++++++++++ pkgs/misc/cups/drivers/samsung/default.nix | 35 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 9 ++++++ 3 files changed, 79 insertions(+) create mode 100644 pkgs/misc/cups/drivers/samsung/builder.sh create mode 100644 pkgs/misc/cups/drivers/samsung/default.nix diff --git a/pkgs/misc/cups/drivers/samsung/builder.sh b/pkgs/misc/cups/drivers/samsung/builder.sh new file mode 100644 index 00000000000..58e1c0cd781 --- /dev/null +++ b/pkgs/misc/cups/drivers/samsung/builder.sh @@ -0,0 +1,35 @@ +source $stdenv/setup + +arch=$(uname -m) +# replace i[3456]86 with i386 +echo arch | egrep -q '^i[3456]86$' && arch=i386 +arch=i386 +unpackPhase +patchPhase + +set -v + +echo $arch +cd cdroot/Linux +mkdir -p $out/opt +cp -r $arch/at_root/* $out +cp -r $arch/at_opt/* $out/opt +#cp -r noarch/at_root/* $out +cp -r noarch/at_opt/* $out/opt + +cd $out +#test -d usr/lib64 && ln -s usr/lib64 lib || +ln -s usr/lib lib +mkdir -p share/cups +cd share/cups +ln -s ../../opt/share/* . +ln -s ppd model + +cd $out/lib/cups/filter +for i in $(ls); do + echo patching $i... + patchelf --set-interpreter $(cat $NIX_GCC/nix-support/dynamic-linker) $i || echo "(couldn't set interpreter)" + patchelf --set-rpath $cups/lib:$gcc/lib:$glibc/lib $i # This might not be necessary. +done + +ln -s $ghostscript/bin/gs $out/lib/cups/filter diff --git a/pkgs/misc/cups/drivers/samsung/default.nix b/pkgs/misc/cups/drivers/samsung/default.nix new file mode 100644 index 00000000000..ab0c0dc25e4 --- /dev/null +++ b/pkgs/misc/cups/drivers/samsung/default.nix @@ -0,0 +1,35 @@ +# Tested on linux-x86_64. Might work on linux-i386. Probably won't work on anything else. + +# To use this driver in NixOS, add it to printing.drivers in configuration.nix. +# configuration.nix might look like this when you're done: +# { pkgs, ... }: { +# printing = { +# enable = true; +# drivers = [ pkgs.samsungUnifiedLinuxDriver ]; +# }; +# (more stuff) +# } +# (This advice was tested on 2010 August 2.) + +{stdenv, fetchurl, cups, gcc, ghostscript, glibc, patchelf}: + +stdenv.mkDerivation rec { + name = "samsung-UnifiedLinuxDriver-0.92"; + + src = fetchurl { + url = "http://downloadcenter.samsung.com/content/DR/200911/20091103171827750/UnifiedLinuxDriver_0.92.tar.gz"; + sha256 = "0p2am0p8xvm339mad07c4j77gz31m63z76sy6d9hgwmxy2prbqfq"; + }; + + buildInputs = [ cups gcc ghostscript glibc patchelf ]; + + inherit cups gcc ghostscript glibc; + + builder = ./builder.sh; + + meta = { + description = "Samsung's Linux drivers; includes binaries without source code"; + homepage = "http://www.samsung.com/"; + license = "samsung"; # Binary-only + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index eb85702119f..41f10bc8101 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8893,6 +8893,15 @@ let xlockmore = callPackage ../misc/screensavers/xlockmore { }; + samsungUnifiedLinuxDriver = import ../misc/cups/drivers/samsung { + inherit fetchurl stdenv; + inherit cups ghostscript glibc patchelf; + gcc = import ../development/compilers/gcc/4.4 { + inherit stdenv fetchurl texinfo gmp mpfr noSysDirs gettext which; + profiledCompiler = true; + }; + }; + saneBackends = callPackage ../applications/graphics/sane/backends.nix { gt68xxFirmware = config.sane.gt68xxFirmware or null; hotplugSupport = config.sane.hotplugSupport or true;