diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-03-30 14:54:06 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2009-03-30 14:54:06 +0000 |
commit | 0b931eae6625ae4a039d7c5e7741dd7ff0527cc8 (patch) | |
tree | 84f3a4f379f0a9706ae12fde2cad7de969430e1f /pkgs/os-specific/linux/nvidia-x11 | |
parent | 93f9b0f45e54c0d951c2387a98996ddd8d7b5338 (diff) | |
download | nixlib-0b931eae6625ae4a039d7c5e7741dd7ff0527cc8.tar nixlib-0b931eae6625ae4a039d7c5e7741dd7ff0527cc8.tar.gz nixlib-0b931eae6625ae4a039d7c5e7741dd7ff0527cc8.tar.bz2 nixlib-0b931eae6625ae4a039d7c5e7741dd7ff0527cc8.tar.lz nixlib-0b931eae6625ae4a039d7c5e7741dd7ff0527cc8.tar.xz nixlib-0b931eae6625ae4a039d7c5e7741dd7ff0527cc8.tar.zst nixlib-0b931eae6625ae4a039d7c5e7741dd7ff0527cc8.zip |
* nvidia / nvidiaDrivers -> nvidia-x11.
svn path=/nixpkgs/trunk/; revision=14787
Diffstat (limited to 'pkgs/os-specific/linux/nvidia-x11')
-rwxr-xr-x | pkgs/os-specific/linux/nvidia-x11/builder.sh | 77 | ||||
-rw-r--r-- | pkgs/os-specific/linux/nvidia-x11/default.nix | 44 |
2 files changed, 121 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/nvidia-x11/builder.sh b/pkgs/os-specific/linux/nvidia-x11/builder.sh new file mode 100755 index 000000000000..16bc0628b9b6 --- /dev/null +++ b/pkgs/os-specific/linux/nvidia-x11/builder.sh @@ -0,0 +1,77 @@ +source $stdenv/setup + +dontPatchELF=1 # must keep libXv, $out in RPATH + + +unpackFile() { + sh $src -x +} + + +buildPhase() { + echo "Building linux driver against kernel: " $kernel; + + cd usr/src/nv/ + + # Workaround: get it to build on kernels that have CONFIG_XEN set. + # Disable the test, apply a patch to disable the Xen functionality. + #substituteInPlace Makefile.kbuild --replace xen_sanity_check fnord + #patch -p1 < $xenPatch + + # Create the module. + kernelVersion=$(cd $kernel/lib/modules && ls) + sysSrc=$(echo $kernel/lib/modules/$kernelVersion/build/) + unset src # used by the nv makefile + # Hack necessary to compile on 2.6.28. + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$sysSrc/include/asm/mach-default" + make SYSSRC=$sysSrc module + cd ../../.. +} + + +installPhase() { + + # Install the kernel module. + ensureDir $out/lib/modules/$kernelVersion/misc + cp usr/src/nv/nvidia.ko $out/lib/modules/$kernelVersion/misc + + # Install libGL and friends. + cp -prd usr/lib/* usr/X11R6/lib/libXv* $out/lib/ + + ln -snf libGLcore.so.$versionNumber $out/lib/libGLcore.so + ln -snf libGLcore.so.$versionNumber $out/lib/libGLcore.so.1 + ln -snf libGL.so.$versionNumber $out/lib/libGL.so + ln -snf libGL.so.$versionNumber $out/lib/libGL.so.1 + ln -snf libnvidia-cfg.so.$versionNumber $out/lib/libnvidia-cfg.so.1 + ln -snf libnvidia-tls.so.$versionNumber $out/lib/libnvidia-tls.so.1 + ln -snf libnvidia-tls.so.$versionNumber $out/lib/tls/libnvidia-tls.so.1 + ln -snf libXvMCNVIDIA.so.$versionNumber $out/lib/libXvMCNVIDIA_dynamic.so.1 + ln -snf libcuda.so.$versionNumber $out/lib/libcuda.so.1 + + # Install the X driver. + ensureDir $out/lib/xorg/modules + cp -prd usr/X11R6/lib/modules/* $out/lib/xorg/modules/ + + ln -snf libnvidia-wfb.so.$versionNumber $out/lib/xorg/modules/libnvidia-wfb.so.1 + ln -snf libglx.so.$versionNumber $out/lib/xorg/modules/extensions/libglx.so + + # Install the programs. + ensureDir $out/bin + + patchelf --set-rpath $out/lib:$glPath $out/lib/libGL.so.*.* + patchelf --set-rpath $out/lib:$glPath $out/lib/libXvMCNVIDIA.so.*.* + patchelf --set-rpath $cudaPath $out/lib/libcuda.so.*.* + patchelf --set-rpath $out/lib $out/lib/xorg/modules/extensions/libglx.so.*.* + + for i in nvidia-settings nvidia-xconfig; do + cp usr/bin/$i $out/bin/$i + patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ + --set-rpath $out/lib:$programPath:$glPath $out/bin/$i + done + + # Header files etc. + cp -prd usr/include usr/share $out +} + + +genericBuild diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix new file mode 100644 index 000000000000..77d6d306c017 --- /dev/null +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -0,0 +1,44 @@ +{stdenv, fetchurl, kernel, xlibs, gtkLibs, zlib}: + +let + + versionNumber = "180.44"; + +in + +stdenv.mkDerivation { + name = "nvidia-x11-${versionNumber}-${kernel.version}"; + + builder = ./builder.sh; + + src = + if stdenv.system == "i686-linux" then + fetchurl { + url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}-pkg0.run"; + sha256 = "00da9nr4hspyjnl5rx1flz845wi7jk40ba43wswzix9cfx920vbj"; + } + else if stdenv.system == "x86_64-linux" then + fetchurl { + url = "http://us.download.nvidia.com/XFree86/Linux-x86_64/${versionNumber}/NVIDIA-Linux-x86_64-${versionNumber}-pkg0.run"; + sha256 = "1x1pa8w8v4vciinr5ismp7zfl3nsn7x0k5n8m6r1cql6i0rxxgsy"; + } + else throw "nvidia-x11 does not support platform ${stdenv.system}"; + + inherit versionNumber kernel; + + dontStrip = true; + + glPath = stdenv.lib.makeLibraryPath [xlibs.libXext xlibs.libX11]; + + cudaPath = stdenv.lib.makeLibraryPath [zlib stdenv.gcc.gcc]; + + programPath = stdenv.lib.makeLibraryPath [ + gtkLibs.gtk gtkLibs.atk gtkLibs.pango gtkLibs.glib xlibs.libXv + ]; + + meta = { + homepage = http://www.nvidia.com/object/unix.html; + description = "X.org driver and kernel module for NVIDIA graphics cards"; + license = "unfree"; + }; +} |