summary refs log tree commit diff
path: root/pkgs/os-specific/linux/nvidia-x11
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2009-03-30 14:54:06 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2009-03-30 14:54:06 +0000
commit0b931eae6625ae4a039d7c5e7741dd7ff0527cc8 (patch)
tree84f3a4f379f0a9706ae12fde2cad7de969430e1f /pkgs/os-specific/linux/nvidia-x11
parent93f9b0f45e54c0d951c2387a98996ddd8d7b5338 (diff)
downloadnixlib-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-xpkgs/os-specific/linux/nvidia-x11/builder.sh77
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/default.nix44
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";
+  };
+}