git-nomad: 0.7.1 -> 0.8.0 (#365279)
[NixPkgs.git] / pkgs / misc / cups / drivers / samsung / 4.01.17.nix
blob05bf9c263d1548e70719c178667f5f34ea46f79f
1 # Tested on linux-x86_64.  Might work on linux-i386.  Probably won't work on anything else.
3 # To use this driver in NixOS, add it to printing.drivers in configuration.nix.
4 # configuration.nix might look like this when you're done:
5 # { pkgs, ... }: {
6 #   printing = {
7 #     enable = true;
8 #     drivers = [ pkgs.samsung-unified-linux-driver_4_01_17 ];
9 #   };
10 #   (more stuff)
11 # }
12 # (This advice was tested on the 1st November 2016.)
15   lib,
16   stdenv,
17   cups,
18   libusb-compat-0_1,
19   fetchurl,
20   patchPpdFilesHook,
23 # Do not bump lightly! Visit <http://www.bchemnet.com/suldr/supported.html>
24 # to see what will break when upgrading. Consider a new versioned attribute.
25 let
26   installationPath = if stdenv.hostPlatform.system == "x86_64-linux" then "x86_64" else "i386";
27   appendPath = lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux") "64";
28   libPath =
29     lib.makeLibraryPath [
30       cups
31       libusb-compat-0_1
32     ]
33     + ":$out/lib:${lib.getLib stdenv.cc.cc}/lib${appendPath}";
35 stdenv.mkDerivation rec {
36   pname = "samsung-UnifiedLinuxDriver";
37   version = "4.01.17";
39   src = fetchurl {
40     url = "http://www.bchemnet.com/suldr/driver/UnifiedLinuxDriver-${version}.tar.gz";
41     sha256 = "1vv3pzvqpg1dq3xjr8161x2yp3v7ca75vil56ranhw5pkjwq66x0";
42   };
44   nativeBuildInputs = [ patchPpdFilesHook ];
46   dontPatchELF = true;
47   dontStrip = true;
49   installPhase = ''
50     runHook preInstall
52     cd Linux/${installationPath}
53     mkdir -p $out/lib/cups/{backend,filter}
54     install -Dm755 mfp $out/lib/cups/backend/
55     install -Dm755 pstosecps pstospl pstosplc rastertospl rastertosplc $out/lib/cups/filter/
56     install -Dm755 libscmssc.so $out/lib/
58     GLOBIGNORE=*.so
59     for exe in $out/lib/cups/**/*; do
60       echo "Patching $exe"
61       patchelf \
62         --set-rpath ${libPath} \
63         --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
64         $exe
65     done
66     unset GLOBIGNORE
68     install -v at_root/usr/lib${appendPath}/libmfp.so.1.0.1 $out/lib
69     cd $out/lib
70     ln -s -f libmfp.so.1.0.1 libmfp.so.1
71     ln -s -f libmfp.so.1 libmfp.so
73     for lib in $out/lib/*.so; do
74       echo "Patching $lib"
75       patchelf \
76         --set-rpath ${libPath} \
77         $lib
78     done
80     mkdir -p $out/share/cups/model/samsung
81     cd -
82     cd ../noarch/at_opt/share/ppd
83     cp -r ./* $out/share/cups/model/samsung
85     runHook postInstall
86   '';
88   ppdFileCommands = [
89     "pstosecps"
90     "pstospl"
91     "pstosplc"
92     "rastertospl"
93   ];
95   meta = with lib; {
96     description = "Samsung's Linux printing drivers; includes binaries without source code";
97     homepage = "http://www.samsung.com/";
98     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
99     license = licenses.unfree;
100     platforms = platforms.linux;
101     maintainers = with maintainers; [ joko ];
102   };