about summary refs log tree commit diff
path: root/pkgs/development/compilers/cudatoolkit/redist/extension.nix
blob: 32215b1360c8fb3255d6d0bce1da0c48a99cc56e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
final: prev: let

  inherit (final) callPackage;
  inherit (prev) cudaVersion lib;

  ### Cuda Toolkit Redist

  # Manifest files for redist cudatoolkit. These can be found at
  # https://developer.download.nvidia.com/compute/cuda/redist/
  cudaToolkitRedistManifests = {
    "11.4" = ./manifests/redistrib_11.4.4.json;
    "11.5" = ./manifests/redistrib_11.5.2.json;
    "11.6" = ./manifests/redistrib_11.6.2.json;
    "11.7" = ./manifests/redistrib_11.7.0.json;
    "11.8" = ./manifests/redistrib_11.8.0.json;
    "12.0" = ./manifests/redistrib_12.0.1.json;
    "12.1" = ./manifests/redistrib_12.1.1.json;
  };

  # Function to build a single cudatoolkit redist package
  buildCudaToolkitRedistPackage = callPackage ./build-cuda-redist-package.nix { };

  # Function that builds all cudatoolkit redist packages given a cuda version and manifest file
  buildCudaToolkitRedistPackages = { version, manifest }: let
    attrs = lib.filterAttrs (key: value: key != "release_date") (lib.importJSON manifest);
  in lib.mapAttrs buildCudaToolkitRedistPackage attrs;

  # All cudatoolkit redist packages for the current cuda version
  cudaToolkitRedistPackages = if
    lib.hasAttr cudaVersion cudaToolkitRedistManifests
  then buildCudaToolkitRedistPackages { version = cudaVersion; manifest = cudaToolkitRedistManifests.${cudaVersion}; }
  else {};

in cudaToolkitRedistPackages