summary refs log tree commit diff
path: root/pkgs/os-specific/linux/firmware
diff options
context:
space:
mode:
authorPeter Hoeg <peter@speartail.com>2017-03-08 22:25:04 +0800
committerPeter Hoeg <peter@hoeg.com>2017-10-14 14:38:04 +0800
commit15bdbc21f9008561980a471914428ae2875f6cb4 (patch)
tree2f8358aedf5cc44adc5bbb7609c72591f848fa9e /pkgs/os-specific/linux/firmware
parent0dd25e585fd89d352f834a25a7c9e1f478d66c5c (diff)
downloadnixlib-15bdbc21f9008561980a471914428ae2875f6cb4.tar
nixlib-15bdbc21f9008561980a471914428ae2875f6cb4.tar.gz
nixlib-15bdbc21f9008561980a471914428ae2875f6cb4.tar.bz2
nixlib-15bdbc21f9008561980a471914428ae2875f6cb4.tar.lz
nixlib-15bdbc21f9008561980a471914428ae2875f6cb4.tar.xz
nixlib-15bdbc21f9008561980a471914428ae2875f6cb4.tar.zst
nixlib-15bdbc21f9008561980a471914428ae2875f6cb4.zip
nvidia-firmware: init at 325.15
Diffstat (limited to 'pkgs/os-specific/linux/firmware')
-rw-r--r--pkgs/os-specific/linux/firmware/nvidia/default.nix66
1 files changed, 66 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/firmware/nvidia/default.nix b/pkgs/os-specific/linux/firmware/nvidia/default.nix
new file mode 100644
index 000000000000..810c7bd60cca
--- /dev/null
+++ b/pkgs/os-specific/linux/firmware/nvidia/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchurl, python2Packages, which, xz }:
+
+let
+  extractor = fetchurl {
+    url = https://raw.githubusercontent.com/imirkin/re-vp2/master/extract_firmware.py;
+    sha256 = "03dd1il0cjs8xi411pkckkfjga348j0cgd6dix20gd4kwmlvyjqm";
+  };
+
+  chipModel = [
+    # gt200 should be nva0 but we don't have those and all nvaX are links to the same files anyway
+    { chip = "nva3"; model = "gt200"; }
+    { chip = "nva3"; model = "gt215"; }
+    { chip = "nva5"; model = "gt216"; }
+    { chip = "nva8"; model = "gt218"; }
+    { chip = "nve4"; model = "gk104"; }
+    { chip = "nve6"; model = "gk106"; }
+    { chip = "nve7"; model = "gk107"; }
+  ];
+
+in stdenv.mkDerivation rec {
+  name = "linux-firmware-nvidia-${version}";
+  version = "325.15";
+
+  src = fetchurl {
+    url = "http://us.download.nvidia.com/XFree86/Linux-x86/${version}/NVIDIA-Linux-x86-${version}.run";
+    sha256 = "0xc7w2ia2fnkn20s6aq1f4ib2ljxmd2931vnrkvl2injzr5hwy9x";
+  };
+
+  phases = [ "installPhase" ];
+
+  nativeBuildInputs = [ which xz ];
+
+  installPhase = ''
+    dir=$out/lib/firmware
+    ${stdenv.shell} ${src} --extract-only
+    ${python2Packages.python.interpreter} ${extractor}
+
+    mkdir -p $dir/{nouveau,nvidia}
+    cp -rd nv* vuc-* $dir/nouveau
+
+    ${stdenv.lib.concatStringsSep "\n" (map (entry: ''
+      mkdir -p $dir/nvidia/${entry.model}
+
+      ln -rs $dir/nouveau/${entry.chip}_fuc409c $dir/nvidia/${entry.model}/fecs_inst.bin
+      ln -rs $dir/nouveau/${entry.chip}_fuc409d $dir/nvidia/${entry.model}/fecs_data.bin
+      ln -rs $dir/nouveau/${entry.chip}_fuc41ac $dir/nvidia/${entry.model}/gpccs_inst.bin
+      ln -rs $dir/nouveau/${entry.chip}_fuc41ad $dir/nvidia/${entry.model}/gpccs_data.bin
+    '') chipModel)}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Binary firmware for nVidia cards";
+    longDescription = ''
+      This package contains proprietary firmware blobs for nVidia graphics cards
+      up to and including the "Kepler" range.
+s
+      If you card is supported but not handled by this package, please find yours
+      here https://nouveau.freedesktop.org/wiki/CodeNames/ and let us know.
+    '';
+    homepage = http://nvidia.com;
+    hydraPlatforms = [];
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}