summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2022-04-03 11:19:04 +0200
committerFrederik Rietdijk <freddyrietdijk@fridh.nl>2022-04-09 08:50:22 +0200
commit1d63f89caaf140ac33f1796dc0aaeb20f4ac4e55 (patch)
tree82668e186706e393a7f43c029be21ea4abfc44e9
parent934190fa06dc0de1fe7eecc543583d91657fb5fa (diff)
downloadnixpkgs-1d63f89caaf140ac33f1796dc0aaeb20f4ac4e55.tar
nixpkgs-1d63f89caaf140ac33f1796dc0aaeb20f4ac4e55.tar.gz
nixpkgs-1d63f89caaf140ac33f1796dc0aaeb20f4ac4e55.tar.bz2
nixpkgs-1d63f89caaf140ac33f1796dc0aaeb20f4ac4e55.tar.lz
nixpkgs-1d63f89caaf140ac33f1796dc0aaeb20f4ac4e55.tar.xz
nixpkgs-1d63f89caaf140ac33f1796dc0aaeb20f4ac4e55.tar.zst
nixpkgs-1d63f89caaf140ac33f1796dc0aaeb20f4ac4e55.zip
cudaPackages: overhaul of how we package cuda packages
There are many different versions of the `cudatoolkit` and related
cuda packages, and it can be tricky to ensure they remain compatible.

- `cudaPackages` is now a package set with `cudatoolkit`, `cudnn`, `cutensor`, `nccl`, as well as `cudatoolkit` split into smaller packages ("redist");
- expressions should now use `cudaPackages` as parameter instead of the individual cuda packages;
- `makeScope` is now used, so it is possible to use `.overrideScope'` to set e.g. a different `cudnn` version;
- `release-cuda.nix` is introduced to easily evaluate cuda packages using hydra.
-rw-r--r--doc/languages-frameworks/cuda.section.md34
-rw-r--r--doc/languages-frameworks/index.xml1
-rw-r--r--nixos/modules/services/misc/ethminer.nix2
-rw-r--r--pkgs/applications/misc/blender/default.nix4
-rw-r--r--pkgs/applications/misc/firestarter/default.nix4
-rw-r--r--pkgs/applications/science/math/caffe/default.nix10
-rw-r--r--pkgs/applications/science/math/cntk/default.nix8
-rw-r--r--pkgs/applications/science/math/mxnet/default.nix8
-rw-r--r--pkgs/development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh14
-rw-r--r--pkgs/development/compilers/cudatoolkit/common.nix1
-rw-r--r--pkgs/development/compilers/cudatoolkit/default.nix94
-rw-r--r--pkgs/development/compilers/cudatoolkit/extension.nix15
-rw-r--r--pkgs/development/compilers/cudatoolkit/redist/build-cuda-redist-package.nix51
-rw-r--r--pkgs/development/compilers/cudatoolkit/redist/extension.nix32
-rw-r--r--pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.4.4.json862
-rw-r--r--pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.5.2.json873
-rw-r--r--pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.6.2.json873
-rw-r--r--pkgs/development/compilers/cudatoolkit/redist/overrides.nix72
-rw-r--r--pkgs/development/compilers/cudatoolkit/versions.toml59
-rw-r--r--pkgs/development/libraries/librealsense/default.nix6
-rw-r--r--pkgs/development/libraries/science/math/caffe2/default.nix8
-rw-r--r--pkgs/development/libraries/science/math/cudnn/default.nix114
-rw-r--r--pkgs/development/libraries/science/math/cudnn/extension.nix112
-rw-r--r--pkgs/development/libraries/science/math/cudnn/generic.nix31
-rw-r--r--pkgs/development/libraries/science/math/cutensor/default.nix48
-rw-r--r--pkgs/development/libraries/science/math/libtorch/test/default.nix5
-rw-r--r--pkgs/development/libraries/science/math/magma/default.nix6
-rw-r--r--pkgs/development/libraries/science/math/tensorflow/bin.nix5
-rw-r--r--pkgs/development/python-modules/Theano/default.nix12
-rw-r--r--pkgs/development/python-modules/cupy/default.nix10
-rw-r--r--pkgs/development/python-modules/jaxlib/bin.nix12
-rw-r--r--pkgs/development/python-modules/jaxlib/default.nix8
-rw-r--r--pkgs/development/python-modules/libgpuarray/default.nix4
-rw-r--r--pkgs/development/python-modules/numba/default.nix7
-rw-r--r--pkgs/development/python-modules/pycuda/default.nix4
-rw-r--r--pkgs/development/python-modules/pytorch/default.nix8
-rw-r--r--pkgs/development/python-modules/tensorflow/bin.nix8
-rw-r--r--pkgs/development/python-modules/tensorflow/default.nix7
-rw-r--r--pkgs/development/python-modules/torchvision/default.nix4
-rw-r--r--pkgs/games/katago/default.nix7
-rw-r--r--pkgs/test/cuda/cuda-library-samples/default.nix52
-rw-r--r--pkgs/test/cuda/cuda-library-samples/extension.nix3
-rw-r--r--pkgs/test/cuda/cuda-library-samples/generic.nix6
-rw-r--r--pkgs/test/cuda/cuda-samples/default.nix54
-rw-r--r--pkgs/test/cuda/cuda-samples/extension.nix20
-rw-r--r--pkgs/top-level/aliases.nix46
-rw-r--r--pkgs/top-level/all-packages.nix85
-rw-r--r--pkgs/top-level/cuda-packages.nix72
-rw-r--r--pkgs/top-level/python-packages.nix39
-rw-r--r--pkgs/top-level/release-cuda.nix55
50 files changed, 3352 insertions, 523 deletions
diff --git a/doc/languages-frameworks/cuda.section.md b/doc/languages-frameworks/cuda.section.md
new file mode 100644
index 00000000000..fccf66bf79d
--- /dev/null
+++ b/doc/languages-frameworks/cuda.section.md
@@ -0,0 +1,34 @@
+# CUDA {#cuda}
+
+CUDA-only packages are stored in the `cudaPackages` packages set. This set
+includes the `cudatoolkit`, portions of the toolkit in separate derivations,
+`cudnn`, `cutensor` and `nccl`.
+
+A package set is available for each CUDA version, so for example
+`cudaPackages_11_6`. Within each set is a matching version of the above listed
+packages. Additionally, other versions of the packages that are packaged and
+compatible are available as well. For example, there can be a
+`cudaPackages.cudnn_8_3_2` package.
+
+To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
+```nix
+cudaSupport ? false
+cudaPackages ? {}
+```
+
+When using `callPackage`, you can choose to pass in a different variant, e.g.
+when a different version of the toolkit suffices
+```nix
+mypkg = callPackage { cudaPackages = cudaPackages_11_5; }
+```
+
+If another version of say `cudnn` or `cutensor` is needed, you can override the
+package set to make it the default. This guarantees you get a consistent package
+set.
+```nix
+mypkg = let
+  cudaPackages = cudaPackages_11_5.overrideScope' (final: prev {
+    cudnn = prev.cudnn_8_3_2;
+  }});
+in callPackage { inherit cudaPackages; };
+```
diff --git a/doc/languages-frameworks/index.xml b/doc/languages-frameworks/index.xml
index f221693e764..144fa96bac1 100644
--- a/doc/languages-frameworks/index.xml
+++ b/doc/languages-frameworks/index.xml
@@ -11,6 +11,7 @@
  <xi:include href="bower.section.xml" />
  <xi:include href="coq.section.xml" />
  <xi:include href="crystal.section.xml" />
+ <xi:include href="cuda.section.xml" />
  <xi:include href="dhall.section.xml" />
  <xi:include href="dotnet.section.xml" />
  <xi:include href="emscripten.section.xml" />
diff --git a/nixos/modules/services/misc/ethminer.nix b/nixos/modules/services/misc/ethminer.nix
index 253476d1a23..22363466982 100644
--- a/nixos/modules/services/misc/ethminer.nix
+++ b/nixos/modules/services/misc/ethminer.nix
@@ -85,7 +85,7 @@ in
   config = mkIf cfg.enable {
 
     systemd.services.ethminer = {
-      path = optional (cfg.toolkit == "cuda") [ pkgs.cudatoolkit ];
+      path = optional (cfg.toolkit == "cuda") [ pkgs.cudaPackages.cudatoolkit ];
       description = "ethminer ethereum mining service";
       wantedBy = [ "multi-user.target" ];
       after = [ "network.target" ];
diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix
index a0467b81714..2e3ff53550a 100644
--- a/pkgs/applications/misc/blender/default.nix
+++ b/pkgs/applications/misc/blender/default.nix
@@ -5,7 +5,7 @@
 , openvdb, libXxf86vm, tbb, alembic
 , zlib, zstd, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath
 , jackaudioSupport ? false, libjack2
-, cudaSupport ? config.cudaSupport or false, cudatoolkit_11
+, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}
 , colladaSupport ? true, opencollada
 , spaceNavSupport ? stdenv.isLinux, libspnav
 , makeWrapper
@@ -63,7 +63,7 @@ stdenv.mkDerivation rec {
       llvmPackages.openmp SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL
     ])
     ++ optional jackaudioSupport libjack2
-    ++ optional cudaSupport cudatoolkit_11
+    ++ optional cudaSupport cudaPackages.cudatoolkit
     ++ optional colladaSupport opencollada
     ++ optional spaceNavSupport libspnav;
   pythonPath = with python310Packages; [ numpy requests ];
diff --git a/pkgs/applications/misc/firestarter/default.nix b/pkgs/applications/misc/firestarter/default.nix
index 92c517835d8..dca8e125691 100644
--- a/pkgs/applications/misc/firestarter/default.nix
+++ b/pkgs/applications/misc/firestarter/default.nix
@@ -8,11 +8,13 @@
 , glibc
 , git
 , pkg-config
-, cudatoolkit
+, cudaPackages ? {}
 , withCuda ? false
 }:
 
 let
+  inherit (cudaPackages) cudatoolkit;
+
   hwloc = stdenv.mkDerivation rec {
     pname = "hwloc";
     version = "2.2.0";
diff --git a/pkgs/applications/science/math/caffe/default.nix b/pkgs/applications/science/math/caffe/default.nix
index db2e74f2452..d6c95633dd5 100644
--- a/pkgs/applications/science/math/caffe/default.nix
+++ b/pkgs/applications/science/math/caffe/default.nix
@@ -13,13 +13,17 @@
 , Accelerate, CoreGraphics, CoreVideo
 , lmdbSupport ? true, lmdb
 , leveldbSupport ? true, leveldb, snappy
-, cudaSupport ? config.cudaSupport or false, cudatoolkit
-, cudnnSupport ? cudaSupport, cudnn ? null
-, ncclSupport ? false, nccl ? null
+, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}
+, cudnnSupport ? cudaSupport
+, ncclSupport ? false
 , pythonSupport ? false, python ? null, numpy ? null
 , substituteAll
 }:
 
+let
+  inherit (cudaPackages) cudatoolkit cudnn nccl;
+in
+
 assert leveldbSupport -> (leveldb != null && snappy != null);
 assert cudnnSupport -> cudaSupport;
 assert ncclSupport -> cudaSupport;
diff --git a/pkgs/applications/science/math/cntk/default.nix b/pkgs/applications/science/math/cntk/default.nix
index eb14982575a..d39c04e8fee 100644
--- a/pkgs/applications/science/math/cntk/default.nix
+++ b/pkgs/applications/science/math/cntk/default.nix
@@ -2,10 +2,14 @@
 , fetchpatch
 , openblas, blas, lapack, opencv3, libzip, boost, protobuf, mpi
 , onebitSGDSupport ? false
-, cudaSupport ? false, addOpenGLRunpath, cudatoolkit, nvidia_x11
-, cudnnSupport ? cudaSupport, cudnn
+, cudaSupport ? false, cudaPackages ? {}, addOpenGLRunpath, cudatoolkit, nvidia_x11
+, cudnnSupport ? cudaSupport
 }:
 
+let
+  inherit (cudaPackages) cudatoolkit cudnn;
+in
+
 assert cudnnSupport -> cudaSupport;
 assert blas.implementation == "openblas" && lapack.implementation == "openblas";
 
diff --git a/pkgs/applications/science/math/mxnet/default.nix b/pkgs/applications/science/math/mxnet/default.nix
index 8e5e1ebd7e8..8353226cefe 100644
--- a/pkgs/applications/science/math/mxnet/default.nix
+++ b/pkgs/applications/science/math/mxnet/default.nix
@@ -1,10 +1,14 @@
 { config, stdenv, lib, fetchurl, fetchpatch, bash, cmake
 , opencv3, gtest, blas, gomp, llvmPackages, perl
-, cudaSupport ? config.cudaSupport or false, cudatoolkit, nvidia_x11
-, cudnnSupport ? cudaSupport, cudnn
+, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}, nvidia_x11
+, cudnnSupport ? cudaSupport
 , cudaCapabilities ? [ "3.7" "5.0" "6.0" "7.0" "7.5" "8.0" "8.6" ]
 }:
 
+let
+  inherit (cudaPackages) cudatoolkit cudnn;
+in
+
 assert cudnnSupport -> cudaSupport;
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh b/pkgs/development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh
new file mode 100644
index 00000000000..0b0da336514
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh
@@ -0,0 +1,14 @@
+# Run autoOpenGLRunpath on all files
+echo "Sourcing auto-add-opengl-runpath-hook"
+
+autoAddOpenGLRunpathPhase  () {
+    # TODO: support multiple outputs
+    for file in $(find ${out,lib,bin} -type f); do
+        addOpenGLRunpath $file
+    done
+}
+
+if [ -z "${dontUseAutoAddOpenGLRunpath-}" ]; then
+    echo "Using autoAddOpenGLRunpathPhase"
+    postFixupHooks+=(autoAddOpenGLRunpathPhase)
+fi
diff --git a/pkgs/development/compilers/cudatoolkit/common.nix b/pkgs/development/compilers/cudatoolkit/common.nix
index 46832e1cc2d..6375c513f41 100644
--- a/pkgs/development/compilers/cudatoolkit/common.nix
+++ b/pkgs/development/compilers/cudatoolkit/common.nix
@@ -254,6 +254,7 @@ stdenv.mkDerivation rec {
   '';
   passthru = {
     cc = gcc;
+    majorMinorVersion = lib.versions.majorMinor version;
     majorVersion = lib.versions.majorMinor version;
   };
 
diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix
deleted file mode 100644
index d7fa6ee59f0..00000000000
--- a/pkgs/development/compilers/cudatoolkit/default.nix
+++ /dev/null
@@ -1,94 +0,0 @@
-{ callPackage
-, fetchurl
-, gcc7
-, gcc9
-, gcc10
-, lib
-}:
-
-let
-  common = callPackage ./common.nix;
-in
-rec {
-  cudatoolkit_10_0 = common {
-    version = "10.0.130";
-    url = "https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux";
-    sha256 = "16p3bv1lwmyqpxil8r951h385sy9asc578afrc7lssa68c71ydcj";
-
-    gcc = gcc7;
-  };
-
-  cudatoolkit_10_1 = common {
-    version = "10.1.243";
-    url = "https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run";
-    sha256 = "0caxhlv2bdq863dfp6wj7nad66ml81vasq2ayf11psvq2b12vhp7";
-
-    gcc = gcc7;
-  };
-
-  cudatoolkit_10_2 = common {
-    version = "10.2.89";
-    url = "http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run";
-    sha256 = "04fasl9sjkb1jvchvqgaqxprnprcz7a8r52249zp2ijarzyhf3an";
-
-    gcc = gcc7;
-  };
-
-  cudatoolkit_10 = cudatoolkit_10_2;
-
-  cudatoolkit_11_0 = common {
-    version = "11.0.3";
-    url = "https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run";
-    sha256 = "1h4c69nfrgm09jzv8xjnjcvpq8n4gnlii17v3wzqry5d13jc8ydh";
-
-    gcc = gcc9;
-  };
-
-  cudatoolkit_11_1 = common {
-    version = "11.1.1";
-    url = "https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run";
-    sha256 = "13yxv2fgvdnqqbwh1zb80x4xhyfkbajfkwyfpdg9493010kngbiy";
-    gcc = gcc9;
-  };
-
-  cudatoolkit_11_2 = common {
-    version = "11.2.1";
-    url = "https://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda_11.2.1_460.32.03_linux.run";
-    sha256 = "sha256-HamMuJfMX1inRFpKZspPaSaGdwbLOvWKZpzc2Nw9F8g=";
-    gcc = gcc9;
-  };
-
-  cudatoolkit_11_3 = common {
-    version = "11.3.1";
-    url = "https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run";
-    sha256 = "0d19pwcqin76scbw1s5kgj8n0z1p4v1hyfldqmamilyfxycfm4xd";
-    gcc = gcc9;
-  };
-
-  cudatoolkit_11_4 = common {
-    version = "11.4.2";
-    url = "https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda_11.4.2_470.57.02_linux.run";
-    sha256 = "sha256-u9h8oOkT+DdFSnljZ0c1E83e9VUILk2G7Zo4ZZzIHwo=";
-    gcc = gcc10; # can bump to 11 along with stdenv.cc
-  };
-
-  cudatoolkit_11_5 = common {
-    version = "11.5.0";
-    url = "https://developer.download.nvidia.com/compute/cuda/11.5.0/local_installers/cuda_11.5.0_495.29.05_linux.run";
-    sha256 = "sha256-rgoWk9lJfPPYHmlIlD43lGNpANtxyY1Y7v2sr38aHkw=";
-    gcc = gcc10; # can bump to 11 along with stdenv.cc
-  };
-
-  cudatoolkit_11_6 = common {
-    version = "11.6.1";
-    url = "https://developer.download.nvidia.com/compute/cuda/11.6.1/local_installers/cuda_11.6.1_510.47.03_linux.run";
-    sha256 = "sha256-qyGa/OALdCABEyaYZvv/derQN7z8I1UagzjCaEyYTX4=";
-    gcc = gcc10; # can bump to 11 along with stdenv.cc
-  };
-
-  # Make sure to only ever update this to a version that is compatible with the
-  # latest cudnn, nccl, cutensor, etc! It sometimes happens that CUDA versions
-  # are released prior to compatibility with the rest of the ecosystem. And
-  # don't forget to request a review from @NixOS/cuda-maintainers!
-  cudatoolkit_11 = cudatoolkit_11_5; # update me to 11_6 when cudnn>=8.3.3
-}
diff --git a/pkgs/development/compilers/cudatoolkit/extension.nix b/pkgs/development/compilers/cudatoolkit/extension.nix
new file mode 100644
index 00000000000..862c8316799
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/extension.nix
@@ -0,0 +1,15 @@
+final: prev: let
+  ### Cuda Toolkit
+
+  # Function to build the class cudatoolkit package
+  buildCudaToolkitPackage = final.callPackage ./common.nix;
+
+  # Version info for the classic cudatoolkit packages that contain everything that is in redist.
+  cudatoolkitVersions = final.lib.importTOML ./versions.toml;
+
+  ### Add classic cudatoolkit package
+  cudatoolkit = buildCudaToolkitPackage ((attrs: attrs // { gcc = prev.pkgs.${attrs.gcc}; }) cudatoolkitVersions.${final.cudaVersion});
+
+in {
+  inherit cudatoolkit;
+}
diff --git a/pkgs/development/compilers/cudatoolkit/redist/build-cuda-redist-package.nix b/pkgs/development/compilers/cudatoolkit/redist/build-cuda-redist-package.nix
new file mode 100644
index 00000000000..9bbd7ea1da1
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/redist/build-cuda-redist-package.nix
@@ -0,0 +1,51 @@
+{ lib
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, autoAddOpenGLRunpathHook
+}:
+
+pname:
+attrs:
+
+let
+  arch = "linux-x86_64";
+in stdenv.mkDerivation {
+  inherit pname;
+  inherit (attrs) version;
+
+  src = assert (lib.hasAttr arch attrs); fetchurl {
+    url = "https://developer.download.nvidia.com/compute/cuda/redist/${attrs.${arch}.relative_path}";
+    inherit (attrs.${arch}) sha256;
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    # This hook will make sure libcuda can be found
+    # in typically /lib/opengl-driver by adding that
+    # directory to the rpath of all ELF binaries.
+    # Check e.g. with `patchelf --print-rpath path/to/my/binary
+    autoAddOpenGLRunpathHook
+  ];
+
+  buildInputs = [
+    stdenv.cc.cc.lib
+  ];
+
+  dontBuild = true;
+
+  # TODO: choose whether to install static/dynamic libs
+  installPhase = ''
+    runHook preInstall
+    rm LICENSE
+    mkdir -p $out
+    mv * $out
+    runHook postInstall
+  '';
+
+  meta = {
+    description = attrs.name;
+    license = lib.licenses.unfree;
+    platforms = lib.optionals (lib.hasAttr arch attrs) [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/development/compilers/cudatoolkit/redist/extension.nix b/pkgs/development/compilers/cudatoolkit/redist/extension.nix
new file mode 100644
index 00000000000..65057b90a03
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/redist/extension.nix
@@ -0,0 +1,32 @@
+final: prev: let
+
+  inherit (final) callPackage;
+  inherit (prev) cudaVersion lib pkgs;
+
+  ### 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;
+  };
+
+  # 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;
+
+  redistExists = cudaToolkitRedistManifests ? "${cudaVersion}";
+
+  # 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
diff --git a/pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.4.4.json b/pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.4.4.json
new file mode 100644
index 00000000000..374079b2bcb
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.4.4.json
@@ -0,0 +1,862 @@
+{
+    "release_date": "2022-02-01",
+    "cuda_cccl": {
+        "name": "CXX Core Compute Libraries",
+        "license": "CUDA Toolkit",
+        "version": "11.4.122",
+        "linux-x86_64": {
+            "relative_path": "cuda_cccl/linux-x86_64/cuda_cccl-linux-x86_64-11.4.122-archive.tar.xz",
+            "sha256": "150b163bde4975154d6238ae1272c74df81b303dccca1f7637bd91027b65afc5",
+            "md5": "e0e41040716a4d6113410d7cb25c7906",
+            "size": "951832"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cccl/linux-ppc64le/cuda_cccl-linux-ppc64le-11.4.122-archive.tar.xz",
+            "sha256": "0d1d729ac3f52bdd04f197a6cef295b3463c4975d70dbd97f4e1b08a4857f488",
+            "md5": "f615eccb3b8d694f4c7aa864c93959d7",
+            "size": "951780"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cccl/linux-sbsa/cuda_cccl-linux-sbsa-11.4.122-archive.tar.xz",
+            "sha256": "98f495b99c68fae54fe728e72aa3b8e2e5b1d77c9fd4946370cec3b063a7fcf3",
+            "md5": "28692dd487b5936dbfac70ac56b65561",
+            "size": "951340"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-11.4.122-archive.zip",
+            "sha256": "d721c4bcc5bf8054eb944b7c3203ce5f593523f798559f3f4c1effdd8ed36f48",
+            "md5": "fa6bbf1291ebdd8f63f4f5176be4ae9c",
+            "size": "2422426"
+        }
+    },
+    "cuda_cudart": {
+        "name": "CUDA Runtime (cudart)",
+        "license": "CUDA Toolkit",
+        "version": "11.4.148",
+        "linux-x86_64": {
+            "relative_path": "cuda_cudart/linux-x86_64/cuda_cudart-linux-x86_64-11.4.148-archive.tar.xz",
+            "sha256": "36bd6f1ea8711f69405ebd0b26d1f791a6ef6eb01cc3f01ba4231eb8ec09c208",
+            "md5": "b98036aa5e633eb19b7ef2e32e8811a7",
+            "size": "828732"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cudart/linux-ppc64le/cuda_cudart-linux-ppc64le-11.4.148-archive.tar.xz",
+            "sha256": "fb70c6477dce2cfc3ee13d361b76453ad92671be36f98fab50e2510f657eb00e",
+            "md5": "594855b91ad5e9aa674d3a93d741431e",
+            "size": "777952"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cudart/linux-sbsa/cuda_cudart-linux-sbsa-11.4.148-archive.tar.xz",
+            "sha256": "d013448f76c22614e458de94b5289807d2d0934b3a5deb073b621401a222c16f",
+            "md5": "2bcac7ef368ebeb804e33c4c7920ff78",
+            "size": "783344"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-11.4.148-archive.zip",
+            "sha256": "e889e38929a95845409ed7dcdb0e6189343af5d17442a3b8c9f2ba297f0d262e",
+            "md5": "c2fcccb16eec0cf4ed5807fcba2bd745",
+            "size": "2898471"
+        }
+    },
+    "cuda_cuobjdump": {
+        "name": "cuobjdump",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_cuobjdump/linux-x86_64/cuda_cuobjdump-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "dd9d51ca6d1772545ba77640f74bd1162ea4ffe223e17c8faa6e0a11ec9b5e2a",
+            "md5": "0a28c3ee87dbe294afc73b90ff0c8101",
+            "size": "110008"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cuobjdump/linux-ppc64le/cuda_cuobjdump-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "3f5013ecd3ad3ef1f90f981189826ae9e5aadb7549a99e834c0f6d77c897a7ff",
+            "md5": "56cabd1ef862f62c10a6fc9e47186797",
+            "size": "115060"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cuobjdump/linux-sbsa/cuda_cuobjdump-linux-sbsa-11.4.120-archive.tar.xz",
+            "sha256": "7f5c5e38780d9d44084f05ae091be1ad8672f370a6da17cc3f0a9a55e998163a",
+            "md5": "5df0f75608960c20f5c2b3b11cb9a2d3",
+            "size": "99752"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cuobjdump/windows-x86_64/cuda_cuobjdump-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "e371440535fae634c625a5dd02d18cd4accd11b9166703f9d5a95f7b721f09b0",
+            "md5": "2d8a519c9ebe674a624b3b4cbfe91be3",
+            "size": "2535529"
+        }
+    },
+    "cuda_cupti": {
+        "name": "CUPTI",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_cupti/linux-x86_64/cuda_cupti-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "e589bd0955dc59cf7871dad3446e583316623dd899b67c34b808fbe14cde0209",
+            "md5": "e80232b5629d4c26376411f28ec41b05",
+            "size": "15499004"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cupti/linux-ppc64le/cuda_cupti-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "24687d171f15101109dc428bd2236889bda617377b2a29bdfc0173095bcf28a8",
+            "md5": "8a0aef6d201a0bb79af677d3aba9c790",
+            "size": "8092764"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cupti/linux-sbsa/cuda_cupti-linux-sbsa-11.4.120-archive.tar.xz",
+            "sha256": "d66367c166d27ddd6d7ed07f7a492dfed77b6eae505a7037a29537ce3e15eeb3",
+            "md5": "81b11a7aac656df569ba5ab909d114c7",
+            "size": "7301688"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cupti/windows-x86_64/cuda_cupti-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "74545a99d9a35c53790003006b29b9af5ca52b48f8703fdbc003665b42f5ec39",
+            "md5": "745b2b131e2f421e65c7792547792b12",
+            "size": "10080557"
+        }
+    },
+    "cuda_cuxxfilt": {
+        "name": "CUDA cuxxfilt (demangler)",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_cuxxfilt/linux-x86_64/cuda_cuxxfilt-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "8dc88e398f976d20540e7c7b4f004f158b12cd9edf59a9ab988abbacc3e1452c",
+            "md5": "2bc240881b64f762b053a6284a2f3c04",
+            "size": "176072"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cuxxfilt/linux-ppc64le/cuda_cuxxfilt-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "943e23feafe86b9b83441a51ada152b110031f7891dfa531d2ef85657360f70e",
+            "md5": "eed7b9a4008d6d18a2cc3d1630169fb9",
+            "size": "172424"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cuxxfilt/linux-sbsa/cuda_cuxxfilt-linux-sbsa-11.4.120-archive.tar.xz",
+            "sha256": "50808b530cab8d37bfb73683c36afb9da843c6ca18d0394c1ce636ab4594ec9e",
+            "md5": "f5f79636b09d840234f7b54a10e6245a",
+            "size": "162820"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cuxxfilt/windows-x86_64/cuda_cuxxfilt-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "471a6106789596ac7f5de8bc9326b4a0193ecc35f7e5831fb32827a8cecaa2d0",
+            "md5": "76ff5d04e065ab466b607d16019f01bd",
+            "size": "166494"
+        }
+    },
+    "cuda_demo_suite": {
+        "name": "CUDA Demo Suite",
+        "license": "CUDA Toolkit",
+        "version": "11.4.100",
+        "linux-x86_64": {
+            "relative_path": "cuda_demo_suite/linux-x86_64/cuda_demo_suite-linux-x86_64-11.4.100-archive.tar.xz",
+            "sha256": "8cd9ffeb7742f4714166731ce8cbf74e2d2c8171d6b7091e0041816d47a7fd0c",
+            "md5": "9327079f165128a1b6346c32b61088e3",
+            "size": "3965292"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_demo_suite/windows-x86_64/cuda_demo_suite-windows-x86_64-11.4.100-archive.zip",
+            "sha256": "0ac19c9efa634042e1d38d97b75a656d9c0038219bdc5098a28d388ca7c427f2",
+            "md5": "8b97b7acba08bbbbbf122f2e0d81bc21",
+            "size": "5014818"
+        }
+    },
+    "cuda_documentation": {
+        "name": "CUDA Documentation",
+        "license": "CUDA Toolkit",
+        "version": "11.4.126",
+        "linux-x86_64": {
+            "relative_path": "cuda_documentation/linux-x86_64/cuda_documentation-linux-x86_64-11.4.126-archive.tar.xz",
+            "sha256": "2db25b21a6687803d146d34df0005f7d784ebd9303fbbd48d21f4508aedeb3fd",
+            "md5": "107cb0150f83da7ebec6e118e4522498",
+            "size": "61960"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_documentation/linux-ppc64le/cuda_documentation-linux-ppc64le-11.4.126-archive.tar.xz",
+            "sha256": "85719df5828ef91205353dab12085707e0f29c188aea41afe91b36f86ec9b338",
+            "md5": "afb21df7f560fa012593ff31021490a7",
+            "size": "61912"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_documentation/linux-sbsa/cuda_documentation-linux-sbsa-11.4.126-archive.tar.xz",
+            "sha256": "94c9bc3ab45b1e951570d4312fbb3627ac8cedb88d1da4a57fbfd1677a03f2c8",
+            "md5": "d05e8ec60b4aa7e494a960a32d18c7fa",
+            "size": "61944"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_documentation/windows-x86_64/cuda_documentation-windows-x86_64-11.4.126-archive.zip",
+            "sha256": "a02dc2be494f4429ee5d183c218d5b27744f3daf0d29b50516dd501491a42f5a",
+            "md5": "4e14de4b3f89d9ef951e8ea35ff810fe",
+            "size": "99427"
+        }
+    },
+    "cuda_gdb": {
+        "name": "CUDA GDB",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_gdb/linux-x86_64/cuda_gdb-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "ce9748c224b2163dba84cc9e0ebbd7ea29217eb4674bd9e7892290c7eaae372b",
+            "md5": "e0de9ddbf59cfa699f4a1eb16961463e",
+            "size": "64086980"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_gdb/linux-ppc64le/cuda_gdb-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "5084eee5c04c6a823e6e0f8c30eb2587b5ab31a949d21818ce769cd22191896e",
+            "md5": "562494875b8b8ccc345b146f3894288b",
+            "size": "63994280"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_gdb/linux-sbsa/cuda_gdb-linux-sbsa-11.4.120-archive.tar.xz",
+            "sha256": "c9f18f6f7262b39df76830798aa4dda5fbf455b95bd4af2eb5ae25ce77e3848c",
+            "md5": "cbf494bf0bc03c39106825333ff777b0",
+            "size": "63856896"
+        }
+    },
+    "cuda_memcheck": {
+        "name": "CUDA Memcheck",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_memcheck/linux-x86_64/cuda_memcheck-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "6e1d64a2b31fec96a5eeb1d6ea914cfe83c671c3de4f987b6b5cda65d6e3b9e7",
+            "md5": "5b70e9b1eb50d0fff5b5d56ae76b358d",
+            "size": "139580"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_memcheck/linux-ppc64le/cuda_memcheck-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "3a4d4c876bbb032c1e611b22a79e2cdce44cc6691ed519a63886a06094385ab4",
+            "md5": "97aa39e782ac0d935fa25dbad41274bd",
+            "size": "148128"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_memcheck/windows-x86_64/cuda_memcheck-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "d3357d2a41143f8007c17af45b7e5733e0ec4c0c1185322739232c7603221b88",
+            "md5": "82ad9ae4d123a3666177f326b88fbacb",
+            "size": "181182"
+        }
+    },
+    "cuda_nsight": {
+        "name": "Nsight Eclipse Edition Plugin",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_nsight/linux-x86_64/cuda_nsight-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "b2b54743ad4f8bbd812548a26be40f561f6fda0f0ab01df4e630ef30af7bfd7a",
+            "md5": "5981def738578dfe6f6166abe943f178",
+            "size": "118598236"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nsight/linux-ppc64le/cuda_nsight-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "c8cfb7300dba923acfdd5e7b2d32f7a576b7d6d954fc71a3896aba0226b00f81",
+            "md5": "8b78eed909b09f80d91548f28a622b43",
+            "size": "118598240"
+        }
+    },
+    "cuda_nvcc": {
+        "name": "CUDA NVCC",
+        "license": "CUDA Toolkit",
+        "version": "11.4.152",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvcc/linux-x86_64/cuda_nvcc-linux-x86_64-11.4.152-archive.tar.xz",
+            "sha256": "7250fc83b54f9089e67f3b506648fd8e70a9107baed968cb5de169c05831d5e5",
+            "md5": "fae82c384d46626a2f2e69fd98f0034d",
+            "size": "35931152"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvcc/linux-ppc64le/cuda_nvcc-linux-ppc64le-11.4.152-archive.tar.xz",
+            "sha256": "a53c8d2e4454be0e899986a1585f8b1eddf874aac165716d6f98989e53f971d3",
+            "md5": "1b74e7951c76119a03b805bde8d42fc9",
+            "size": "33718168"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvcc/linux-sbsa/cuda_nvcc-linux-sbsa-11.4.152-archive.tar.xz",
+            "sha256": "c0743a099bfb8c840a20317559668777e9a8ac9664dc121bcd22d76cee08416d",
+            "md5": "8982bd399b169d45717763cae36f4bc3",
+            "size": "31676392"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-11.4.152-archive.zip",
+            "sha256": "460c9e54bd0b99f4f63243eeb6b2090d17193361575b189c050faa10d465d4a9",
+            "md5": "c9cae278599871aea78aa4584c24bbb1",
+            "size": "45724284"
+        }
+    },
+    "cuda_nvdisasm": {
+        "name": "CUDA nvdisasm",
+        "license": "CUDA Toolkit",
+        "version": "11.4.152",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvdisasm/linux-x86_64/cuda_nvdisasm-linux-x86_64-11.4.152-archive.tar.xz",
+            "sha256": "6ab9bd7c31a54529762fddc9ebfc4d331a912bf97b47318b0b75bfbd3b8a5551",
+            "md5": "e4d610b84f47026baa4c0603b007a778",
+            "size": "32847928"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvdisasm/linux-ppc64le/cuda_nvdisasm-linux-ppc64le-11.4.152-archive.tar.xz",
+            "sha256": "6cd970a59ba219c5da1ce39dbf08d7ba491ea17849adfed4ad83cc8409624348",
+            "md5": "a0870567d10771c7b3319880743e5a21",
+            "size": "32770452"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvdisasm/linux-sbsa/cuda_nvdisasm-linux-sbsa-11.4.152-archive.tar.xz",
+            "sha256": "68743913c877014b4f9a6d7267cc117d443c9990ea583ea837a1c51df1676d7d",
+            "md5": "204674baa498d7ebef702b73733b001f",
+            "size": "32729816"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvdisasm/windows-x86_64/cuda_nvdisasm-windows-x86_64-11.4.152-archive.zip",
+            "sha256": "9fa3a5a1248ad1247ee78a3d9627f1b2d7173cbde5bdb1635a853624f3f8137e",
+            "md5": "68ac6d501a93683e6faaab5ec4e59e4c",
+            "size": "33052575"
+        }
+    },
+    "cuda_nvml_dev": {
+        "name": "CUDA NVML Headers",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvml_dev/linux-x86_64/cuda_nvml_dev-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "f722199f9cc101c97c6fc809745076645064d36558a5aab56bba5529716e0fe9",
+            "md5": "1262ec1a15eeb4f2c7158192f580804f",
+            "size": "71964"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvml_dev/linux-ppc64le/cuda_nvml_dev-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "08a763906637778d1c85455bdad4f2c0cb15d4cb0ae1c088dc474cb7ff78af81",
+            "md5": "bae7ce5fda7a60e4f05219d8a0b8944c",
+            "size": "71564"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvml_dev/linux-sbsa/cuda_nvml_dev-linux-sbsa-11.4.120-archive.tar.xz",
+            "sha256": "61c93230ea9fd9ae657c57954294380b5e8ee1688778f519ce5d43b728a04b9d",
+            "md5": "91ba0d30c5ef440a1ffe115e5f5b6fb7",
+            "size": "72120"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvml_dev/windows-x86_64/cuda_nvml_dev-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "d97d1266345bcaf4212132bbc19270ee9c10bae37b29647ff5f40620f83fa3ce",
+            "md5": "928f18b29e00a1a342119dddc1e0a0da",
+            "size": "100022"
+        }
+    },
+    "cuda_nvprof": {
+        "name": "CUDA nvprof",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvprof/linux-x86_64/cuda_nvprof-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "bcf705c8f25f3423014b4182741e91676c4858b1b055a314911e24787a2d3129",
+            "md5": "cc266f0a2c9e05ac34105fc084b54b9e",
+            "size": "1938384"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvprof/linux-ppc64le/cuda_nvprof-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "398dd3c6f04b712f7ed0e70ee3d56ee04e0b9fa249cc0a655b9263a24dca7d8c",
+            "md5": "e1e6ef34ffefaf4e9bc5d34f34777427",
+            "size": "1594396"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvprof/linux-sbsa/cuda_nvprof-linux-sbsa-11.4.120-archive.tar.xz",
+            "sha256": "e87eceb2da015262ca57f7200c8ca96251dd11161afcdeea9a080fce06e90730",
+            "md5": "95260289dd9f07abd0013b0b82c2aa79",
+            "size": "16124"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "826b85be249e8a518f58b3fdaf36f52871e96e6fe0e86f7fc6facbc619405e81",
+            "md5": "a25a3b9d2710e7e9f09492492fe09777",
+            "size": "1610917"
+        }
+    },
+    "cuda_nvprune": {
+        "name": "CUDA nvprune",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvprune/linux-x86_64/cuda_nvprune-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "3e0ae31117c82f5e0220662a9ee1df15d2aa79bf6a53bc627ee5898a3e9719ef",
+            "md5": "8b64523c53e6587c17c6c621ddf8a632",
+            "size": "52772"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvprune/linux-ppc64le/cuda_nvprune-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "a8f62ffd30747f5481c6abb11a924dd68b8da9b4a72a0821a411d545fd79ebbf",
+            "md5": "eb0ba8fd0b6f8daeb6cc8d50f7344fff",
+            "size": "54280"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvprune/linux-sbsa/cuda_nvprune-linux-sbsa-11.4.120-archive.tar.xz",
+            "sha256": "da4078a81d0af984bd42f23c584091968454a0e925c64289f2e5922e02c76131",
+            "md5": "89c50bee0950223a4dc194726ed908fc",
+            "size": "46000"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvprune/windows-x86_64/cuda_nvprune-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "ec5e1975147a83da707a1803c1e9af93b02ff8af246d23b733bd5a1662c708a9",
+            "md5": "8c22f5bb3b3bdbb0421b07b988e5ce3e",
+            "size": "143427"
+        }
+    },
+    "cuda_nvrtc": {
+        "name": "CUDA NVRTC",
+        "license": "CUDA Toolkit",
+        "version": "11.4.152",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvrtc/linux-x86_64/cuda_nvrtc-linux-x86_64-11.4.152-archive.tar.xz",
+            "sha256": "5b7e491b583d1914c591447b9cf1b4c02dc33b222874eb89eee4ea8f87929396",
+            "md5": "60aa9f569c86f41519a5d0a222f09109",
+            "size": "14691116"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvrtc/linux-ppc64le/cuda_nvrtc-linux-ppc64le-11.4.152-archive.tar.xz",
+            "sha256": "917d9e0f050bd140e279b6e063af3ab92e443572e6baf840e2c1ed6cb5b8e765",
+            "md5": "84ceac397b7172f94485065e42da41fd",
+            "size": "13608340"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvrtc/linux-sbsa/cuda_nvrtc-linux-sbsa-11.4.152-archive.tar.xz",
+            "sha256": "d82eb049e72545239c6d64e6bf5afd06b89df06f338165fc5a68a2bf3143472e",
+            "md5": "01b483fcf81c794266dce6d2b8b39a17",
+            "size": "13550244"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-11.4.152-archive.zip",
+            "sha256": "48e3def76ff1842d00051fd035e6487be711ac4019e9dc43f5db3f9e14363f91",
+            "md5": "4fa6b0fb01c359360ab9352dacace716",
+            "size": "16299675"
+        }
+    },
+    "cuda_nvtx": {
+        "name": "CUDA NVTX",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvtx/linux-x86_64/cuda_nvtx-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "e50bd973d6b33f3b9a405a96ad04f62482e94bbbadfdc971ea1bb5d723c98c52",
+            "md5": "e62f8df47a1d8c47568c948b8d4789f8",
+            "size": "48148"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvtx/linux-ppc64le/cuda_nvtx-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "fb89733ad6d46522a7e944c42df4127a6f87c38f0c4caa6b069669ef65a1c562",
+            "md5": "ff407300bcb5f8acac30fbda02fe7da3",
+            "size": "48152"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvtx/linux-sbsa/cuda_nvtx-linux-sbsa-11.4.120-archive.tar.xz",
+            "sha256": "95677940f19a12b82037958415efecc18c511c6480800c4df6d82bd5c3ba28b0",
+            "md5": "1d0f72f8a04df9ad7face3af3169c44d",
+            "size": "48676"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "13bacfd087cc1d11759705bc9a04647201f5f1c49103ba2ac233981c305143ec",
+            "md5": "26de9a2dcb6ba9a920fd58cbf9dd19f2",
+            "size": "65720"
+        }
+    },
+    "cuda_nvvp": {
+        "name": "CUDA NVVP",
+        "license": "CUDA Toolkit",
+        "version": "11.4.193",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvvp/linux-x86_64/cuda_nvvp-linux-x86_64-11.4.193-archive.tar.xz",
+            "sha256": "4c7dd6fe52fd90aabfb9c4afa7a65302546ac8212e62c1d9e1d370ec9756d7e5",
+            "md5": "8d321f064b8c1bf4a9641694fae7c2bc",
+            "size": "112249072"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvvp/linux-ppc64le/cuda_nvvp-linux-ppc64le-11.4.193-archive.tar.xz",
+            "sha256": "4952683d2b158a2c507b3c1f968ad5fdb6d3421429832cb300c02733f775986e",
+            "md5": "fa0e0023ff79698989070754e2f6ab7d",
+            "size": "111627960"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvvp/windows-x86_64/cuda_nvvp-windows-x86_64-11.4.193-archive.zip",
+            "sha256": "0659bebb271a566e1a5e75659043632398d42b37413df879293da4c077472720",
+            "md5": "c5b3cdcedec6655ca69bf7083e9150f1",
+            "size": "120334859"
+        }
+    },
+    "cuda_sanitizer_api": {
+        "name": "CUDA Compute Sanitizer API",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "linux-x86_64": {
+            "relative_path": "cuda_sanitizer_api/linux-x86_64/cuda_sanitizer_api-linux-x86_64-11.4.120-archive.tar.xz",
+            "sha256": "75044d837ef848460037fc16abe4f2f265791c3888c6d1f7e63366a466b2aee7",
+            "md5": "aa46c3b0ed1d16a75b489c75f067772e",
+            "size": "7092964"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_sanitizer_api/linux-ppc64le/cuda_sanitizer_api-linux-ppc64le-11.4.120-archive.tar.xz",
+            "sha256": "825d5f72fbcc4ed04bce016009fbe5881fb138b14d55df7190121fb34b7d2845",
+            "md5": "0557a1dd8c0b9e8a854ed09357053143",
+            "size": "5831356"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_sanitizer_api/linux-sbsa/cuda_sanitizer_api-linux-sbsa-11.4.120-archive.tar.xz",
+            "sha256": "a241a68429a1c33fdd0ba335d81c246079086552c56abb08033dd3dc85c576ad",
+            "md5": "3a8de05d46d603136ac33ac6511dd454",
+            "size": "5648592"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_sanitizer_api/windows-x86_64/cuda_sanitizer_api-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "9fdb78035542c4eb9a8e881b8ced959eabfa04894ce2b847d54741120b5f1aaa",
+            "md5": "ccd5b8f2656334b040a513c418408091",
+            "size": "12062745"
+        }
+    },
+    "fabricmanager": {
+        "name": "NVIDIA Fabric Manager",
+        "license": "NVIDIA Driver",
+        "version": "470.82.01",
+        "linux-x86_64": {
+            "relative_path": "fabricmanager/linux-x86_64/fabricmanager-linux-x86_64-470.82.01-archive.tar.xz",
+            "sha256": "b039435622c14b2b1071aaabc0b63b04f21ec17564c1629a89e7cd25da8673fc",
+            "md5": "4d3782e2354cfe0d70c84e79aaf5e5a2",
+            "size": "1199624"
+        }
+    },
+    "libcublas": {
+        "name": "CUDA cuBLAS",
+        "license": "CUDA Toolkit",
+        "version": "11.6.5.2",
+        "linux-x86_64": {
+            "relative_path": "libcublas/linux-x86_64/libcublas-linux-x86_64-11.6.5.2-archive.tar.xz",
+            "sha256": "751c585c062f6e1dfcb1bca5898de48d4a247edad478de37eda0c7c62038379a",
+            "md5": "9d36ade70e3d9c0059441fc59018d42e",
+            "size": "397289908"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcublas/linux-ppc64le/libcublas-linux-ppc64le-11.6.5.2-archive.tar.xz",
+            "sha256": "0bbb8a8db38a3a0b97bfc879046dc42dca3defb0f82b1424e23c49bdcc6f26d0",
+            "md5": "9135c14acbcecd545578cc08642c6e53",
+            "size": "396612488"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcublas/linux-sbsa/libcublas-linux-sbsa-11.6.5.2-archive.tar.xz",
+            "sha256": "7325d4fe77567ee69799902eae7479b8d6518c7722882d683a41b1ebdd8f676d",
+            "md5": "75989e41f24bff9fbff1aaef7231b1aa",
+            "size": "396559712"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcublas/windows-x86_64/libcublas-windows-x86_64-11.6.5.2-archive.zip",
+            "sha256": "7ebcfcd9cc327a020f156d9a9f7607ea6a563038834991324230102915bef47c",
+            "md5": "1d69e9103b52557b6cb49cfdc5ae5709",
+            "size": "290453672"
+        }
+    },
+    "libcufft": {
+        "name": "CUDA cuFFT",
+        "license": "CUDA Toolkit",
+        "version": "10.5.2.100",
+        "linux-x86_64": {
+            "relative_path": "libcufft/linux-x86_64/libcufft-linux-x86_64-10.5.2.100-archive.tar.xz",
+            "sha256": "0e3ec55be39db99c8769a3f297d190b93c8281afb5b3bc2ca1966ae94d42255f",
+            "md5": "08023fd6700cb0f324421af5cdc4e1df",
+            "size": "215214100"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcufft/linux-ppc64le/libcufft-linux-ppc64le-10.5.2.100-archive.tar.xz",
+            "sha256": "b73d5a8a5a3a9497189b340001a0547d60b6971e42d60aa6d8ca0ae3ec1b0818",
+            "md5": "712c0cfb1c74439bb581d36fc9c1bb24",
+            "size": "214860644"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcufft/linux-sbsa/libcufft-linux-sbsa-10.5.2.100-archive.tar.xz",
+            "sha256": "49b7d658dc84fd6669a27907d403b4c93d82f9cc10670e9c990eed29ae6e5ee8",
+            "md5": "c652700572c72b422727fb3a9db5dfa2",
+            "size": "214998656"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcufft/windows-x86_64/libcufft-windows-x86_64-10.5.2.100-archive.zip",
+            "sha256": "eaf957a481d0c361724cf796b6bc105e36f9a3d17b7525107a78ff15ea3ddc6c",
+            "md5": "37d169ea81f44c4caca0bb1dcc527549",
+            "size": "287129611"
+        }
+    },
+    "libcufile": {
+        "name": "CUDA cuFile",
+        "license": "CUDA Toolkit",
+        "version": "1.0.2.10",
+        "linux-x86_64": {
+            "relative_path": "libcufile/linux-x86_64/libcufile-linux-x86_64-1.0.2.10-archive.tar.xz",
+            "sha256": "6f9d83ff112d81dbf36317c5140e063d4750debbebc17ffeab3ad934dbc845f1",
+            "md5": "41929b0ff024c53033a705f29bc7e573",
+            "size": "45641384"
+        }
+    },
+    "libcurand": {
+        "name": "CUDA cuRAND",
+        "license": "CUDA Toolkit",
+        "version": "10.2.5.120",
+        "linux-x86_64": {
+            "relative_path": "libcurand/linux-x86_64/libcurand-linux-x86_64-10.2.5.120-archive.tar.xz",
+            "sha256": "0f741c8c74bc19ea03a3a19a6d858d364d86d806fa5941763cafb181d4f9b2f0",
+            "md5": "5a87e0cef68405a1e4777b76d0db7fed",
+            "size": "79315612"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcurand/linux-ppc64le/libcurand-linux-ppc64le-10.2.5.120-archive.tar.xz",
+            "sha256": "14589b5f7d7e4e283552a82ea9f7ffc6504e95c10dc33a5834a2aa75bcccb208",
+            "md5": "012f3f367e15dd623de41dfa9cd5c695",
+            "size": "79373580"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcurand/linux-sbsa/libcurand-linux-sbsa-10.2.5.120-archive.tar.xz",
+            "sha256": "834b508e8979c3f4751a0ddbc62e9c8bc113844e4f82326e73cc42da4adabad9",
+            "md5": "c76e1c5544208c0372848965b0aec0a1",
+            "size": "79304900"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcurand/windows-x86_64/libcurand-windows-x86_64-10.2.5.120-archive.zip",
+            "sha256": "35108db3e9afaac017e1d3460313632850e3627520cf2213b987fa3d4cf6a8ce",
+            "md5": "dff8fe892d9551a11d366f57a3f32ad5",
+            "size": "53518206"
+        }
+    },
+    "libcusolver": {
+        "name": "CUDA cuSOLVER",
+        "license": "CUDA Toolkit",
+        "version": "11.2.0.120",
+        "linux-x86_64": {
+            "relative_path": "libcusolver/linux-x86_64/libcusolver-linux-x86_64-11.2.0.120-archive.tar.xz",
+            "sha256": "5bae164a8a6969a374f6abe33cc71462e714538c2a818228cf401d0fa6c3c1b7",
+            "md5": "198eb0679c8e81b9cb82107370bf1ee6",
+            "size": "113793268"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcusolver/linux-ppc64le/libcusolver-linux-ppc64le-11.2.0.120-archive.tar.xz",
+            "sha256": "0e2671cbe1cdb8cf4eb11698131c4ef4ce9ae58623595e623bbb3a492d7abe99",
+            "md5": "9a10d6dddcd66a095d1f5dc47f7c4924",
+            "size": "113397472"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcusolver/linux-sbsa/libcusolver-linux-sbsa-11.2.0.120-archive.tar.xz",
+            "sha256": "a53d4d80240702a8216903798ced8449f690379b785cc5fee21aeff5e0241dc4",
+            "md5": "07d5e61eac9f304ff2eec374f7674711",
+            "size": "112947208"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcusolver/windows-x86_64/libcusolver-windows-x86_64-11.2.0.120-archive.zip",
+            "sha256": "72e456cc8d7e79f514eae95ac9a4acb269e66344d67c5913370a3f0367a1f862",
+            "md5": "c8097d4d1473b354b6570d9d9f788991",
+            "size": "175875554"
+        }
+    },
+    "libcusparse": {
+        "name": "CUDA cuSPARSE",
+        "license": "CUDA Toolkit",
+        "version": "11.6.0.120",
+        "linux-x86_64": {
+            "relative_path": "libcusparse/linux-x86_64/libcusparse-linux-x86_64-11.6.0.120-archive.tar.xz",
+            "sha256": "00bef20a412c9b099e7e48477804ed4c2bda8581b101d19c50559efff79bf269",
+            "md5": "0aaa13f7c89ce128a2321ad4ed0fc45f",
+            "size": "205850728"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcusparse/linux-ppc64le/libcusparse-linux-ppc64le-11.6.0.120-archive.tar.xz",
+            "sha256": "79721331edb5e17028273cf2280b2e3aedd11c4c8145c2fbd16afeb8c37f74b9",
+            "md5": "12525f41737ba7066427a946f546b73b",
+            "size": "205966724"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcusparse/linux-sbsa/libcusparse-linux-sbsa-11.6.0.120-archive.tar.xz",
+            "sha256": "93f7fbb8191e4af59aac32adb8ac06d6501bf90ca97e3e01f400314bc320c852",
+            "md5": "37aa8d11916834daf765f385417a1d23",
+            "size": "205713852"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcusparse/windows-x86_64/libcusparse-windows-x86_64-11.6.0.120-archive.zip",
+            "sha256": "bd995a141da804fa0d2c3bce1c6d575e862877e1356041dae326825e5194c176",
+            "md5": "63fa77c71d4c5f93e5f97dd03bbb31bb",
+            "size": "165699705"
+        }
+    },
+    "libnpp": {
+        "name": "CUDA NPP",
+        "license": "CUDA Toolkit",
+        "version": "11.4.0.110",
+        "linux-x86_64": {
+            "relative_path": "libnpp/linux-x86_64/libnpp-linux-x86_64-11.4.0.110-archive.tar.xz",
+            "sha256": "2e65c5b8d8aabf5521faf8daab170ddef27d795f61ded58343a9070dffd2ebff",
+            "md5": "c8cce28919ab1b87952f657883ad2019",
+            "size": "149105144"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libnpp/linux-ppc64le/libnpp-linux-ppc64le-11.4.0.110-archive.tar.xz",
+            "sha256": "7cb571fb26fa5ae3c85489a45eb088ade9f6bf01105d651d7eaee9857085b368",
+            "md5": "794acd28cb9f8a741557bd3c2b6168fd",
+            "size": "149486332"
+        },
+        "linux-sbsa": {
+            "relative_path": "libnpp/linux-sbsa/libnpp-linux-sbsa-11.4.0.110-archive.tar.xz",
+            "sha256": "c722734c0b36702a549a3796e76461376ae471d7af7729c1d59565cb08c95ed5",
+            "md5": "f97cc0df88a8000340d397f902d7d0a4",
+            "size": "148458280"
+        },
+        "windows-x86_64": {
+            "relative_path": "libnpp/windows-x86_64/libnpp-windows-x86_64-11.4.0.110-archive.zip",
+            "sha256": "6e1a90494f93db97687b8f2b216da0ab3ca4677640c856a35e7d3b12c46c4223",
+            "md5": "57f29f491747786ef1392435502da28d",
+            "size": "111941586"
+        }
+    },
+    "libnvjpeg": {
+        "name": "CUDA nvJPEG",
+        "license": "CUDA Toolkit",
+        "version": "11.5.2.120",
+        "linux-x86_64": {
+            "relative_path": "libnvjpeg/linux-x86_64/libnvjpeg-linux-x86_64-11.5.2.120-archive.tar.xz",
+            "sha256": "b664c4cec5bf0518c83c5568fb9bc36d202dff67fce4ee12657043f45b431347",
+            "md5": "3f8670cb77f6d11219e485aa28ff3b34",
+            "size": "1906200"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libnvjpeg/linux-ppc64le/libnvjpeg-linux-ppc64le-11.5.2.120-archive.tar.xz",
+            "sha256": "c0e5fe1dc9c45e71fde99071deac6a48a94515b79e59cb0fab4412060b6bac95",
+            "md5": "8cce374dc46360952ef14e19902d240e",
+            "size": "1925636"
+        },
+        "linux-sbsa": {
+            "relative_path": "libnvjpeg/linux-sbsa/libnvjpeg-linux-sbsa-11.5.2.120-archive.tar.xz",
+            "sha256": "0e7f4360e75a6f880b2accbfd7dd0cc91e850014ee42ff1c5fcd5060fb14beec",
+            "md5": "1c8275903175d8f63dfef2b50c752bb4",
+            "size": "1764008"
+        },
+        "windows-x86_64": {
+            "relative_path": "libnvjpeg/windows-x86_64/libnvjpeg-windows-x86_64-11.5.2.120-archive.zip",
+            "sha256": "45d894a95aa26e125f5d002d138c6d9a2f2568edf809fea86d7782657bdec5fc",
+            "md5": "ad0b579ee7817a42c813f5424c53019e",
+            "size": "1951350"
+        }
+    },
+    "nsight_compute": {
+        "name": "Nsight Compute",
+        "license": "NVIDIA SLA",
+        "version": "2021.2.2.1",
+        "linux-x86_64": {
+            "relative_path": "nsight_compute/linux-x86_64/nsight_compute-linux-x86_64-2021.2.2.1-archive.tar.xz",
+            "sha256": "9baed2f77b341f6953a7de1f93c0a939c9a08884edbe0b30b0887e9d81960b39",
+            "md5": "c3d6baccc29b24dc0f48a45454f61dad",
+            "size": "284793108"
+        },
+        "linux-ppc64le": {
+            "relative_path": "nsight_compute/linux-ppc64le/nsight_compute-linux-ppc64le-2021.2.2.1-archive.tar.xz",
+            "sha256": "07980f3c1bcf1256bdcc86a8cd61fda1214af39f1a2b27d7e249a0f97c9f68c7",
+            "md5": "f1ae025d30e3b6602ee922db46b2cea6",
+            "size": "57790468"
+        },
+        "linux-sbsa": {
+            "relative_path": "nsight_compute/linux-sbsa/nsight_compute-linux-sbsa-2021.2.2.1-archive.tar.xz",
+            "sha256": "21458456d17779c8c686055cd202414bdeb2445daae480311c428fe69e1649fe",
+            "md5": "6a3229e361f0d4dd1b6cd47a26a692cc",
+            "size": "56717204"
+        },
+        "windows-x86_64": {
+            "relative_path": "nsight_compute/windows-x86_64/nsight_compute-windows-x86_64-2021.2.2.1-archive.zip",
+            "sha256": "dcc1f9b2cbdcfebcfcacd1acf522145e3335349139da6994d2b6e7610a43eecf",
+            "md5": "21e5ef7a02a83748aed68fdf4765ff7a",
+            "size": "253104502"
+        }
+    },
+    "nsight_nvtx": {
+        "name": "Nsight NVTX",
+        "license": "CUDA Toolkit",
+        "version": "1.21018621",
+        "windows-x86_64": {
+            "relative_path": "nsight_nvtx/windows-x86_64/nsight_nvtx-windows-x86_64-1.21018621-archive.zip",
+            "sha256": "d99b015bfb1308206f9d7c16ea401bf426fed3a5a99953b855fe4e68be5ed2d1",
+            "md5": "34ee04d45cfca1c4e3cbfba0ec8f6f80",
+            "size": "315692"
+        }
+    },
+    "nsight_systems": {
+        "name": "Nsight Systems",
+        "license": "NVIDIA SLA",
+        "version": "2021.3.2.4",
+        "linux-x86_64": {
+            "relative_path": "nsight_systems/linux-x86_64/nsight_systems-linux-x86_64-2021.3.2.4-archive.tar.xz",
+            "sha256": "317dcd4a3d78c7d916924f6433cb93415f19e16e4688413e4692180e37f7f87a",
+            "md5": "572fb66e9bd39406222eae7f3389794a",
+            "size": "174858452"
+        },
+        "linux-ppc64le": {
+            "relative_path": "nsight_systems/linux-ppc64le/nsight_systems-linux-ppc64le-2021.3.2.4-archive.tar.xz",
+            "sha256": "45c874f923af9fc6247058ce3324322593a7367edc4b105280d017970d5def69",
+            "md5": "4bacedaccacc5bb9cffe6b13f2502586",
+            "size": "21385068"
+        },
+        "linux-sbsa": {
+            "relative_path": "nsight_systems/linux-sbsa/nsight_systems-linux-sbsa-2021.3.2.4-archive.tar.xz",
+            "sha256": "76ce8ed29e4f8d8d472f702b9e14543f4c4e7b8f27a90079d8c3e6580db6cb16",
+            "md5": "f2b7b464fab05c73872b1ccfc8f433ea",
+            "size": "33097032"
+        },
+        "windows-x86_64": {
+            "relative_path": "nsight_systems/windows-x86_64/nsight_systems-windows-x86_64-2021.3.2.4-archive.zip",
+            "sha256": "1002ea5ef56ae5f458101af04252190e8873f950389f6c8f78cd475bd71b6efe",
+            "md5": "8e9e44e9e3ec526f1378d1e0d0423bff",
+            "size": "226086324"
+        }
+    },
+    "nsight_vse": {
+        "name": "Nsight Visual Studio Edition (VSE)",
+        "license": "NVIDIA SLA",
+        "version": "2021.2.1.21205",
+        "windows-x86_64": {
+            "relative_path": "nsight_vse/windows-x86_64/nsight_vse-windows-x86_64-2021.2.1.21205-archive.zip",
+            "sha256": "116fb34fc90cd13cf17649931be0af756930da98bbd5339b44b6cbd2d1e42453",
+            "md5": "1ff5d4397b22ed55be7c7d2a5a594a2a",
+            "size": "284584707"
+        }
+    },
+    "nvidia_driver": {
+        "name": "NVIDIA Linux Driver",
+        "license": "NVIDIA Driver",
+        "version": "470.82.01",
+        "linux-x86_64": {
+            "relative_path": "nvidia_driver/linux-x86_64/nvidia_driver-linux-x86_64-470.82.01-archive.tar.xz",
+            "sha256": "aa8edae8b40ee2c6808fd59220e81f46f2ccf8bd1ec184eb8dc83ddabba139db",
+            "md5": "9fd218a52ee6620319a4c77176dd7145",
+            "size": "269972368"
+        },
+        "linux-ppc64le": {
+            "relative_path": "nvidia_driver/linux-ppc64le/nvidia_driver-linux-ppc64le-470.82.01-archive.tar.xz",
+            "sha256": "eb521f9d849d05500f793915f0f455fe95ed0f515078081ea9e7903a0ca08957",
+            "md5": "c56d1492bcb7d65222f9dca907bf0c14",
+            "size": "67098452"
+        },
+        "linux-sbsa": {
+            "relative_path": "nvidia_driver/linux-sbsa/nvidia_driver-linux-sbsa-470.82.01-archive.tar.xz",
+            "sha256": "4d8fa4bef4037b249f4da083796a213d3e6701e683784e75122b326ab7130625",
+            "md5": "2e3059458ca28211195801da983e424c",
+            "size": "183043372"
+        }
+    },
+    "nvidia_fs": {
+        "name": "NVIDIA filesystem",
+        "license": "CUDA Toolkit",
+        "version": "2.7.53",
+        "linux-x86_64": {
+            "relative_path": "nvidia_fs/linux-x86_64/nvidia_fs-linux-x86_64-2.7.53-archive.tar.xz",
+            "sha256": "9fa17e62079fc1fadd1046b8a99dad39d1813cbc70c08bad8f30dc7946ba6894",
+            "md5": "4b4cc07a2aaf8562b1f658522613600a",
+            "size": "67712"
+        }
+    },
+    "visual_studio_integration": {
+        "name": "CUDA Visual Studio Integration",
+        "license": "CUDA Toolkit",
+        "version": "11.4.120",
+        "windows-x86_64": {
+            "relative_path": "visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-11.4.120-archive.zip",
+            "sha256": "a97171f455c7c3e938958ee02deddf264c63dd9f10197d07954917c04b444ff2",
+            "md5": "8f19de4992331ac5a877b3d3ccff25da",
+            "size": "387698"
+        }
+    }
+}
diff --git a/pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.5.2.json b/pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.5.2.json
new file mode 100644
index 00000000000..94335065c8a
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.5.2.json
@@ -0,0 +1,873 @@
+{
+    "release_date": "2022-02-02",
+    "cuda_cccl": {
+        "name": "CXX Core Compute Libraries",
+        "license": "CUDA Toolkit",
+        "version": "11.5.62",
+        "linux-x86_64": {
+            "relative_path": "cuda_cccl/linux-x86_64/cuda_cccl-linux-x86_64-11.5.62-archive.tar.xz",
+            "sha256": "bbe633d6603d5a96a214dcb9f3f6f6fd2fa04d62e53694af97ae0c7afe0121b0",
+            "md5": "e5deef4f6cb71f14aac5be5d5745dafe",
+            "size": "960968"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cccl/linux-ppc64le/cuda_cccl-linux-ppc64le-11.5.62-archive.tar.xz",
+            "sha256": "f5301a213878c7afbc67da03b09b27e1cb92178483042538f1585df09407214a",
+            "md5": "9c3200a20b10bebcdde87367128d36d9",
+            "size": "960940"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cccl/linux-sbsa/cuda_cccl-linux-sbsa-11.5.62-archive.tar.xz",
+            "sha256": "a4faf04025bdaf5b7871ad43f50cbe2ca10baf8665b17b78d32c50aa8ba7ae8b",
+            "md5": "229a13fbe8426da383addf9ee9168984",
+            "size": "960660"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-11.5.62-archive.zip",
+            "sha256": "2a44c359d523317d1c93ba6568ace3c088c83026e2e40d34a97fccd876466b4b",
+            "md5": "93604e9c00b8fbc31827c7a82c0894c2",
+            "size": "2459582"
+        }
+    },
+    "cuda_cudart": {
+        "name": "CUDA Runtime (cudart)",
+        "license": "CUDA Toolkit",
+        "version": "11.5.117",
+        "linux-x86_64": {
+            "relative_path": "cuda_cudart/linux-x86_64/cuda_cudart-linux-x86_64-11.5.117-archive.tar.xz",
+            "sha256": "c01bfcfca22063c99fd50122d39383433f4f789e021c7785cd555f59c2632a2c",
+            "md5": "7549121367907b56af18e5806e8244bc",
+            "size": "836276"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cudart/linux-ppc64le/cuda_cudart-linux-ppc64le-11.5.117-archive.tar.xz",
+            "sha256": "8f412376f4951df52380d87bb6c22704cb930ac6cef0fe92f2f31604ef744ce7",
+            "md5": "dab60517ad1e6018c009305025158860",
+            "size": "782660"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cudart/linux-sbsa/cuda_cudart-linux-sbsa-11.5.117-archive.tar.xz",
+            "sha256": "550f8dfdce3fb6ca723d716abff81e1fd55132a130d284ae2050a0f09f40c93f",
+            "md5": "c1c0c65dce9da1105d812d0b08d99108",
+            "size": "783804"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-11.5.117-archive.zip",
+            "sha256": "02cd427306ada807c9a8a1f16dd34ddeb58f35c7932bcbe13e1ee2afa882332c",
+            "md5": "b8c4d1288f5918d67777192abd627238",
+            "size": "2915733"
+        }
+    },
+    "cuda_cuobjdump": {
+        "name": "cuobjdump",
+        "license": "CUDA Toolkit",
+        "version": "11.5.119",
+        "linux-x86_64": {
+            "relative_path": "cuda_cuobjdump/linux-x86_64/cuda_cuobjdump-linux-x86_64-11.5.119-archive.tar.xz",
+            "sha256": "798fa7124d56661d7a211900266f658d4303931936157e863c82cf31aeb27b09",
+            "md5": "1d965f0f33b751d050ac8238a7a350a3",
+            "size": "112864"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cuobjdump/linux-ppc64le/cuda_cuobjdump-linux-ppc64le-11.5.119-archive.tar.xz",
+            "sha256": "04845b4feb728840823b17aadc2fb579bd8be4e04f1cfe25bb78e8724794cdfa",
+            "md5": "391d5e1b42899f34125793096f01bdbb",
+            "size": "117636"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cuobjdump/linux-sbsa/cuda_cuobjdump-linux-sbsa-11.5.119-archive.tar.xz",
+            "sha256": "1ae185d861f7075046e53e8ec69d4b650eef1bc09fdb0c89adf69e48f9b13d57",
+            "md5": "19359104b424b6033b77c6b2984fc06f",
+            "size": "101836"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cuobjdump/windows-x86_64/cuda_cuobjdump-windows-x86_64-11.5.119-archive.zip",
+            "sha256": "2b059697dcc5b3df8ca527612893905cfb91f52fef4988388458060d038d86a9",
+            "md5": "8f8ac819425d7e92a4bcb2e940eaeaad",
+            "size": "2538559"
+        }
+    },
+    "cuda_cupti": {
+        "name": "CUPTI",
+        "license": "CUDA Toolkit",
+        "version": "11.5.114",
+        "linux-x86_64": {
+            "relative_path": "cuda_cupti/linux-x86_64/cuda_cupti-linux-x86_64-11.5.114-archive.tar.xz",
+            "sha256": "1ab09d29571a80f5c26187e78419b424a041ade7c9c108523aad26d6711eb222",
+            "md5": "1adc2bcb044a372317103ad44e60f73b",
+            "size": "15910648"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cupti/linux-ppc64le/cuda_cupti-linux-ppc64le-11.5.114-archive.tar.xz",
+            "sha256": "5739768e55551b131fd2bd0ef41806f70400e767cb520c511f11ea33ac940eb6",
+            "md5": "320d9f4904723fb3ea3d95c7ea736998",
+            "size": "8454516"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cupti/linux-sbsa/cuda_cupti-linux-sbsa-11.5.114-archive.tar.xz",
+            "sha256": "05926807291609f643d4b92706a9ab627f4dd32e4f0c5779b58ba5c737453c43",
+            "md5": "6cd4c658b0e30704bb3f21cb861c16ab",
+            "size": "7827648"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cupti/windows-x86_64/cuda_cupti-windows-x86_64-11.5.114-archive.zip",
+            "sha256": "56948dab7b3d39bc9d8231a277a051e57f95efe73f9f6bfeb9f66df2be3d2208",
+            "md5": "fcb8bbf96ad9258fc0771dd59ddbab25",
+            "size": "11262366"
+        }
+    },
+    "cuda_cuxxfilt": {
+        "name": "CUDA cuxxfilt (demangler)",
+        "license": "CUDA Toolkit",
+        "version": "11.5.119",
+        "linux-x86_64": {
+            "relative_path": "cuda_cuxxfilt/linux-x86_64/cuda_cuxxfilt-linux-x86_64-11.5.119-archive.tar.xz",
+            "sha256": "46e3adabbf6a3e7920f054b0e16b8555606798453d5abb004cc4f82df20cf093",
+            "md5": "dc9e194c4c82ea3f3e2b5ac96b26355f",
+            "size": "185608"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cuxxfilt/linux-ppc64le/cuda_cuxxfilt-linux-ppc64le-11.5.119-archive.tar.xz",
+            "sha256": "f7e3345c3545f72c3ef0020403463a72a21444b2e11f3d5a5e1c1a65e10c6f5b",
+            "md5": "7316d577039df32a4bc556b5c7f13140",
+            "size": "182008"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cuxxfilt/linux-sbsa/cuda_cuxxfilt-linux-sbsa-11.5.119-archive.tar.xz",
+            "sha256": "7ef895dd76f2222d19344cadf32c84f8963c11a7773ceb73c7d9be4eb286576a",
+            "md5": "85bd622ebac9a567f88302f53f893391",
+            "size": "172336"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cuxxfilt/windows-x86_64/cuda_cuxxfilt-windows-x86_64-11.5.119-archive.zip",
+            "sha256": "7820a76ffced4194ff09a910c70cfd5ab917e67be3a0371da4e25ed000346595",
+            "md5": "dbf1c3108e731c13466180709335e702",
+            "size": "168667"
+        }
+    },
+    "cuda_demo_suite": {
+        "name": "CUDA Demo Suite",
+        "license": "CUDA Toolkit",
+        "version": "11.5.50",
+        "linux-x86_64": {
+            "relative_path": "cuda_demo_suite/linux-x86_64/cuda_demo_suite-linux-x86_64-11.5.50-archive.tar.xz",
+            "sha256": "0dc6fd4d8ab3a0a5ff1d5cbd9a5a6a970f2d01097c31903afcf733d36b67f884",
+            "md5": "da6c44696dada9f1adeb3234cfcdd9f1",
+            "size": "3976764"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_demo_suite/windows-x86_64/cuda_demo_suite-windows-x86_64-11.5.50-archive.zip",
+            "sha256": "c81ecafd4e0c6ec137f582720f94e8ac2295e673063755c551c6866e2c3ba190",
+            "md5": "39f63b4b72ba724454f679af3e351735",
+            "size": "5015382"
+        }
+    },
+    "cuda_documentation": {
+        "name": "CUDA Documentation",
+        "license": "CUDA Toolkit",
+        "version": "11.5.114",
+        "linux-x86_64": {
+            "relative_path": "cuda_documentation/linux-x86_64/cuda_documentation-linux-x86_64-11.5.114-archive.tar.xz",
+            "sha256": "338466042a594f37996d7f50543096f0e1dc644f43319ff886e2496c339f4346",
+            "md5": "c54ab14d9bdc53b03eb927cf50b1ae6e",
+            "size": "62456"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_documentation/linux-ppc64le/cuda_documentation-linux-ppc64le-11.5.114-archive.tar.xz",
+            "sha256": "69478f98bf8467843d5b6c3ae8163e082e89b9a6eb8061c900e1bbe76d570a03",
+            "md5": "3c93062774f05facc809047af4721017",
+            "size": "62516"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_documentation/linux-sbsa/cuda_documentation-linux-sbsa-11.5.114-archive.tar.xz",
+            "sha256": "ff6f44549650db44b0a6726b0ce1bc9b325d629190c6b17d35a2b99d36434678",
+            "md5": "54afce3c11863b2e515719325a3a05f4",
+            "size": "62452"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_documentation/windows-x86_64/cuda_documentation-windows-x86_64-11.5.114-archive.zip",
+            "sha256": "ec7ff829ce1717a88c54dbb15739e46f5d876e9ef32cc911fc66e2b78f3b286e",
+            "md5": "d84ba6f46eda183231a01523eb8a0593",
+            "size": "100197"
+        }
+    },
+    "cuda_gdb": {
+        "name": "CUDA GDB",
+        "license": "CUDA Toolkit",
+        "version": "11.5.114",
+        "linux-x86_64": {
+            "relative_path": "cuda_gdb/linux-x86_64/cuda_gdb-linux-x86_64-11.5.114-archive.tar.xz",
+            "sha256": "a590393cdbfb6620053075d9eebb18abcaedfd8ccdec2e4c8f4631080e7eaa31",
+            "md5": "3e9ecd9834eb282d6ea55cf61765c01a",
+            "size": "64086136"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_gdb/linux-ppc64le/cuda_gdb-linux-ppc64le-11.5.114-archive.tar.xz",
+            "sha256": "564c2ff35bf3f76c60f57c9669d4a1b8312f6fedb0fa08c16178634a451fef72",
+            "md5": "779ce7f3fd7b623c8cd12f822848c273",
+            "size": "63889192"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_gdb/linux-sbsa/cuda_gdb-linux-sbsa-11.5.114-archive.tar.xz",
+            "sha256": "482d8ad678e00a562b087a0e6d988ca92a83a3aefccf8a9166390956739637a6",
+            "md5": "bdc885a67bd000b44ea0f2ee46ab74f0",
+            "size": "63816804"
+        }
+    },
+    "cuda_memcheck": {
+        "name": "CUDA Memcheck",
+        "license": "CUDA Toolkit",
+        "version": "11.5.114",
+        "linux-x86_64": {
+            "relative_path": "cuda_memcheck/linux-x86_64/cuda_memcheck-linux-x86_64-11.5.114-archive.tar.xz",
+            "sha256": "d13f915017ce2e4b6ed58b112fb831e07a638fa26cb73cd5501e330321048975",
+            "md5": "584bcd833078f505b6f4c96b32cb8f45",
+            "size": "139756"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_memcheck/linux-ppc64le/cuda_memcheck-linux-ppc64le-11.5.114-archive.tar.xz",
+            "sha256": "43baae7eb977d265bd4763c10e5b5d2594a70dacabc00904468aa84c2ce13b82",
+            "md5": "02a82840a71a889bcbdf655d41704b20",
+            "size": "148096"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_memcheck/windows-x86_64/cuda_memcheck-windows-x86_64-11.5.114-archive.zip",
+            "sha256": "79193c8cf3a2d63cb182aea57aa54e705f49cc606cf13213439709b317fd9051",
+            "md5": "06d2c5975482a2d266c40baae8e94448",
+            "size": "172699"
+        }
+    },
+    "cuda_nsight": {
+        "name": "Nsight Eclipse Edition Plugin",
+        "license": "CUDA Toolkit",
+        "version": "11.5.114",
+        "linux-x86_64": {
+            "relative_path": "cuda_nsight/linux-x86_64/cuda_nsight-linux-x86_64-11.5.114-archive.tar.xz",
+            "sha256": "a4a512d806cce1ce73c87c0b996eddbfebc735d6b749915c870907f347de1840",
+            "md5": "70bcbc9042f7757b34c1e7dbff56c719",
+            "size": "118606516"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nsight/linux-ppc64le/cuda_nsight-linux-ppc64le-11.5.114-archive.tar.xz",
+            "sha256": "1ad8e934acd5563ce23f40359f3515fa1344ed6cfa6e8ea37e7c9ed51c52ddcf",
+            "md5": "e58439f4b05a43a1e29cbe971228e1f8",
+            "size": "118606504"
+        }
+    },
+    "cuda_nvcc": {
+        "name": "CUDA NVCC",
+        "license": "CUDA Toolkit",
+        "version": "11.5.119",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvcc/linux-x86_64/cuda_nvcc-linux-x86_64-11.5.119-archive.tar.xz",
+            "sha256": "4072592764717f5c3ac53b95f0bb5f2bf427294b94aa9abda125e51b4fca9e0a",
+            "md5": "272cd495f19864fab9e0b8c6a4d70a4d",
+            "size": "36316988"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvcc/linux-ppc64le/cuda_nvcc-linux-ppc64le-11.5.119-archive.tar.xz",
+            "sha256": "1dd811c9e8e6bb219a7e0ef63514665f8d7e6253ad93474b5b3594fce85cb191",
+            "md5": "af5523c22de1667aece90f23dbe9a51a",
+            "size": "34137608"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvcc/linux-sbsa/cuda_nvcc-linux-sbsa-11.5.119-archive.tar.xz",
+            "sha256": "21e9d7941a62806331e94eff3ba22b4bcace3f8227e133580f0367343eb3f3a4",
+            "md5": "a7c7797e5d7a586d7e74cc3e70bda731",
+            "size": "31876488"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-11.5.119-archive.zip",
+            "sha256": "477ca5d096c2e5a87480cae24951b54e641030cfc3c75ce869e0656e4fcb2142",
+            "md5": "657fb06f0e06a16ee936aa22e7a3dd27",
+            "size": "46379856"
+        }
+    },
+    "cuda_nvdisasm": {
+        "name": "CUDA nvdisasm",
+        "license": "CUDA Toolkit",
+        "version": "11.5.119",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvdisasm/linux-x86_64/cuda_nvdisasm-linux-x86_64-11.5.119-archive.tar.xz",
+            "sha256": "7b5055db4fbc270a49d69dae6320331d16b3d50f828a9b155e7bf2abe138f273",
+            "md5": "0405b49d574e4fd5783a1bfba9228966",
+            "size": "32786096"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvdisasm/linux-ppc64le/cuda_nvdisasm-linux-ppc64le-11.5.119-archive.tar.xz",
+            "sha256": "10e7d0794c8efd42fd345355e9ae8680b767b1b8d004c9e9baf2b4ad9b993b59",
+            "md5": "11af2b0e169436278538d063370fc04f",
+            "size": "32776804"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvdisasm/linux-sbsa/cuda_nvdisasm-linux-sbsa-11.5.119-archive.tar.xz",
+            "sha256": "698ccf414b9a7d823dc8d9818df72cac0a10d618ab143b221bbf321ada96ef08",
+            "md5": "345f1c616a294ec7c70b1f881542a894",
+            "size": "32729044"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvdisasm/windows-x86_64/cuda_nvdisasm-windows-x86_64-11.5.119-archive.zip",
+            "sha256": "f8dee0ae12696a02a01e95083e1fde8222018f641f7ebf712985fc6c1716f217",
+            "md5": "f375afe649b16160af3ace6237d241cc",
+            "size": "32996636"
+        }
+    },
+    "cuda_nvml_dev": {
+        "name": "CUDA NVML Headers",
+        "license": "CUDA Toolkit",
+        "version": "11.5.50",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvml_dev/linux-x86_64/cuda_nvml_dev-linux-x86_64-11.5.50-archive.tar.xz",
+            "sha256": "e7a03b5c0324ccb5040cd494d2e3f1fba508cc437d666f112a6702d75bd80891",
+            "md5": "53f9279a45cb1bb6c1993e7245a38a74",
+            "size": "72176"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvml_dev/linux-ppc64le/cuda_nvml_dev-linux-ppc64le-11.5.50-archive.tar.xz",
+            "sha256": "753ac81cde5a58b7bd4b59d56ab5e0ba973f96d6ffe95c447eb47f170d0c74be",
+            "md5": "f08c23cf9598624799c19e628c6d91f8",
+            "size": "71972"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvml_dev/linux-sbsa/cuda_nvml_dev-linux-sbsa-11.5.50-archive.tar.xz",
+            "sha256": "d3f913393ec4a1648fc5230c766606e1c8a7ca31f7595fd149f5cbeea63bd01a",
+            "md5": "090c36b75393eef09d3b527521fa3791",
+            "size": "72472"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvml_dev/windows-x86_64/cuda_nvml_dev-windows-x86_64-11.5.50-archive.zip",
+            "sha256": "ccd320d7b4aa8c7006085e003b9763a20a37e101e59dde8bcaf13f1e3b5ec04c",
+            "md5": "b36dc6c87730612d3c538aacb10e89a8",
+            "size": "100572"
+        }
+    },
+    "cuda_nvprof": {
+        "name": "CUDA nvprof",
+        "license": "CUDA Toolkit",
+        "version": "11.5.114",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvprof/linux-x86_64/cuda_nvprof-linux-x86_64-11.5.114-archive.tar.xz",
+            "sha256": "611984e6ce96f216da0d5e3f72584b8e89512a712baf8faa5cc95f14be44ce51",
+            "md5": "3146cddf336fc73e4348018058c57c70",
+            "size": "1940688"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvprof/linux-ppc64le/cuda_nvprof-linux-ppc64le-11.5.114-archive.tar.xz",
+            "sha256": "24c238e26fe49489d3aee0429e629eadc24122a93e5935758c97dab91f2a59b3",
+            "md5": "685eed537cd8f9271d30a1d6a64d2643",
+            "size": "1597248"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvprof/linux-sbsa/cuda_nvprof-linux-sbsa-11.5.114-archive.tar.xz",
+            "sha256": "b1c7b2498665c70e7d675170f1309f19ec86a55d284fcac6c7e2337c07a565af",
+            "md5": "e26370530b986512b219f99fe707c57f",
+            "size": "16196"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-11.5.114-archive.zip",
+            "sha256": "6274433235b2b61aac7333b9a7472893c6b7ca53e34a9a96ca197e46e925d394",
+            "md5": "5d47af0e512563b484d3270a9225fad0",
+            "size": "1599403"
+        }
+    },
+    "cuda_nvprune": {
+        "name": "CUDA nvprune",
+        "license": "CUDA Toolkit",
+        "version": "11.5.119",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvprune/linux-x86_64/cuda_nvprune-linux-x86_64-11.5.119-archive.tar.xz",
+            "sha256": "f66c2632dbbdc6153aed2ae8bbf3291de258f7be5fd53350d469cf6f894aaa5c",
+            "md5": "737a4e6b4ba979934f22cd9ff932f47d",
+            "size": "55228"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvprune/linux-ppc64le/cuda_nvprune-linux-ppc64le-11.5.119-archive.tar.xz",
+            "sha256": "209ddd276e857cb41e162f3748778dceb224bbab445469480f6578d1b8a199ad",
+            "md5": "47f52a330781b2c5e6094ed309043faf",
+            "size": "55760"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvprune/linux-sbsa/cuda_nvprune-linux-sbsa-11.5.119-archive.tar.xz",
+            "sha256": "57429ab14f4a99fcc2f7160a9d93f39358a4cf0f8e0d0996973883b1f5c1d520",
+            "md5": "8b3d84b2e114e53b00e6fc6dd514750d",
+            "size": "47580"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvprune/windows-x86_64/cuda_nvprune-windows-x86_64-11.5.119-archive.zip",
+            "sha256": "89a883eee3d6931e9b071c19a9ef07368429b8008fcb0f392229baa3d21b6cc2",
+            "md5": "3e23701483da9ac6910a52dbcdb48ff0",
+            "size": "144817"
+        }
+    },
+    "cuda_nvrtc": {
+        "name": "CUDA NVRTC",
+        "license": "CUDA Toolkit",
+        "version": "11.5.119",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvrtc/linux-x86_64/cuda_nvrtc-linux-x86_64-11.5.119-archive.tar.xz",
+            "sha256": "78aa426f8d1bd6a309582268045e92d798dea84ab17b0e41bbf81ed4c6c51c37",
+            "md5": "a14c3f9a30ca27f0a975b6995b440927",
+            "size": "27772396"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvrtc/linux-ppc64le/cuda_nvrtc-linux-ppc64le-11.5.119-archive.tar.xz",
+            "sha256": "bd10849b493902487660d3216a9b1de2c687d0d013085a7194925ff0a8d0461a",
+            "md5": "b3e11ca277f1c92e8adf8056ee759fc2",
+            "size": "25932956"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvrtc/linux-sbsa/cuda_nvrtc-linux-sbsa-11.5.119-archive.tar.xz",
+            "sha256": "c924444459eca0ee5f5748cc80628c0e8759d6cf70c55b5ce2e1b4b37a46d3cd",
+            "md5": "31900a4918e162377e634dbc9d01ccba",
+            "size": "25787560"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-11.5.119-archive.zip",
+            "sha256": "e6c7312b4b8f678828dca2b2e29bd8a1afee83709885bffe0115743219e092ae",
+            "md5": "39a1fb1c6514e7a13d8822fef1fb6e95",
+            "size": "92408767"
+        }
+    },
+    "cuda_nvtx": {
+        "name": "CUDA NVTX",
+        "license": "CUDA Toolkit",
+        "version": "11.5.114",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvtx/linux-x86_64/cuda_nvtx-linux-x86_64-11.5.114-archive.tar.xz",
+            "sha256": "201b000020db8e296f526dbc1bedf6f0d2eb901e6add9d95a8badfaf8708bc7c",
+            "md5": "fa5a8ec26505381bff0d513c3219b4b6",
+            "size": "48196"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvtx/linux-ppc64le/cuda_nvtx-linux-ppc64le-11.5.114-archive.tar.xz",
+            "sha256": "b188a8b413c2f8502c4ac6bd22a8c4d60279f704682a0582e71cb045817c08bc",
+            "md5": "f51ac28484f7001ee7c10f37d5e98e38",
+            "size": "48180"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvtx/linux-sbsa/cuda_nvtx-linux-sbsa-11.5.114-archive.tar.xz",
+            "sha256": "9caf957366bc723e53de7189112bd04d99300932061a2c3590e26215d0a39a04",
+            "md5": "36e5d0c4a142260d1c5364733ce296cd",
+            "size": "48740"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-11.5.114-archive.zip",
+            "sha256": "4d60f65ef83bcf36d549095350097c4198f78a968452b1fff0f1dabbe96a633b",
+            "md5": "da8c51d38126ec2541c0f87dfd40aefe",
+            "size": "65783"
+        }
+    },
+    "cuda_nvvp": {
+        "name": "CUDA NVVP",
+        "license": "CUDA Toolkit",
+        "version": "11.5.126",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvvp/linux-x86_64/cuda_nvvp-linux-x86_64-11.5.126-archive.tar.xz",
+            "sha256": "453884ffe6732c0e1d19a17944dbdbb948a24ed2980acc67620bc0c160c4e023",
+            "md5": "9d89a2f1c793736e329a8b0b5176616a",
+            "size": "117592064"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvvp/linux-ppc64le/cuda_nvvp-linux-ppc64le-11.5.126-archive.tar.xz",
+            "sha256": "ebb5b6849b4c014b9eeebcaf0f8e333ee8ab4a65cac8ed401a6a31604d7435d6",
+            "md5": "6d621d6e56884143ac48910950dbc5f5",
+            "size": "116958804"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvvp/windows-x86_64/cuda_nvvp-windows-x86_64-11.5.126-archive.zip",
+            "sha256": "3e88475b6ce923c736e49f659717ee0cbb0551c5e30f9cb8256ebf740d02f457",
+            "md5": "4f8b8c7a3cafbdac8dfe3f9507c92d10",
+            "size": "120342187"
+        }
+    },
+    "cuda_sanitizer_api": {
+        "name": "CUDA Compute Sanitizer API",
+        "license": "CUDA Toolkit",
+        "version": "11.5.114",
+        "linux-x86_64": {
+            "relative_path": "cuda_sanitizer_api/linux-x86_64/cuda_sanitizer_api-linux-x86_64-11.5.114-archive.tar.xz",
+            "sha256": "35d13fdeae94b2294c4d83661a663b5bae98e3f9b4aae00be101140a32409047",
+            "md5": "52719791f4361ee001bd6327d79dcb2b",
+            "size": "6818460"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_sanitizer_api/linux-ppc64le/cuda_sanitizer_api-linux-ppc64le-11.5.114-archive.tar.xz",
+            "sha256": "b5353633dcc09e6360e9da14636774eee8cd9db90dd3ca93b77b1a95b104740c",
+            "md5": "3f79dbebc1b88b552da041ccb7921ac3",
+            "size": "7324744"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_sanitizer_api/linux-sbsa/cuda_sanitizer_api-linux-sbsa-11.5.114-archive.tar.xz",
+            "sha256": "3ce2d4421f9d8547bedb25c0ae8054ab0bb755384a33eea79dd036a8d4658a7f",
+            "md5": "7585db5187b4fcbb713ff89eaf877389",
+            "size": "5391196"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_sanitizer_api/windows-x86_64/cuda_sanitizer_api-windows-x86_64-11.5.114-archive.zip",
+            "sha256": "b216d0292002b4cc673a374f06576bc062e6566062a32edcdca60716e98f6587",
+            "md5": "eccae888d8ee4264f8b5517f9af7fbc3",
+            "size": "12199859"
+        }
+    },
+    "fabricmanager": {
+        "name": "NVIDIA Fabric Manager",
+        "license": "NVIDIA Driver",
+        "version": "495.29.05",
+        "linux-x86_64": {
+            "relative_path": "fabricmanager/linux-x86_64/fabricmanager-linux-x86_64-495.29.05-archive.tar.xz",
+            "sha256": "36966ebf7951dbd77fefb95b326b9084948ac8d03fbb6e8997e90c0fe8f74c9d",
+            "md5": "4c4f119d897a77448f989534aa453a79",
+            "size": "1521552"
+        }
+    },
+    "libcublas": {
+        "name": "CUDA cuBLAS",
+        "license": "CUDA Toolkit",
+        "version": "11.7.4.6",
+        "linux-x86_64": {
+            "relative_path": "libcublas/linux-x86_64/libcublas-linux-x86_64-11.7.4.6-archive.tar.xz",
+            "sha256": "1ba27f135e2f920bb47e22c05e4ef2e0a75e21d9306f5062e44c3d705150a3a9",
+            "md5": "878826ff2c817a35a335f5e6ff4c5153",
+            "size": "427700280"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcublas/linux-ppc64le/libcublas-linux-ppc64le-11.7.4.6-archive.tar.xz",
+            "sha256": "061cdbeb437510437b4dfcd053834932e60943be996aea0187f6ba36b7cf614f",
+            "md5": "fb760e547e07904d0e52578b01326219",
+            "size": "427200296"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcublas/linux-sbsa/libcublas-linux-sbsa-11.7.4.6-archive.tar.xz",
+            "sha256": "38d7045310487b6f3dad4c6f8c5f6420b4dcf9dbf0171f3ef5f48f3e2f0024f9",
+            "md5": "0c5411a296b474cd02a57de4b8cf4d0d",
+            "size": "427180072"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcublas/windows-x86_64/libcublas-windows-x86_64-11.7.4.6-archive.zip",
+            "sha256": "a5b2c090e7b3da7b9823aa71ecf76a07344846daf8d26b13a06dba2d8a572c79",
+            "md5": "071e96d21a31393cfef5dd263d2eb90b",
+            "size": "317995451"
+        }
+    },
+    "libcufft": {
+        "name": "CUDA cuFFT",
+        "license": "CUDA Toolkit",
+        "version": "10.6.0.107",
+        "linux-x86_64": {
+            "relative_path": "libcufft/linux-x86_64/libcufft-linux-x86_64-10.6.0.107-archive.tar.xz",
+            "sha256": "e2e51dc75c9c5b4476624bf683d50afbcc611f88361392625f017bd3efc545b9",
+            "md5": "abcd6e63926592b1d8de9a90e9953b44",
+            "size": "213873928"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcufft/linux-ppc64le/libcufft-linux-ppc64le-10.6.0.107-archive.tar.xz",
+            "sha256": "5e0e004e33a148bf543fd69df8ad7fcd14ae72c60676679908a6cf164a065651",
+            "md5": "34042143bf1179bde112cee7237d149a",
+            "size": "214892660"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcufft/linux-sbsa/libcufft-linux-sbsa-10.6.0.107-archive.tar.xz",
+            "sha256": "e5ea473699697bcfd2a0ab7b807dbc5dd713bfe40221f7356097fb6e2577d73a",
+            "md5": "e800a93f81fdb7e95d31a14b7a215138",
+            "size": "213119620"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcufft/windows-x86_64/libcufft-windows-x86_64-10.6.0.107-archive.zip",
+            "sha256": "f6b846a79772640585cbfc35746ededa1210e1ba7005e075d678a4d84ffd93ec",
+            "md5": "7ec0315c986911ad1ea1cfd1705bc57a",
+            "size": "287130074"
+        }
+    },
+    "libcufile": {
+        "name": "CUDA cuFile",
+        "license": "CUDA Toolkit",
+        "version": "1.1.1.25",
+        "linux-x86_64": {
+            "relative_path": "libcufile/linux-x86_64/libcufile-linux-x86_64-1.1.1.25-archive.tar.xz",
+            "sha256": "b4f4321f4fd249a2f4d68b3cf396a9e5891e33d73a297e21eea0ed9417340808",
+            "md5": "dae59d20c2f51dc90fb18d017a17664e",
+            "size": "45837600"
+        }
+    },
+    "libcurand": {
+        "name": "CUDA cuRAND",
+        "license": "CUDA Toolkit",
+        "version": "10.2.7.107",
+        "linux-x86_64": {
+            "relative_path": "libcurand/linux-x86_64/libcurand-linux-x86_64-10.2.7.107-archive.tar.xz",
+            "sha256": "9dd3bfa212a4c8e58a6869c4992e710409d34c46d5a683cf99670d5ef5b1f8de",
+            "md5": "58f7993190fce602ea7e68aab7912774",
+            "size": "82066560"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcurand/linux-ppc64le/libcurand-linux-ppc64le-10.2.7.107-archive.tar.xz",
+            "sha256": "67d0759b1252d9df7953932ed58d01c05a4861121c19bafbb544b585113552ab",
+            "md5": "368e13f6b9eb6e72fbc852d6dcfc4b6f",
+            "size": "82116948"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcurand/linux-sbsa/libcurand-linux-sbsa-10.2.7.107-archive.tar.xz",
+            "sha256": "e8f2cc5e786812cf70bd7bd37a9c78e3341e602c402177d44e7bf07fe7e85142",
+            "md5": "97065efb1e5fb99589540a45711eb2f3",
+            "size": "82051480"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcurand/windows-x86_64/libcurand-windows-x86_64-10.2.7.107-archive.zip",
+            "sha256": "fa74020026d1cf81b0a3004c823ae40a4f0a02df34041438b992e6058ff97cd2",
+            "md5": "df2a95194669cc02d987ee6527c5c6e3",
+            "size": "53627481"
+        }
+    },
+    "libcusolver": {
+        "name": "CUDA cuSOLVER",
+        "license": "CUDA Toolkit",
+        "version": "11.3.2.107",
+        "linux-x86_64": {
+            "relative_path": "libcusolver/linux-x86_64/libcusolver-linux-x86_64-11.3.2.107-archive.tar.xz",
+            "sha256": "4c9e3fec211fa6cc6dd14a7d09237c56f43789e498817cd0839b0e6ef9c498fa",
+            "md5": "19b927da5bb8c6fc28b2667e57eda7eb",
+            "size": "69221812"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcusolver/linux-ppc64le/libcusolver-linux-ppc64le-11.3.2.107-archive.tar.xz",
+            "sha256": "1f216cdda56463d333ffe4d52cf18283b3a8d917737698f5c8ed5851120f119a",
+            "md5": "6b3ac8f0889f968c34e6fe903340ff5c",
+            "size": "69348116"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcusolver/linux-sbsa/libcusolver-linux-sbsa-11.3.2.107-archive.tar.xz",
+            "sha256": "6feba029d8838d17345c38d77b6cd0e7853934106edcc5d5f6ec57646b499d28",
+            "md5": "55492c175f1a152df54365544e2b582d",
+            "size": "68661512"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcusolver/windows-x86_64/libcusolver-windows-x86_64-11.3.2.107-archive.zip",
+            "sha256": "325684ebefb24f7a47c5868a87f8dc38c88812c12f113bd57029b3a715c95405",
+            "md5": "8936a0967f4178e7170f9e55fa4e6cd3",
+            "size": "98405802"
+        }
+    },
+    "libcusparse": {
+        "name": "CUDA cuSPARSE",
+        "license": "CUDA Toolkit",
+        "version": "11.7.0.107",
+        "linux-x86_64": {
+            "relative_path": "libcusparse/linux-x86_64/libcusparse-linux-x86_64-11.7.0.107-archive.tar.xz",
+            "sha256": "9e768d6278df1b2323e2708bbf53af0bdb2955c0c4688eb69d5e418aea3a9b41",
+            "md5": "c7653a07b2388d887c4e6b3ac1afafb4",
+            "size": "181259248"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcusparse/linux-ppc64le/libcusparse-linux-ppc64le-11.7.0.107-archive.tar.xz",
+            "sha256": "f01d662635d7b2001ace6122058159c9583c61db3fc5849a8ae025b9963657ec",
+            "md5": "91b9e100ce9bae17ea08d97152184e44",
+            "size": "181408304"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcusparse/linux-sbsa/libcusparse-linux-sbsa-11.7.0.107-archive.tar.xz",
+            "sha256": "88de7ce848b929439ba1fa1baf487ec56fedc39f8042a862c2f5522fbc1e82a2",
+            "md5": "aec6e62aeff853dff5a150e2d0ca8aa1",
+            "size": "181074920"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcusparse/windows-x86_64/libcusparse-windows-x86_64-11.7.0.107-archive.zip",
+            "sha256": "365a0316da888e0b8cc17b3e958b24b9faefa35e6b5fded7d9083483c1f0c097",
+            "md5": "3c870ec7f8fc23130c66f989afd16a8e",
+            "size": "149810382"
+        }
+    },
+    "libnpp": {
+        "name": "CUDA NPP",
+        "license": "CUDA Toolkit",
+        "version": "11.5.1.107",
+        "linux-x86_64": {
+            "relative_path": "libnpp/linux-x86_64/libnpp-linux-x86_64-11.5.1.107-archive.tar.xz",
+            "sha256": "5c6bcb73d6e2426e7369e5157387e02f70db3e94b2351c447ce559cba57e36f4",
+            "md5": "762faaa53a62272ba508188779fc43f6",
+            "size": "156693812"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libnpp/linux-ppc64le/libnpp-linux-ppc64le-11.5.1.107-archive.tar.xz",
+            "sha256": "cf2cbc740d9c111d9d266737f62ba4b44cfc84590fe1f9f4bf848b0908296971",
+            "md5": "e284bab2afa99d9654c1b97ae407434f",
+            "size": "156937760"
+        },
+        "linux-sbsa": {
+            "relative_path": "libnpp/linux-sbsa/libnpp-linux-sbsa-11.5.1.107-archive.tar.xz",
+            "sha256": "cd86f76d41010e7fd37804ba102ec6896de4e51a2724cf44b9e7b22c1aa86429",
+            "md5": "037ada0cfe8cb4885ceb07eb3423f789",
+            "size": "156056260"
+        },
+        "windows-x86_64": {
+            "relative_path": "libnpp/windows-x86_64/libnpp-windows-x86_64-11.5.1.107-archive.zip",
+            "sha256": "3ef847675b5cecdd70ede5216b91530bff152478441dc4b1e0d73bfcdb586a06",
+            "md5": "d04eed9ff4432bc48f0afae802841793",
+            "size": "121933476"
+        }
+    },
+    "libnvidia_nscq": {
+        "name": "NVIDIA NSCQ API",
+        "license": "NVIDIA Driver",
+        "version": "495.29.05",
+        "linux-x86_64": {
+            "relative_path": "libnvidia_nscq/linux-x86_64/libnvidia_nscq-linux-x86_64-495.29.05-archive.tar.xz",
+            "sha256": "19e036898474c89697c4adf4958daa241c07b6d9c9f6623190dd7a3b667a4c6b",
+            "md5": "733c3a1ef5c33e4b4ccfaad11b514a98",
+            "size": "316860"
+        }
+    },
+    "libnvjpeg": {
+        "name": "CUDA nvJPEG",
+        "license": "CUDA Toolkit",
+        "version": "11.5.4.107",
+        "linux-x86_64": {
+            "relative_path": "libnvjpeg/linux-x86_64/libnvjpeg-linux-x86_64-11.5.4.107-archive.tar.xz",
+            "sha256": "3943941f449e8a9aea465e26a25f3d0315e45a57c5ab993f1d15dac7453dcffc",
+            "md5": "6459aa39efda628e4de36caafc938158",
+            "size": "1902936"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libnvjpeg/linux-ppc64le/libnvjpeg-linux-ppc64le-11.5.4.107-archive.tar.xz",
+            "sha256": "760295c056951752ba7f4a5a56f4e5afe1538eafbc8ea01c21abe9b8bbd3f09e",
+            "md5": "ee70cf1d8888bd696b34eb9981c865af",
+            "size": "1924452"
+        },
+        "linux-sbsa": {
+            "relative_path": "libnvjpeg/linux-sbsa/libnvjpeg-linux-sbsa-11.5.4.107-archive.tar.xz",
+            "sha256": "4dbc3c0da37ce108faadcaebbe72335984a60ed055b29fa56edfd89aad9d89cc",
+            "md5": "54f25526b1d95a5e2a02ddc33eaf1ada",
+            "size": "1735520"
+        },
+        "windows-x86_64": {
+            "relative_path": "libnvjpeg/windows-x86_64/libnvjpeg-windows-x86_64-11.5.4.107-archive.zip",
+            "sha256": "50bb7bdd84a8ec74d4b2e2a133d8dd0474aa4224c3e7643ed75a7864cf705df6",
+            "md5": "ef86aa6770eba3dc31a33698b600507b",
+            "size": "1941889"
+        }
+    },
+    "nsight_compute": {
+        "name": "Nsight Compute",
+        "license": "NVIDIA SLA",
+        "version": "2021.3.1.4",
+        "linux-x86_64": {
+            "relative_path": "nsight_compute/linux-x86_64/nsight_compute-linux-x86_64-2021.3.1.4-archive.tar.xz",
+            "sha256": "75cd4ca50472c8e4d6729e2f319a2e2f225c21450e868169608eaf1651de7cfd",
+            "md5": "d4de103a4cce16501323ab22da3a5d3f",
+            "size": "409065700"
+        },
+        "linux-ppc64le": {
+            "relative_path": "nsight_compute/linux-ppc64le/nsight_compute-linux-ppc64le-2021.3.1.4-archive.tar.xz",
+            "sha256": "326be8ea63091f14e7de7cf11d5c8e465200770518dccafc45ade7583e42e049",
+            "md5": "0a34928121b5518075a3a50919f94999",
+            "size": "123353872"
+        },
+        "linux-sbsa": {
+            "relative_path": "nsight_compute/linux-sbsa/nsight_compute-linux-sbsa-2021.3.1.4-archive.tar.xz",
+            "sha256": "f846e7f443df58dd03ad7da27483dc159715bdf1e260200499bc1ba4f9e2ab17",
+            "md5": "6a22972b8771101d334cdd0f65785727",
+            "size": "120013812"
+        },
+        "windows-x86_64": {
+            "relative_path": "nsight_compute/windows-x86_64/nsight_compute-windows-x86_64-2021.3.1.4-archive.zip",
+            "sha256": "6bb1bb69aa8976e8d60a23e25784967628a19622b779b4c5f44a1a5b10b6b312",
+            "md5": "b3f1e03bf4b2b054287ae3ac9b693052",
+            "size": "347770366"
+        }
+    },
+    "nsight_nvtx": {
+        "name": "Nsight NVTX",
+        "license": "CUDA Toolkit",
+        "version": "1.21018621",
+        "windows-x86_64": {
+            "relative_path": "nsight_nvtx/windows-x86_64/nsight_nvtx-windows-x86_64-1.21018621-archive.zip",
+            "sha256": "d99b015bfb1308206f9d7c16ea401bf426fed3a5a99953b855fe4e68be5ed2d1",
+            "md5": "34ee04d45cfca1c4e3cbfba0ec8f6f80",
+            "size": "315692"
+        }
+    },
+    "nsight_systems": {
+        "name": "Nsight Systems",
+        "license": "NVIDIA SLA",
+        "version": "2021.3.3.2",
+        "linux-x86_64": {
+            "relative_path": "nsight_systems/linux-x86_64/nsight_systems-linux-x86_64-2021.3.3.2-archive.tar.xz",
+            "sha256": "89833f6e45c16c46612ec8ef2b7eab4a949ed86f0a75ebd673548d2ec15bf5bb",
+            "md5": "4e42508a7365bffca7c574afc1095fb2",
+            "size": "177789420"
+        },
+        "linux-ppc64le": {
+            "relative_path": "nsight_systems/linux-ppc64le/nsight_systems-linux-ppc64le-2021.3.3.2-archive.tar.xz",
+            "sha256": "39e59ff32decff6032df0d735dfe6004e5d543d52d212cd2743e5941900c1a52",
+            "md5": "56f46452fef6ddceb91121c6a3da78af",
+            "size": "22565096"
+        },
+        "linux-sbsa": {
+            "relative_path": "nsight_systems/linux-sbsa/nsight_systems-linux-sbsa-2021.3.3.2-archive.tar.xz",
+            "sha256": "292bf43aac5c870be38c28aa536c01b6692ede682b9790622fc7a8862b143b0d",
+            "md5": "33aead87216f96a372db125f67e6f675",
+            "size": "34536232"
+        },
+        "windows-x86_64": {
+            "relative_path": "nsight_systems/windows-x86_64/nsight_systems-windows-x86_64-2021.3.3.2-archive.zip",
+            "sha256": "c9c67a83bbfc0bbdcd30391cf3fa285f813f3b8d6dc088c4225a5ca7ccac38a2",
+            "md5": "ab69a73835e658ac2871160daa01fa50",
+            "size": "229359100"
+        }
+    },
+    "nsight_vse": {
+        "name": "Nsight Visual Studio Edition (VSE)",
+        "license": "NVIDIA SLA",
+        "version": "2021.3.1.21308",
+        "windows-x86_64": {
+            "relative_path": "nsight_vse/windows-x86_64/nsight_vse-windows-x86_64-2021.3.1.21308-archive.zip",
+            "sha256": "ba659a0071bac9a2218c3b5f504c8fbe961f828df27361ed897c0dd41b53f71a",
+            "md5": "720962c80b8aa09fb496014eb7f25e41",
+            "size": "284695569"
+        }
+    },
+    "nvidia_driver": {
+        "name": "NVIDIA Linux Driver",
+        "license": "NVIDIA Driver",
+        "version": "495.29.05",
+        "linux-x86_64": {
+            "relative_path": "nvidia_driver/linux-x86_64/nvidia_driver-linux-x86_64-495.29.05-archive.tar.xz",
+            "sha256": "6a0675a60fde511573362490c290ca71b2bf111dd85c9ca16a7ed9786c15961f",
+            "md5": "04805f93ad0db2b845584c65aea21f3c",
+            "size": "280281252"
+        },
+        "linux-ppc64le": {
+            "relative_path": "nvidia_driver/linux-ppc64le/nvidia_driver-linux-ppc64le-495.29.05-archive.tar.xz",
+            "sha256": "70c99be31356f0620971f335cfc9886fe3d6097182c5b823c85ec15758e08933",
+            "md5": "9ed9d400e2ef25b321a4709052b436e4",
+            "size": "69613620"
+        },
+        "linux-sbsa": {
+            "relative_path": "nvidia_driver/linux-sbsa/nvidia_driver-linux-sbsa-495.29.05-archive.tar.xz",
+            "sha256": "625c72d1d1e14d97c90b3fb8c6d5f7ac3d1649caa10cef1aa13239163672046e",
+            "md5": "dbc65a82959790a387b1f343481101b4",
+            "size": "210257752"
+        }
+    },
+    "nvidia_fs": {
+        "name": "NVIDIA filesystem",
+        "license": "CUDA Toolkit",
+        "version": "2.9.5",
+        "linux-x86_64": {
+            "relative_path": "nvidia_fs/linux-x86_64/nvidia_fs-linux-x86_64-2.9.5-archive.tar.xz",
+            "sha256": "fd31bcf21b2244f217f9ffaa64cda9c066ed06d68b30925d520f2096a0400b2c",
+            "md5": "8d66bf76c611305a54e03a0a75ecdcda",
+            "size": "68004"
+        }
+    },
+    "visual_studio_integration": {
+        "name": "CUDA Visual Studio Integration",
+        "license": "CUDA Toolkit",
+        "version": "11.5.114",
+        "windows-x86_64": {
+            "relative_path": "visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-11.5.114-archive.zip",
+            "sha256": "fecbef30b4af477da75087f5bdd70dfc6ae4d821ac2bda3f0a50c058fe71813b",
+            "md5": "15a9e0f0ec782b7ba70b564e27e8c264",
+            "size": "387859"
+        }
+    }
+}
diff --git a/pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.6.2.json b/pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.6.2.json
new file mode 100644
index 00000000000..3de6bb9f6ef
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.6.2.json
@@ -0,0 +1,873 @@
+{
+    "release_date": "2022-03-24",
+    "cuda_cccl": {
+        "name": "CXX Core Compute Libraries",
+        "license": "CUDA Toolkit",
+        "version": "11.6.55",
+        "linux-x86_64": {
+            "relative_path": "cuda_cccl/linux-x86_64/cuda_cccl-linux-x86_64-11.6.55-archive.tar.xz",
+            "sha256": "14aee04c86a47321b9fee1c86c9a640be7729ed8063663ed0c7dafdd77fb18f5",
+            "md5": "e90bbf846f635ea84290fb518e62e838",
+            "size": "1002296"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cccl/linux-ppc64le/cuda_cccl-linux-ppc64le-11.6.55-archive.tar.xz",
+            "sha256": "cdaa96fc3afe7c552ce31d5b2328072edfbce6c85018455c9e90a572187e84eb",
+            "md5": "c2178d1d3557c0801c654ff8a9cd2261",
+            "size": "1002552"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cccl/linux-sbsa/cuda_cccl-linux-sbsa-11.6.55-archive.tar.xz",
+            "sha256": "6de184be2cee64b278befc0839d0b08104f19f6d15358e3bd8a92cefca552e20",
+            "md5": "78244bc649923a7bdf13ae43391d57a3",
+            "size": "1001980"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cccl/windows-x86_64/cuda_cccl-windows-x86_64-11.6.55-archive.zip",
+            "sha256": "badc95a0e47e9c2866ebf970dae757c827b91c27820fc75dc28a459c0014bb2f",
+            "md5": "b3a7384be4e8096125956cbb2d5b8406",
+            "size": "2559109"
+        }
+    },
+    "cuda_cudart": {
+        "name": "CUDA Runtime (cudart)",
+        "license": "CUDA Toolkit",
+        "version": "11.6.55",
+        "linux-x86_64": {
+            "relative_path": "cuda_cudart/linux-x86_64/cuda_cudart-linux-x86_64-11.6.55-archive.tar.xz",
+            "sha256": "734a77b3a26a9d08489d43afb74bad230c7c4a0ed2d17a6317a47cf363dca521",
+            "md5": "7bfd91b0267ce3cebf56bdba03bd99a9",
+            "size": "841896"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cudart/linux-ppc64le/cuda_cudart-linux-ppc64le-11.6.55-archive.tar.xz",
+            "sha256": "96b9b708bd9f636fe60ae811a09a6bbb0d66c72045eb82dff7f4bbf7b6714110",
+            "md5": "67b819cb88f54a3133bc44f35b94e5b8",
+            "size": "786292"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cudart/linux-sbsa/cuda_cudart-linux-sbsa-11.6.55-archive.tar.xz",
+            "sha256": "ae0ba7295280c4b2f2a217bc79cc604a3beb20484011dd2db604507f31fde0a7",
+            "md5": "3db43585c175429e7670592684500df3",
+            "size": "785420"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-11.6.55-archive.zip",
+            "sha256": "d73be9aa0d66b282e94c75032763249a753efb9d63de891ae9a1c4a62ed1aca1",
+            "md5": "35057ff81c5ff246c2198c18476c36ea",
+            "size": "2938345"
+        }
+    },
+    "cuda_cuobjdump": {
+        "name": "cuobjdump",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_cuobjdump/linux-x86_64/cuda_cuobjdump-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "625c7ce21089a52ae6b0a9a6b7d112b98f219cdcf451b94e6f7e523c437d5db1",
+            "md5": "973f41a831d158256b19b6768e4d0331",
+            "size": "112708"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cuobjdump/linux-ppc64le/cuda_cuobjdump-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "36c51224b98b7d040f41240cb12f6b43f61f334de3d6cc26d8ca3f35b50df68e",
+            "md5": "5f773be10cc49868534eccaf9bb98f86",
+            "size": "117668"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cuobjdump/linux-sbsa/cuda_cuobjdump-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "1ea90073f8769a8e5a16b4b18245c77fd217ff8d5d484f33475bebda046e5ff5",
+            "md5": "548c27670912ae14840d897ffb8b2ecb",
+            "size": "101720"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cuobjdump/windows-x86_64/cuda_cuobjdump-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "609599e7fc20e20cf53e2cf4f2618e467cb1bc00dcb9d09520cd2251bd3056a7",
+            "md5": "5def9ac8588bcb15eeed361f2bdd78db",
+            "size": "2539928"
+        }
+    },
+    "cuda_cupti": {
+        "name": "CUPTI",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_cupti/linux-x86_64/cuda_cupti-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "e56a68900e08dc1165cc8efabba1073087ebd5d8742cd16ef463cb3638b5d1a8",
+            "md5": "1c7d94a562519c1b92b8640606fc1ca4",
+            "size": "16027484"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cupti/linux-ppc64le/cuda_cupti-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "aac47225b052fd5c316816400a0e4470a8257e3894526e85c1155c81088314e5",
+            "md5": "cc15ff34145b7ad8d7b0a7fd9ef0ae28",
+            "size": "8532396"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cupti/linux-sbsa/cuda_cupti-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "8e45eac6e94938de807c44d2f846a0e8996a065b0817c2119948193fec279ca6",
+            "md5": "fc9530922d0adafcea054efcdaf7579e",
+            "size": "8370644"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cupti/windows-x86_64/cuda_cupti-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "ff7d4d4d7a83b2fe1bb3b964a44fdc29261470b239fc9c113e91e6b1bf1e9707",
+            "md5": "ac8391077028cc3eb3775d3eb4099865",
+            "size": "11384612"
+        }
+    },
+    "cuda_cuxxfilt": {
+        "name": "CUDA cuxxfilt (demangler)",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_cuxxfilt/linux-x86_64/cuda_cuxxfilt-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "3233b1dc13802701821a2cdebdcee5908ae03c63f457b8574ae1798c75245375",
+            "md5": "cbef12e45924009f5a6160fcc438fe42",
+            "size": "185732"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_cuxxfilt/linux-ppc64le/cuda_cuxxfilt-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "1f9d5f7093b6738452bc8311ce6fb13b9a59ede1c6f5476166237a3338002cc4",
+            "md5": "4dddd337619ee17921f1562a7d98b7d1",
+            "size": "182032"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_cuxxfilt/linux-sbsa/cuda_cuxxfilt-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "89aea00186991c56d4acc6e9ced0f3e8d9eeca991c8fc1fbc6db1ffc8be17f36",
+            "md5": "7f9874d247e48d29778e2750be23b1f1",
+            "size": "172524"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_cuxxfilt/windows-x86_64/cuda_cuxxfilt-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "b1e3ce998310240e60355e75aa3ad6b166fda5cae2c9e59573691f3f6b125ed8",
+            "md5": "2941018da652cbdb255c644532d00e50",
+            "size": "168845"
+        }
+    },
+    "cuda_demo_suite": {
+        "name": "CUDA Demo Suite",
+        "license": "CUDA Toolkit",
+        "version": "11.6.55",
+        "linux-x86_64": {
+            "relative_path": "cuda_demo_suite/linux-x86_64/cuda_demo_suite-linux-x86_64-11.6.55-archive.tar.xz",
+            "sha256": "82da6b7346257c94bf5ad25c93d5bf54eaf97a224b212bd166179a2e3d93f8a1",
+            "md5": "8330c6571b66865c587755e6c922c213",
+            "size": "3996208"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_demo_suite/windows-x86_64/cuda_demo_suite-windows-x86_64-11.6.55-archive.zip",
+            "sha256": "0c4c3be4f185fb9ddf2bb3f012ad506e7a23e39634f685ffe59fac01435b4eef",
+            "md5": "0e536ea97e3e685e9a73170ca1e693f1",
+            "size": "5021636"
+        }
+    },
+    "cuda_documentation": {
+        "name": "CUDA Documentation",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_documentation/linux-x86_64/cuda_documentation-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "75a2082caebc02b82ac899c354abd810f2bcd012476ace25fbe56ad78c5bd566",
+            "md5": "a7eade47d3e3821d7b1a67c9afc1f490",
+            "size": "66348"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_documentation/linux-ppc64le/cuda_documentation-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "a51b38d9925ec6564b26b922f3ef15b3781b9017c056beaa589d9e15384e9994",
+            "md5": "4d906f72e586f8ca216118730e9880be",
+            "size": "66572"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_documentation/linux-sbsa/cuda_documentation-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "78f6d84ea1cba3547c3f094873062d18d30a1a45cf0af8d89b3dd4c4b03f111e",
+            "md5": "0af218b799f48e8469fad088cd2c9017",
+            "size": "66404"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_documentation/windows-x86_64/cuda_documentation-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "a4e0d6fc04ead69db208912487303a996dea1f37eeb7b3caff664dca10cf42a8",
+            "md5": "f055cb3244441fb9785cb38354d22af8",
+            "size": "104626"
+        }
+    },
+    "cuda_gdb": {
+        "name": "CUDA GDB",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_gdb/linux-x86_64/cuda_gdb-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "95dd2cbf756a2fd3bcb8c9aa71b6ba4ee385430749b9c626849f7cc4ec6e8f29",
+            "md5": "ba6a284942d5c1d977fc08eb28bff3f9",
+            "size": "64257284"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_gdb/linux-ppc64le/cuda_gdb-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "4aaf9142728e8908db14b23af9e8bcdd77825a80e628ca8be9e0392c997ecf0a",
+            "md5": "30c6bac5a3c72d7f503c7cd98d644b3b",
+            "size": "64138892"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_gdb/linux-sbsa/cuda_gdb-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "5206bb2a6eb4978ddc7732689d3b94e6b1dd2d655ed6d95a514dd67404d727a4",
+            "md5": "647cc2598ee0a2d42993b31318c5fc25",
+            "size": "64040212"
+        }
+    },
+    "cuda_memcheck": {
+        "name": "CUDA Memcheck",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_memcheck/linux-x86_64/cuda_memcheck-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "5f0983c0945315d4a7beea92793aae4ffac72832870857345e9645edddc2f35b",
+            "md5": "8db021e48b154f9194f280728b41512e",
+            "size": "139868"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_memcheck/linux-ppc64le/cuda_memcheck-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "67cb7a5ef1b411864f0af3fc429e74570f8920c3883ee80e1b1989746ffa11cc",
+            "md5": "af50c409bb97fc1b724b1129bd823fda",
+            "size": "147996"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_memcheck/windows-x86_64/cuda_memcheck-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "58844652c2ddfe700348b08ef04c8385d8bbf36b89a421ecdcc774667ad04a0d",
+            "md5": "dcc37dfd92fe296f1563e6b519872725",
+            "size": "172867"
+        }
+    },
+    "cuda_nsight": {
+        "name": "Nsight Eclipse Edition Plugin",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_nsight/linux-x86_64/cuda_nsight-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "771511b1fedd8b0d684b1fa6c6ff8feacaa0e38010a3f0fba4a02087e0756cbf",
+            "md5": "51dd87c3625354ef7c7f73689d06c5d4",
+            "size": "118602976"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nsight/linux-ppc64le/cuda_nsight-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "07b28f88581db1ea1769a89d5fa23af298a385ff4feb14f8dbe801d9cb05a098",
+            "md5": "418edda7b00500c49cf0731f5ae75c2b",
+            "size": "118602980"
+        }
+    },
+    "cuda_nvcc": {
+        "name": "CUDA NVCC",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvcc/linux-x86_64/cuda_nvcc-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "8c81199c5a096869a10c284197cefc1a958df8bf482322a0a48dff9cc82291b8",
+            "md5": "c05aebe81d33e6850bceee7a36f8f2a5",
+            "size": "36764236"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvcc/linux-ppc64le/cuda_nvcc-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "d63f1cf84896e16e0a90c97bab56f77a88449233025299ee96a7997b9522fb0f",
+            "md5": "2dfc257209fcb7773b8f0664abf3d0af",
+            "size": "34593028"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvcc/linux-sbsa/cuda_nvcc-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "cdca0d230967ccf227063841ae984704a1812663bd0074e400eee57ba47d99a9",
+            "md5": "24cd10d3274df8ca62297a097b9edf92",
+            "size": "32366400"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "ab39ba1495ebe474fb74cea2b520bc4a3c80e6953ebf774c6cd4058c50be94e1",
+            "md5": "5f85971067866e0c8c8af33fb2e4c432",
+            "size": "46956615"
+        }
+    },
+    "cuda_nvdisasm": {
+        "name": "CUDA nvdisasm",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvdisasm/linux-x86_64/cuda_nvdisasm-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "1645505394a9d186741c7c2e07dea05fc1852bfa6a0663fdc53176ffaedff548",
+            "md5": "55d1a19ce1ad9de70ea6e620fff8c3d2",
+            "size": "32786504"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvdisasm/linux-ppc64le/cuda_nvdisasm-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "972744cd85dcb48fb0d313c7deabee246702e7d35443f96503a56ddee1904d00",
+            "md5": "9690d65addaa1a6c43800570e15d9645",
+            "size": "32788856"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvdisasm/linux-sbsa/cuda_nvdisasm-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "d4e5e3eef98659f3d1464576d3ec715469918def222cf7f84851ba06716fa8dd",
+            "md5": "b5430097ec81b02d7e5c1e6eabd3c801",
+            "size": "32715804"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvdisasm/windows-x86_64/cuda_nvdisasm-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "e318fc6ae9b33e6cc657c655a0c1eff5f56828abbea208728619c9bdfc59eb7d",
+            "md5": "ca2d64b77bcbf3c6aa9fa53b552ca63b",
+            "size": "32999132"
+        }
+    },
+    "cuda_nvml_dev": {
+        "name": "CUDA NVML Headers",
+        "license": "CUDA Toolkit",
+        "version": "11.6.55",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvml_dev/linux-x86_64/cuda_nvml_dev-linux-x86_64-11.6.55-archive.tar.xz",
+            "sha256": "12cbd1279ffe240396cba3c7d8e27fe9b4ee0e0db81850b29462544d83ca23c0",
+            "md5": "e91c008f71ee4eda2dc32c9a51e6b479",
+            "size": "74380"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvml_dev/linux-ppc64le/cuda_nvml_dev-linux-ppc64le-11.6.55-archive.tar.xz",
+            "sha256": "6134b127d84ec38c3d496d34214500e22bc455dd13677a957d6d1e2787a27950",
+            "md5": "56adc2658a5d9e7ac72be9769b0b4d96",
+            "size": "73936"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvml_dev/linux-sbsa/cuda_nvml_dev-linux-sbsa-11.6.55-archive.tar.xz",
+            "sha256": "72dbcd80bb8acf675c924fbafa9462122743e37aa51a147f3e07cf0d34044292",
+            "md5": "491a21dab70c5d4b3dc8145df7737b1b",
+            "size": "74440"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvml_dev/windows-x86_64/cuda_nvml_dev-windows-x86_64-11.6.55-archive.zip",
+            "sha256": "35dbf8f8f2974973a52b3363fa3936ce952ce94dc2aabca9aaf1f79039a633b9",
+            "md5": "4dec589b69ec53618f86d35418b0edb5",
+            "size": "103281"
+        }
+    },
+    "cuda_nvprof": {
+        "name": "CUDA nvprof",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvprof/linux-x86_64/cuda_nvprof-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "2c05600562bcbe4841cd0d86fdbf2fecba36c54ad393979cb22653dd45487a9b",
+            "md5": "e22c5dd6199769553ef43ce71e4dae0d",
+            "size": "1943508"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvprof/linux-ppc64le/cuda_nvprof-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "39d891bc85c431551d039a23d249f0c87b723a0d0683a5bf689f2fa4b3cdffd8",
+            "md5": "faf88332bafdfece1c5e63001271dc9e",
+            "size": "1598652"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvprof/linux-sbsa/cuda_nvprof-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "3e3275bd148fa1c3a73ef468c2a1e633fe736cb1b1c834a2693a177be9e3cbc9",
+            "md5": "abd2a3edafc9e1a069844559ca0b6352",
+            "size": "16148"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvprof/windows-x86_64/cuda_nvprof-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "4c965334058241f8d3cff2d1d8f37d8745796c0913e8fc440673dcc55c630808",
+            "md5": "85f85e5eb14b46756f67413e45237a8c",
+            "size": "1603422"
+        }
+    },
+    "cuda_nvprune": {
+        "name": "CUDA nvprune",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvprune/linux-x86_64/cuda_nvprune-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "0b1f79447efedef09c54d517eff994995b36d486f642379fd278ddbb4d29f5ea",
+            "md5": "644603927c6d326fb5fd4e6e3e23aa67",
+            "size": "55168"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvprune/linux-ppc64le/cuda_nvprune-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "5c6bd788e9575fc09f9e687b15123ad4bdde25008425c7f0108e319a952f5273",
+            "md5": "065bc537a28f5b8ccf546af677391e7a",
+            "size": "55876"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvprune/linux-sbsa/cuda_nvprune-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "6b9c0df46418b682497feeac9cf56edfc5679e06d60a94158732aac125aa560d",
+            "md5": "e547bc9e771de95ccac8f5945a7c6ed9",
+            "size": "47532"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvprune/windows-x86_64/cuda_nvprune-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "991f7574ef06eef1f63e94af188d48e360b7ffcebe6fe5b9e088d91b6579009e",
+            "md5": "cb3517ad769c0b0935a76fac1a976f91",
+            "size": "144822"
+        }
+    },
+    "cuda_nvrtc": {
+        "name": "CUDA NVRTC",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvrtc/linux-x86_64/cuda_nvrtc-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "9086e9f0ac56337d8e80d3cd1d78f79633f8725cdd0bb5a9864311a2ba95c1e0",
+            "md5": "01bf28fce5c9140190d9750e1585e7a8",
+            "size": "27889392"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvrtc/linux-ppc64le/cuda_nvrtc-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "68b89b68b820c87e32c830b95c7496f814854d213997701f6c0abe78827aa184",
+            "md5": "ab3a2658922c08ed944889f61d634224",
+            "size": "26054036"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvrtc/linux-sbsa/cuda_nvrtc-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "140d6587924f95fa6a9fbd7ad9a2d57b276ae71f1738b2b6bebfd0a8317b7e6d",
+            "md5": "b29a768f5bcbf995e8ee1e8bc6c6fd34",
+            "size": "25908284"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "ea5d8de24af80840bcf7d8f91ab1385366ca736485c52910fe269f845711b28f",
+            "md5": "dc650c5a417e7532633408809c10900a",
+            "size": "92877744"
+        }
+    },
+    "cuda_nvtx": {
+        "name": "CUDA NVTX",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvtx/linux-x86_64/cuda_nvtx-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "02a4fe16e715f6f9d3d6e25a5504c8a2cccab52da40ebbcf21919f002a0ac951",
+            "md5": "f9b29c3d4034abb5316220674ad3796c",
+            "size": "48124"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvtx/linux-ppc64le/cuda_nvtx-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "fc65a9caca20c892b4bd4f2b6e635e501582fe10474cb3d2ba6f7ed50b2860c1",
+            "md5": "52a5a1846fc0c83072712e969329af75",
+            "size": "48140"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_nvtx/linux-sbsa/cuda_nvtx-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "f0e7d4f1824ff125b23cb48d37d76034c9daff787cef08316188219269df8220",
+            "md5": "a67329ea6a2171272a9d1bd36933977f",
+            "size": "48708"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "9e82e18c38ed82aa5beb8aedf4a04770b59ad73113ac9e4e5c4e1e68dc999dad",
+            "md5": "853296d1ab5efa56a0290c1fc18ff82f",
+            "size": "65732"
+        }
+    },
+    "cuda_nvvp": {
+        "name": "CUDA NVVP",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_nvvp/linux-x86_64/cuda_nvvp-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "bc7ec46b93ce7f8c2399a4d8840e7ed7961a784ef462eaa94c66d81e9725286b",
+            "md5": "892580326407fc2b16abaa72d05f27e9",
+            "size": "114308284"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_nvvp/linux-ppc64le/cuda_nvvp-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "672e016a3127ec28d4ddf063bd91baab482c34dd073d839e45fc3c50c1466705",
+            "md5": "c6eb99303f62d4c3c6d240b8f00f2f0f",
+            "size": "113832776"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_nvvp/windows-x86_64/cuda_nvvp-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "374c183ddd5a127a0973fbf2e3dd0cb89d9968ca77bfeab8a3f44529fdc326a4",
+            "md5": "9f00a05cd166bd92a0ae5cc051540e55",
+            "size": "120342885"
+        }
+    },
+    "cuda_sanitizer_api": {
+        "name": "CUDA Compute Sanitizer API",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "linux-x86_64": {
+            "relative_path": "cuda_sanitizer_api/linux-x86_64/cuda_sanitizer_api-linux-x86_64-11.6.124-archive.tar.xz",
+            "sha256": "a6d81ec79be73fe23c7cd16054e9f0494e82dd14ee77ef07c4819af6248c5bfa",
+            "md5": "31816ee26b4fdd9c0c4f8e85cf723868",
+            "size": "7988992"
+        },
+        "linux-ppc64le": {
+            "relative_path": "cuda_sanitizer_api/linux-ppc64le/cuda_sanitizer_api-linux-ppc64le-11.6.124-archive.tar.xz",
+            "sha256": "3c39b6e7a23c19f91f5d25a2a2d752a15407eddc460c1c56a8e7ae7f8864ec4f",
+            "md5": "266196017ee59c3058c6c0ffc035ebe0",
+            "size": "7404564"
+        },
+        "linux-sbsa": {
+            "relative_path": "cuda_sanitizer_api/linux-sbsa/cuda_sanitizer_api-linux-sbsa-11.6.124-archive.tar.xz",
+            "sha256": "d7c55c5a600782d3aa10b5a3a898445a57997394ea626e2e4789f7923a927334",
+            "md5": "4f3a68e4fa789ba3dcbb7e12bd77abf7",
+            "size": "6123224"
+        },
+        "windows-x86_64": {
+            "relative_path": "cuda_sanitizer_api/windows-x86_64/cuda_sanitizer_api-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "24d24151b77b1051be2035176475f33d2b260c8a20a3fe1af99ca312490721a8",
+            "md5": "dc713ceb5f52e2936df2146693e2bdde",
+            "size": "13126684"
+        }
+    },
+    "fabricmanager": {
+        "name": "NVIDIA Fabric Manager",
+        "license": "NVIDIA Driver",
+        "version": "510.47.03",
+        "linux-x86_64": {
+            "relative_path": "fabricmanager/linux-x86_64/fabricmanager-linux-x86_64-510.47.03-archive.tar.xz",
+            "sha256": "d5c7204160f7b2c688932f90648995bd3bf3a821d99161cefb7e7a9539e22a6f",
+            "md5": "43dc2904ab88fba0739c8265466f0972",
+            "size": "1528776"
+        }
+    },
+    "libcublas": {
+        "name": "CUDA cuBLAS",
+        "license": "CUDA Toolkit",
+        "version": "11.9.2.110",
+        "linux-x86_64": {
+            "relative_path": "libcublas/linux-x86_64/libcublas-linux-x86_64-11.9.2.110-archive.tar.xz",
+            "sha256": "ea2395ea76a811498863774491721d5c4b491fd1498221ef7cb1ae514e6518cb",
+            "md5": "e46be77087fc85134fb7c85a158f6964",
+            "size": "434133064"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcublas/linux-ppc64le/libcublas-linux-ppc64le-11.9.2.110-archive.tar.xz",
+            "sha256": "81c729d78ef775958a0aadf2a02ee7f56d826e9b4130d564b9ea92aed6f2998d",
+            "md5": "658162cbc2982de03d0703400ee8a2b8",
+            "size": "434108428"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcublas/linux-sbsa/libcublas-linux-sbsa-11.9.2.110-archive.tar.xz",
+            "sha256": "8201009b6df0924d599731bcf309190b8e8e3c1eebff0226f12107ca3f5f86dd",
+            "md5": "56278d0d28664be11c1e53074cf13432",
+            "size": "434332668"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcublas/windows-x86_64/libcublas-windows-x86_64-11.9.2.110-archive.zip",
+            "sha256": "13f5119c43128ccda66ab092bad4435313cf06cb892247e38cb2ec1d8bc96c90",
+            "md5": "52b685ec11fd3384e49e84243627a0aa",
+            "size": "324277131"
+        }
+    },
+    "libcufft": {
+        "name": "CUDA cuFFT",
+        "license": "CUDA Toolkit",
+        "version": "10.7.2.124",
+        "linux-x86_64": {
+            "relative_path": "libcufft/linux-x86_64/libcufft-linux-x86_64-10.7.2.124-archive.tar.xz",
+            "sha256": "95397578c2d18d5df17dafa42cf34d47821953c6d5c9bdba45c7b673ba07276a",
+            "md5": "e4b681b1a42bfbbfae92995a244d0f23",
+            "size": "214961728"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcufft/linux-ppc64le/libcufft-linux-ppc64le-10.7.2.124-archive.tar.xz",
+            "sha256": "db425ae3fccbb68a28f0f461a6a022856081d16d06da3a99e903975a89a5d4b1",
+            "md5": "e0ffc2b9175cefb33b3df4fc6623d882",
+            "size": "214897136"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcufft/linux-sbsa/libcufft-linux-sbsa-10.7.2.124-archive.tar.xz",
+            "sha256": "b132fc468d46a90baac45f8f0484675cc4552120d5912c9c7612d7346c7db9bf",
+            "md5": "639a4f80a557168fc7ae222fec491e50",
+            "size": "214000212"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcufft/windows-x86_64/libcufft-windows-x86_64-10.7.2.124-archive.zip",
+            "sha256": "d7a613f9bb647695947cdd0514abed09fb82c0934461cedab629f6471f4adaf7",
+            "md5": "83aeb1b3eaa9246b2f06f37d94e9f07f",
+            "size": "287132168"
+        }
+    },
+    "libcufile": {
+        "name": "CUDA cuFile",
+        "license": "CUDA Toolkit",
+        "version": "1.2.1.4",
+        "linux-x86_64": {
+            "relative_path": "libcufile/linux-x86_64/libcufile-linux-x86_64-1.2.1.4-archive.tar.xz",
+            "sha256": "ebc164ebffee7dbe87ae8cc3e37fcf6499750aa9f7003ea0cc4f3bc7c7f3a56d",
+            "md5": "ae8cd1900e9947cdb8acdd9726befe29",
+            "size": "46744444"
+        }
+    },
+    "libcurand": {
+        "name": "CUDA cuRAND",
+        "license": "CUDA Toolkit",
+        "version": "10.2.9.124",
+        "linux-x86_64": {
+            "relative_path": "libcurand/linux-x86_64/libcurand-linux-x86_64-10.2.9.124-archive.tar.xz",
+            "sha256": "87b1d70ec749db31cabb79ae5034b05883666e1848aa3feca643ea4a68dea47e",
+            "md5": "e7657f67965d162b519c2471ca0f7c08",
+            "size": "82095344"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcurand/linux-ppc64le/libcurand-linux-ppc64le-10.2.9.124-archive.tar.xz",
+            "sha256": "162a42c9e98fd3809541a04dc67933b43f2a85d8d9a749ca247d2be049b7c4d8",
+            "md5": "ba67c380f521a245192fb589cc208edd",
+            "size": "82140836"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcurand/linux-sbsa/libcurand-linux-sbsa-10.2.9.124-archive.tar.xz",
+            "sha256": "c084db363510f6a2f628401494372edc1a841b0fabf95d80e86b852b27a299f5",
+            "md5": "5021f94b32de1099a52bbfd02d08be17",
+            "size": "82081332"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcurand/windows-x86_64/libcurand-windows-x86_64-10.2.9.124-archive.zip",
+            "sha256": "6bbb3c33f76813a96b1cec51d723d0d53704f3b7fedaf6c29f4c84f1bcb73a4e",
+            "md5": "4914ba32fc23a9076f51f8755909c258",
+            "size": "53645700"
+        }
+    },
+    "libcusolver": {
+        "name": "CUDA cuSOLVER",
+        "license": "CUDA Toolkit",
+        "version": "11.3.4.124",
+        "linux-x86_64": {
+            "relative_path": "libcusolver/linux-x86_64/libcusolver-linux-x86_64-11.3.4.124-archive.tar.xz",
+            "sha256": "adbd0af1f84aea29859c217e028c1a74a5b3a90acce7d679790efd73aff28462",
+            "md5": "1f7211cc6ae6e8afd1387469a5e9a9a9",
+            "size": "77918104"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcusolver/linux-ppc64le/libcusolver-linux-ppc64le-11.3.4.124-archive.tar.xz",
+            "sha256": "6b9ab64258e970f6966c133dab767db03dac038cf047641fb677ce9334e53262",
+            "md5": "f8b2f8280e8863de318212199fe72494",
+            "size": "78066772"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcusolver/linux-sbsa/libcusolver-linux-sbsa-11.3.4.124-archive.tar.xz",
+            "sha256": "bb0dcef4d8c4e076a724d1a0a7258bffb6e9a9c49357716ed70466b3403eb4e3",
+            "md5": "8fced4d6324195575d28464026d26125",
+            "size": "77371768"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcusolver/windows-x86_64/libcusolver-windows-x86_64-11.3.4.124-archive.zip",
+            "sha256": "80d602eef188a19779b0beabb6f3fd9f8eb52ce8c8c61d31a792351d85053996",
+            "md5": "123c3e9a0e0933e4c414a28fd382ea7d",
+            "size": "110462365"
+        }
+    },
+    "libcusparse": {
+        "name": "CUDA cuSPARSE",
+        "license": "CUDA Toolkit",
+        "version": "11.7.2.124",
+        "linux-x86_64": {
+            "relative_path": "libcusparse/linux-x86_64/libcusparse-linux-x86_64-11.7.2.124-archive.tar.xz",
+            "sha256": "744affcbe5ecc8ca9438f20cf93e43a1648d682f6badfa4494f76ae26a350edc",
+            "md5": "b663b089be7b8dba687da98ed9fcf1dd",
+            "size": "218747728"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libcusparse/linux-ppc64le/libcusparse-linux-ppc64le-11.7.2.124-archive.tar.xz",
+            "sha256": "97a3abd633cb0c7ce941fdb4f98e82ddd064605c2a864ad4c35eabcca1bfe7c4",
+            "md5": "6468ea649e2cd9be3541abc0b5a9d7a9",
+            "size": "218901148"
+        },
+        "linux-sbsa": {
+            "relative_path": "libcusparse/linux-sbsa/libcusparse-linux-sbsa-11.7.2.124-archive.tar.xz",
+            "sha256": "4962d79be52338c911fb5612bb2f7562aa41bda0ec474fc096524bf9dd762922",
+            "md5": "1c49c2c1b950b4c874f4254490da1b82",
+            "size": "218441052"
+        },
+        "windows-x86_64": {
+            "relative_path": "libcusparse/windows-x86_64/libcusparse-windows-x86_64-11.7.2.124-archive.zip",
+            "sha256": "4c33673bb1de12005b26fbf5139b6b9e25fbf4490839205036e060af27c1f789",
+            "md5": "f32317cca576ab805ec381be38ef225c",
+            "size": "180394097"
+        }
+    },
+    "libnpp": {
+        "name": "CUDA NPP",
+        "license": "CUDA Toolkit",
+        "version": "11.6.3.124",
+        "linux-x86_64": {
+            "relative_path": "libnpp/linux-x86_64/libnpp-linux-x86_64-11.6.3.124-archive.tar.xz",
+            "sha256": "be4afe097cc38eea91ef02aea233db9fa3ba7a31bc115fc287e10812441ee5c2",
+            "md5": "8300ad8d28a906c386f5338187aee660",
+            "size": "165187052"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libnpp/linux-ppc64le/libnpp-linux-ppc64le-11.6.3.124-archive.tar.xz",
+            "sha256": "b55dc9d7e32319a007374cbb191dba1bce1973857a0ae0cc684a4c87e39ac23a",
+            "md5": "86e2f863047db392473fb438a9112206",
+            "size": "165756596"
+        },
+        "linux-sbsa": {
+            "relative_path": "libnpp/linux-sbsa/libnpp-linux-sbsa-11.6.3.124-archive.tar.xz",
+            "sha256": "dd3fbe515b0bca6393de5829fb675f8fae9bfa23f0cd5e94a87643088935aa32",
+            "md5": "e62dd0d88f234764c097f8a112f61d35",
+            "size": "164248860"
+        },
+        "windows-x86_64": {
+            "relative_path": "libnpp/windows-x86_64/libnpp-windows-x86_64-11.6.3.124-archive.zip",
+            "sha256": "647e78458636d462698fbdbd26c99d4956c917a25a7fd6d2e516a7035a52c857",
+            "md5": "bf43f99df8934740762e5dd6e1419198",
+            "size": "125797073"
+        }
+    },
+    "libnvidia_nscq": {
+        "name": "NVIDIA NSCQ API",
+        "license": "NVIDIA Driver",
+        "version": "510.47.03",
+        "linux-x86_64": {
+            "relative_path": "libnvidia_nscq/linux-x86_64/libnvidia_nscq-linux-x86_64-510.47.03-archive.tar.xz",
+            "sha256": "187b07fc6dae26f43bd23276acaf8177f15b32831cde4d21df6abfd6915d30c4",
+            "md5": "d13ca7a0403dd22e9441434b617a2d5f",
+            "size": "316976"
+        }
+    },
+    "libnvjpeg": {
+        "name": "CUDA nvJPEG",
+        "license": "CUDA Toolkit",
+        "version": "11.6.2.124",
+        "linux-x86_64": {
+            "relative_path": "libnvjpeg/linux-x86_64/libnvjpeg-linux-x86_64-11.6.2.124-archive.tar.xz",
+            "sha256": "ed9f4be96412134195aecbe15b281f3ac8e9b954e0fc62df9279169cf0e0f50b",
+            "md5": "dffc64101ced535bf63604421c4afaa8",
+            "size": "2045660"
+        },
+        "linux-ppc64le": {
+            "relative_path": "libnvjpeg/linux-ppc64le/libnvjpeg-linux-ppc64le-11.6.2.124-archive.tar.xz",
+            "sha256": "377f5acfc5c25a983b0c3043b6fb9da7077d4d571481b62b091e162d8d8fe3c5",
+            "md5": "04f6a60f6c53ce31671e2eeda8f0638e",
+            "size": "2077792"
+        },
+        "linux-sbsa": {
+            "relative_path": "libnvjpeg/linux-sbsa/libnvjpeg-linux-sbsa-11.6.2.124-archive.tar.xz",
+            "sha256": "badbe50dab52403cd152c907c9be7271a25c7e0b2bf7377a1cee13bd63f6c008",
+            "md5": "7c7fa8c7ca5d129b2f7d775cb4ac96a1",
+            "size": "1864404"
+        },
+        "windows-x86_64": {
+            "relative_path": "libnvjpeg/windows-x86_64/libnvjpeg-windows-x86_64-11.6.2.124-archive.zip",
+            "sha256": "9a04433b80bb5374c0dcf21e1988a66d6d61009dd431668e5ef412baf1167796",
+            "md5": "99d01192cc9c040b7d2a54ae2b7ea2a3",
+            "size": "2050577"
+        }
+    },
+    "nsight_compute": {
+        "name": "Nsight Compute",
+        "license": "NVIDIA SLA",
+        "version": "2022.1.1.2",
+        "linux-x86_64": {
+            "relative_path": "nsight_compute/linux-x86_64/nsight_compute-linux-x86_64-2022.1.1.2-archive.tar.xz",
+            "sha256": "ce3248dc64ec05ad1eb174c7114dda02e3023a4ee9adfe457b662289e3134140",
+            "md5": "c1d851ebf7528107555861b4fbc83948",
+            "size": "410930844"
+        },
+        "linux-ppc64le": {
+            "relative_path": "nsight_compute/linux-ppc64le/nsight_compute-linux-ppc64le-2022.1.1.2-archive.tar.xz",
+            "sha256": "84c9fdad8865c2c3f505ee781f95b546a8ce5ef712cb43fc856c0c62be9bab24",
+            "md5": "4e0660c401e2861bd3a5fa81a44c6fbf",
+            "size": "123752204"
+        },
+        "linux-sbsa": {
+            "relative_path": "nsight_compute/linux-sbsa/nsight_compute-linux-sbsa-2022.1.1.2-archive.tar.xz",
+            "sha256": "5016436938039b284d422a27a954e7483cc15a5d33c512525c2ded860c062747",
+            "md5": "241420674893c0dd375847ece4fa4abc",
+            "size": "121981328"
+        },
+        "windows-x86_64": {
+            "relative_path": "nsight_compute/windows-x86_64/nsight_compute-windows-x86_64-2022.1.1.2-archive.zip",
+            "sha256": "4f709728da79048cc50c6079a5f5dd3b7e35c363163484e7f89f8a2595b8d633",
+            "md5": "27cdc4affc4d3227905901ae5895e0b4",
+            "size": "348353793"
+        }
+    },
+    "nsight_nvtx": {
+        "name": "Nsight NVTX",
+        "license": "CUDA Toolkit",
+        "version": "1.21018621",
+        "windows-x86_64": {
+            "relative_path": "nsight_nvtx/windows-x86_64/nsight_nvtx-windows-x86_64-1.21018621-archive.zip",
+            "sha256": "d99b015bfb1308206f9d7c16ea401bf426fed3a5a99953b855fe4e68be5ed2d1",
+            "md5": "34ee04d45cfca1c4e3cbfba0ec8f6f80",
+            "size": "315692"
+        }
+    },
+    "nsight_systems": {
+        "name": "Nsight Systems",
+        "license": "NVIDIA SLA",
+        "version": "2021.5.2.53",
+        "linux-x86_64": {
+            "relative_path": "nsight_systems/linux-x86_64/nsight_systems-linux-x86_64-2021.5.2.53-archive.tar.xz",
+            "sha256": "27b8c6a171efc5b815035f7e9c9229bdc2c239c1da1956df687f80f78c03c70c",
+            "md5": "20dcf79c9b387fcc66956182d56fa7ef",
+            "size": "161956304"
+        },
+        "linux-ppc64le": {
+            "relative_path": "nsight_systems/linux-ppc64le/nsight_systems-linux-ppc64le-2021.5.2.53-archive.tar.xz",
+            "sha256": "7c76f0b6e35add162be0a55cb8b673960e2d6e9907875379fd70345c6fbb05d4",
+            "md5": "5bc90d4adc83492fc65191c9a1e33d41",
+            "size": "47184992"
+        },
+        "linux-sbsa": {
+            "relative_path": "nsight_systems/linux-sbsa/nsight_systems-linux-sbsa-2021.5.2.53-archive.tar.xz",
+            "sha256": "22bd8ec797d2734b701e5bf62ec095d82687a3eb5daf01a7657cd1aab896fc6d",
+            "md5": "1a4e2b8212f8cef37d16c23c9440f680",
+            "size": "47348636"
+        },
+        "windows-x86_64": {
+            "relative_path": "nsight_systems/windows-x86_64/nsight_systems-windows-x86_64-2021.5.2.53-archive.zip",
+            "sha256": "6cd2caa431d703f1c54eb65cba2508c150ae115c0b20a58f6c96839bcbc23406",
+            "md5": "07582800aee2a476463f866aa25f8a0a",
+            "size": "304567470"
+        }
+    },
+    "nsight_vse": {
+        "name": "Nsight Visual Studio Edition (VSE)",
+        "license": "NVIDIA SLA",
+        "version": "2022.1.1.22006",
+        "windows-x86_64": {
+            "relative_path": "nsight_vse/windows-x86_64/nsight_vse-windows-x86_64-2022.1.1.22006-archive.zip",
+            "sha256": "92c0a591401e085a2ade6688866fa93fb1562d98e4d8321a252b1143e364192a",
+            "md5": "67304f264ab92d5ac6706fb0bf3f6eac",
+            "size": "455973381"
+        }
+    },
+    "nvidia_driver": {
+        "name": "NVIDIA Linux Driver",
+        "license": "NVIDIA Driver",
+        "version": "510.47.03",
+        "linux-x86_64": {
+            "relative_path": "nvidia_driver/linux-x86_64/nvidia_driver-linux-x86_64-510.47.03-archive.tar.xz",
+            "sha256": "668a653cb4e9b89279a31c2fac23306c80b8f2b4b27b4e066cfe322d9347e1b7",
+            "md5": "b9a80476a86e6186645c37b7a9a7791a",
+            "size": "327247384"
+        },
+        "linux-ppc64le": {
+            "relative_path": "nvidia_driver/linux-ppc64le/nvidia_driver-linux-ppc64le-510.47.03-archive.tar.xz",
+            "sha256": "28c278660d10ba63420990e164aafd866a9907a66323db9570ad1a9ada37ae0f",
+            "md5": "0a3f82d50ea4ac361eb2def1d763947f",
+            "size": "73666716"
+        },
+        "linux-sbsa": {
+            "relative_path": "nvidia_driver/linux-sbsa/nvidia_driver-linux-sbsa-510.47.03-archive.tar.xz",
+            "sha256": "1f2e0b90621f67477d5bfcd8ff28b01eca9cdb79a2ba911b07671953e44618ad",
+            "md5": "d555c62d414121623b4906ecb3de06e8",
+            "size": "211721052"
+        }
+    },
+    "nvidia_fs": {
+        "name": "NVIDIA filesystem",
+        "license": "CUDA Toolkit",
+        "version": "2.11.0",
+        "linux-x86_64": {
+            "relative_path": "nvidia_fs/linux-x86_64/nvidia_fs-linux-x86_64-2.11.0-archive.tar.xz",
+            "sha256": "ea260e5e8c9df3d4f1448684350a0fa7931dd45918329bda96378b173ea63b24",
+            "md5": "676b88c768132bd4775c91291af90b55",
+            "size": "69588"
+        }
+    },
+    "visual_studio_integration": {
+        "name": "CUDA Visual Studio Integration",
+        "license": "CUDA Toolkit",
+        "version": "11.6.124",
+        "windows-x86_64": {
+            "relative_path": "visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-11.6.124-archive.zip",
+            "sha256": "0a8e288bb604dc2af766f65042aeb4675a7b15629e71c7c3341d0fd8aab2de91",
+            "md5": "248f627cccca3ee81c561aaea5193271",
+            "size": "517139"
+        }
+    }
+}
diff --git a/pkgs/development/compilers/cudatoolkit/redist/overrides.nix b/pkgs/development/compilers/cudatoolkit/redist/overrides.nix
new file mode 100644
index 00000000000..588f2f2a086
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/redist/overrides.nix
@@ -0,0 +1,72 @@
+final: prev: let
+  inherit (prev) lib pkgs;
+in (lib.filterAttrs (attr: _: (prev ? "${attr}")) {
+  ### Overrides to fix the components of cudatoolkit-redist
+
+  # Attributes that don't exist in the previous set are removed.
+  # That means only overrides can go here, and not new expressions!
+
+  libcufile = prev.libcufile.overrideAttrs (oldAttrs: {
+    buildInputs = oldAttrs.buildInputs ++ [
+      prev.libcublas
+      pkgs.numactl
+      pkgs.rdma-core
+    ];
+    # libcuda needs to be resolved during runtime
+    autoPatchelfIgnoreMissingDeps = true;
+  });
+
+  libcusolver = final.addBuildInputs prev.libcusolver [
+    prev.libcublas
+  ];
+
+  cuda_nvprof = prev.cuda_nvprof.overrideAttrs (oldAttrs: {
+    nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ pkgs.addOpenGLRunpath ];
+    buildInputs = oldAttrs.buildInputs ++ [ prev.cuda_cupti ];
+    # libcuda needs to be resolved during runtime
+    autoPatchelfIgnoreMissingDeps = true;
+  });
+
+  cuda_demo_suite = final.addBuildInputs prev.cuda_demo_suite [
+    pkgs.freeglut
+    pkgs.libGLU
+    pkgs.libglvnd
+    pkgs.mesa
+    prev.libcufft
+    prev.libcurand
+  ];
+
+  nsight_compute = prev.nsight_compute.overrideAttrs (oldAttrs: {
+    nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ pkgs.qt5.wrapQtAppsHook ];
+    buildInputs = oldAttrs.buildInputs ++ [ pkgs.libsForQt5.qt5.qtwebview ];
+  });
+
+  nsight_systems = prev.nsight_systems.overrideAttrs (oldAttrs: {
+    nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [
+      pkgs.addOpenGLRunpath
+      pkgs.qt5.wrapQtAppsHook
+    ];
+    buildInputs = oldAttrs.buildInputs ++ [
+      pkgs.alsa-lib
+      pkgs.e2fsprogs
+      pkgs.nss
+      pkgs.numactl
+      pkgs.pulseaudio
+      pkgs.wayland
+      pkgs.xorg.libXcursor
+      pkgs.xorg.libXdamage
+      pkgs.xorg.libXrandr
+      pkgs.xorg.libXtst
+    ];
+    # libcuda needs to be resolved during runtime
+    autoPatchelfIgnoreMissingDeps = true;
+  });
+
+  nvidia_driver = prev.nvidia_driver.overrideAttrs (oldAttrs: {
+    # libcuda needs to be resolved during runtime
+    autoPatchelfIgnoreMissingDeps = true;
+    # No need to support this package as we have drivers already
+    # in linuxPackages.
+    meta.broken = true;
+  });
+})
diff --git a/pkgs/development/compilers/cudatoolkit/versions.toml b/pkgs/development/compilers/cudatoolkit/versions.toml
new file mode 100644
index 00000000000..aba6281af09
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/versions.toml
@@ -0,0 +1,59 @@
+["10.0"]
+version = "10.0.130"
+url = "https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux"
+sha256 = "16p3bv1lwmyqpxil8r951h385sy9asc578afrc7lssa68c71ydcj"
+gcc = "gcc7"
+
+["10.1"]
+version = "10.1.243"
+url = "https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run"
+sha256 = "0caxhlv2bdq863dfp6wj7nad66ml81vasq2ayf11psvq2b12vhp7"
+gcc = "gcc7"
+
+["10.2"]
+version = "10.2.89"
+url = "http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run"
+sha256 = "04fasl9sjkb1jvchvqgaqxprnprcz7a8r52249zp2ijarzyhf3an"
+gcc = "gcc7"
+
+["11.0"]
+version = "11.0.3"
+url = "https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run"
+sha256 = "1h4c69nfrgm09jzv8xjnjcvpq8n4gnlii17v3wzqry5d13jc8ydh"
+gcc = "gcc9"
+
+["11.1"]
+version = "11.1.1"
+url = "https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run"
+sha256 = "13yxv2fgvdnqqbwh1zb80x4xhyfkbajfkwyfpdg9493010kngbiy"
+gcc = "gcc9"
+
+["11.2"]
+version = "11.2.1"
+url = "https://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda_11.2.1_460.32.03_linux.run"
+sha256 = "sha256-HamMuJfMX1inRFpKZspPaSaGdwbLOvWKZpzc2Nw9F8g="
+gcc = "gcc9"
+
+["11.3"]
+version = "11.3.1"
+url = "https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run"
+sha256 = "0d19pwcqin76scbw1s5kgj8n0z1p4v1hyfldqmamilyfxycfm4xd"
+gcc = "gcc9"
+
+["11.4"]
+version = "11.4.2"
+url = "https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda_11.4.2_470.57.02_linux.run"
+sha256 = "sha256-u9h8oOkT+DdFSnljZ0c1E83e9VUILk2G7Zo4ZZzIHwo="
+gcc = "gcc10" # can bump to 11 along with stdenv.cc
+
+["11.5"]
+version = "11.5.0"
+url = "https://developer.download.nvidia.com/compute/cuda/11.5.0/local_installers/cuda_11.5.0_495.29.05_linux.run"
+sha256 = "sha256-rgoWk9lJfPPYHmlIlD43lGNpANtxyY1Y7v2sr38aHkw="
+gcc = "gcc10" # can bump to 11 along with stdenv.cc
+
+["11.6"]
+version = "11.6.1"
+url = "https://developer.download.nvidia.com/compute/cuda/11.6.1/local_installers/cuda_11.6.1_510.47.03_linux.run"
+sha256 = "sha256-qyGa/OALdCABEyaYZvv/derQN7z8I1UagzjCaEyYTX4="
+gcc = "gcc10" # can bump to 11 along with stdenv.cc
diff --git a/pkgs/development/libraries/librealsense/default.nix b/pkgs/development/libraries/librealsense/default.nix
index 0011dc2f6e1..5b1673ae372 100644
--- a/pkgs/development/libraries/librealsense/default.nix
+++ b/pkgs/development/libraries/librealsense/default.nix
@@ -8,11 +8,11 @@
 , ninja
 , pkg-config
 , gcc
-, cudaSupport ? config.cudaSupport or false, cudatoolkit
+, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}
 , enablePython ? false, pythonPackages ? null
 }:
 
-assert cudaSupport -> cudatoolkit != null;
+assert cudaSupport -> (cudaPackages?cudatoolkit && cudaPackages.cudatoolkit != null);
 assert enablePython -> pythonPackages != null;
 
 stdenv.mkDerivation rec {
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   buildInputs = [
     libusb1
     gcc.cc.lib
-  ] ++ lib.optional cudaSupport cudatoolkit
+  ] ++ lib.optional cudaSupport cudaPackages.cudatoolkit
     ++ lib.optionals enablePython (with pythonPackages; [python pybind11 ]);
 
   patches = [
diff --git a/pkgs/development/libraries/science/math/caffe2/default.nix b/pkgs/development/libraries/science/math/caffe2/default.nix
index 202903b9aa1..9333d5cdfe8 100644
--- a/pkgs/development/libraries/science/math/caffe2/default.nix
+++ b/pkgs/development/libraries/science/math/caffe2/default.nix
@@ -5,8 +5,8 @@
 , python, future, six, python-protobuf, numpy, pydot
 , eigen
 , doxygen
-, useCuda ? (config.cudaSupport or false), cudatoolkit ? null
-, useCudnn ? (config.cudnnSupport or false), cudnn ? null
+, useCuda ? (config.cudaSupport or false), cudaPackages ? {}
+, useCudnn ? (config.cudnnSupport or false)
 , useOpenmp ? false, openmp ? null
 , useOpencv3 ? true, opencv3 ? null
 , useLeveldb ? false, leveldb ? null
@@ -20,6 +20,10 @@
 #, useNnpack ? false
 }:
 
+let
+   inherit (cudaPackages) cudatoolkit cudnn;
+in
+
 assert useCuda -> cudatoolkit != null;
 assert useCudnn -> (useCuda && cudnn != null);
 assert useOpencv3 -> opencv3 != null;
diff --git a/pkgs/development/libraries/science/math/cudnn/default.nix b/pkgs/development/libraries/science/math/cudnn/default.nix
deleted file mode 100644
index a3f785c5b38..00000000000
--- a/pkgs/development/libraries/science/math/cudnn/default.nix
+++ /dev/null
@@ -1,114 +0,0 @@
-# The following version combinations are supported:
-#  * cuDNN 7.4.2, cudatoolkit 10.0
-#  * cuDNN 7.6.5, cudatoolkit 10.0-10.1
-#  * cuDNN 8.1.1, cudatoolkit 10.2-11.2
-#  * cuDNN 8.3.2, cudatoolkit 10.2-11.5
-{ callPackage
-, cudatoolkit_10
-, cudatoolkit_10_0
-, cudatoolkit_10_1
-, cudatoolkit_10_2
-, cudatoolkit_11
-, cudatoolkit_11_0
-, cudatoolkit_11_1
-, cudatoolkit_11_2
-, cudatoolkit_11_3
-, cudatoolkit_11_4
-, cudatoolkit_11_5
-, fetchurl
-, lib
-}:
-
-let
-  generic = args: callPackage (import ./generic.nix (removeAttrs args [ "cudatoolkit" ])) {
-    inherit (args) cudatoolkit;
-  };
-  urlPrefix = "https://developer.download.nvidia.com/compute/redist/cudnn";
-in
-rec {
-  # cuDNN 7.x
-  # Still used by libtensorflow-bin. It should be upgraded at some point.
-  cudnn_7_4_cudatoolkit_10_0 = generic rec {
-    version = "7.4.2";
-    cudatoolkit = cudatoolkit_10_0;
-    # See https://docs.nvidia.com/deeplearning/cudnn/archives/cudnn_742/cudnn-support-matrix/index.html#cudnn-cuda-hardware-versions__table-cudnn-cuda-hardware-versions.
-    minCudaVersion = "9.2.88";
-    maxCudaVersion = "10.0.99999";
-    mkSrc = _: fetchurl {
-      url = "${urlPrefix}/v${version}/cudnn-10.0-linux-x64-v7.4.2.24.tgz";
-      hash = "sha256-Lt/IagK1DRfojEeJVaMy5qHoF05+U6NFi06lH68C2qM=";
-    };
-  };
-  # The only overlap between supported and packaged CUDA versions is 10.0.
-
-  cudnn_7_6_cudatoolkit_10_0 = generic rec {
-    version = "7.6.5";
-    cudatoolkit = cudatoolkit_10_0;
-    # See https://docs.nvidia.com/deeplearning/cudnn/archives/cudnn_765/cudnn-support-matrix/index.html#cudnn-versions-763-765.
-    minCudaVersion = "9.2.148";
-    maxCudaVersion = "10.1.243";
-    mkSrc = cudatoolkit: fetchurl {
-      url = "${urlPrefix}/v${version}/cudnn-${cudatoolkit.majorVersion}-linux-x64-v7.6.5.32.tgz";
-      hash = {
-        "10.0" = "sha256-KDVeOV8LK5OsLIO2E2CzW6bNA3fkTni+GXtrYbS0kro=";
-        "10.1" = "sha256-fq7IA5osMKsLx1jTA1iHZ2k972v0myJIWiwAvy4TbLM=";
-      }."${cudatoolkit.majorVersion}";
-    };
-  };
-  cudnn_7_6_cudatoolkit_10_1 = cudnn_7_6_cudatoolkit_10_0.override { cudatoolkit = cudatoolkit_10_1; };
-
-  # cuDNN 8.x
-  # cuDNN 8.1 is still used by tensorflow at the time of writing (2022-02-17).
-  # See https://github.com/NixOS/nixpkgs/pull/158218 for more info.
-  cudnn_8_1_cudatoolkit_10_2 = generic rec {
-    version = "8.1.1";
-    cudatoolkit = cudatoolkit_10_2;
-    # See https://docs.nvidia.com/deeplearning/cudnn/archives/cudnn-811/support-matrix/index.html#cudnn-versions-810-811.
-    minCudaVersion = "10.2.00000";
-    maxCudaVersion = "11.2.99999";
-    mkSrc = cudatoolkit:
-      let v = if lib.versions.majorMinor cudatoolkit.version == "10.2" then "10.2" else "11.2"; in
-      fetchurl {
-        url = "${urlPrefix}/v${version}/cudnn-${v}-linux-x64-v8.1.1.33.tgz";
-        hash = {
-          "10.2" = "sha256-Kkp7mabpv6aQ6xm7QeSVU/KnpJGls6v8rpAOFmxbbr0=";
-          "11.2" = "sha256-mKh4TpKGLyABjSDCgbMNSgzZUfk2lPZDPM9K6cUCumo=";
-        }."${v}";
-      };
-  };
-  cudnn_8_1_cudatoolkit_11_0 = cudnn_8_1_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_0; };
-  cudnn_8_1_cudatoolkit_11_1 = cudnn_8_1_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_1; };
-  cudnn_8_1_cudatoolkit_11_2 = cudnn_8_1_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_2; };
-
-  cudnn_8_1_cudatoolkit_10 = cudnn_8_1_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_10; };
-
-  # cuDNN 8.3 is necessary for the latest jaxlib, esp. jaxlib-bin. See
-  # https://github.com/google/jax/discussions/9455 for more info.
-  cudnn_8_3_cudatoolkit_10_2 = generic rec {
-    version = "8.3.2";
-    cudatoolkit = cudatoolkit_10_2;
-    # See https://docs.nvidia.com/deeplearning/cudnn/archives/cudnn-832/support-matrix/index.html#cudnn-cuda-hardware-versions.
-    minCudaVersion = "10.2.00000";
-    maxCudaVersion = "11.5.99999";
-    mkSrc = cudatoolkit:
-      let v = if lib.versions.majorMinor cudatoolkit.version == "10.2" then "10.2" else "11.5"; in
-      fetchurl {
-        # Starting at version 8.3.1 there's a new directory layout including
-        # a subdirectory `local_installers`.
-        url = "https://developer.download.nvidia.com/compute/redist/cudnn/v${version}/local_installers/${v}/cudnn-linux-x86_64-8.3.2.44_cuda${v}-archive.tar.xz";
-        hash = {
-          "10.2" = "sha256-1vVu+cqM+PketzIQumw9ykm6REbBZhv6/lXB7EC2aaw=";
-          "11.5" = "sha256-VQCVPAjF5dHd3P2iNPnvvdzb5DpTsm3AqCxyP6FwxFc=";
-        }."${v}";
-      };
-  };
-  cudnn_8_3_cudatoolkit_11_0 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_0; };
-  cudnn_8_3_cudatoolkit_11_1 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_1; };
-  cudnn_8_3_cudatoolkit_11_2 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_2; };
-  cudnn_8_3_cudatoolkit_11_3 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_3; };
-  cudnn_8_3_cudatoolkit_11_4 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_4; };
-  cudnn_8_3_cudatoolkit_11_5 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11_5; };
-
-  cudnn_8_3_cudatoolkit_10 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_10; };
-  cudnn_8_3_cudatoolkit_11 = cudnn_8_3_cudatoolkit_10_2.override { cudatoolkit = cudatoolkit_11; };
-}
diff --git a/pkgs/development/libraries/science/math/cudnn/extension.nix b/pkgs/development/libraries/science/math/cudnn/extension.nix
new file mode 100644
index 00000000000..263310f3d7c
--- /dev/null
+++ b/pkgs/development/libraries/science/math/cudnn/extension.nix
@@ -0,0 +1,112 @@
+final: prev: let
+
+  inherit (final) callPackage;
+  inherit (prev) cudatoolkit cudaVersion lib pkgs;
+
+  ### CuDNN
+
+  buildCuDnnPackage = args: callPackage ./generic.nix {} args;
+
+  toUnderscore = str: lib.replaceStrings ["."] ["_"] str;
+
+  majorMinorPatch = str: lib.concatStringsSep "." (lib.take 3 (lib.splitVersion str));
+
+  cuDnnPackages = with lib; let
+    # Check whether a file is supported for our cuda version
+    isSupported = fileData: elem cudaVersion fileData.supportedCudaVersions;
+    # Return the first file that is supported. In practice there should only ever be one anyway.
+    supportedFile = files: findFirst isSupported null files;
+    # Supported versions with versions as keys and file as value
+    supportedVersions = filterAttrs (version: file: file !=null ) (mapAttrs (version: files: supportedFile files) cuDnnVersions);
+    # Compute versioned attribute name to be used in this package set
+    computeName = version: "cudnn_${toUnderscore version}";
+    # Add all supported builds as attributes
+    allBuilds = mapAttrs' (version: file: nameValuePair (computeName version) (buildCuDnnPackage (removeAttrs file ["fileVersion"]))) supportedVersions;
+    # Set the default attributes, e.g. cudnn = cudnn_8_3_1;
+    defaultBuild = { "cudnn" = allBuilds.${computeName cuDnnDefaultVersion}; };
+  in allBuilds // defaultBuild;
+
+  cuDnnVersions = let
+    urlPrefix = "https://developer.download.nvidia.com/compute/redist/cudnn";
+  in {
+    "7.4.2" = [
+      rec {
+        fileVersion = "10.0";
+        fullVersion = "7.4.2.24";
+        sha256 = "18ys0apiz9afid2s6lvy9qbyi8g66aimb2a7ikl1f3dm09mciprf";
+        url = "${urlPrefix}/v${majorMinorPatch fullVersion}/cudnn-10.0-linux-x64-v${fullVersion}.tgz";
+        supportedCudaVersions = [ "10.0" ];
+      }
+    ];
+    "7.6.5" = [
+      rec {
+        fileVersion = "10.0";
+        fullVersion = "7.6.5.32";
+        hash = "sha256-KDVeOV8LK5OsLIO2E2CzW6bNA3fkTni+GXtrYbS0kro=";
+        url = "${urlPrefix}/v${majorMinorPatch fullVersion}/cudnn-${cudatoolkit.majorVersion}-linux-x64-v${fullVersion}.tgz";
+        supportedCudaVersions = [ "10.0" ];
+      }
+      rec {
+        fileVersion = "10.1";
+        fullVersion = "7.6.5.32";
+        hash = "sha256-YAJn8squ0v1Y6yFLpmnY6jXzlqfRm5SCLms2+fcIjCA=";
+        url = "${urlPrefix}/v${majorMinorPatch fullVersion}/cudnn-${cudatoolkit.majorVersion}-linux-x64-v${fullVersion}.tgz";
+        supportedCudaVersions = [ "10.1" ];
+      }
+      rec {
+        fileVersion = "10.2";
+        fullVersion = "7.6.5.32";
+        hash = "sha256-fq7IA5osMKsLx1jTA1iHZ2k972v0myJIWiwAvy4TbLN=";
+        url = "${urlPrefix}/v${majorMinorPatch fullVersion}/cudnn-${cudatoolkit.majorVersion}-linux-x64-v${fullVersion}.tgz";
+        supportedCudaVersions = [ "10.2" ];
+      }
+    ];
+    "8.1.1" = [
+      rec {
+        fileVersion = "10.2";
+        fullVersion = "8.1.1.33";
+        hash = "sha256-Kkp7mabpv6aQ6xm7QeSVU/KnpJGls6v8rpAOFmxbbr0=";
+        url = "${urlPrefix}/v${majorMinorPatch fullVersion}/cudnn-${fileVersion}-linux-x64-v${fullVersion}.tgz";
+        supportedCudaVersions = [ "10.2" ];
+      }
+      rec {
+        fileVersion = "11.2";
+        fullVersion = "8.1.1.33";
+        hash = "sha256-mKh4TpKGLyABjSDCgbMNSgzZUfk2lPZDPM9K6cUCumo=";
+        url = "${urlPrefix}/v${majorMinorPatch fullVersion}/cudnn-${fileVersion}-linux-x64-v${fullVersion}.tgz";
+        supportedCudaVersions = [ "11.2" ];
+      }
+    ];
+    "8.3.2" = [
+      rec {
+        fileVersion = "10.2";
+        fullVersion = "8.3.2.44";
+        hash = "sha256-mKh4TpKGLyABjSDCgbMNSgzZUfk2lPZDPM9K6cUCumo=";
+        url = "${urlPrefix}/v${majorMinorPatch fullVersion}/local_installers/${fileVersion}/cudnn-linux-x86_64-${fullVersion}_cuda${fileVersion}-archive.tar.xz";
+        supportedCudaVersions = [ "10.2" ];
+      }
+      rec {
+        fileVersion = "11.5";
+        fullVersion = "8.3.2.44";
+        hash = "sha256-VQCVPAjF5dHd3P2iNPnvvdzb5DpTsm3AqCxyP6FwxFc=";
+        url = "${urlPrefix}/v${majorMinorPatch fullVersion}/local_installers/${fileVersion}/cudnn-linux-x86_64-${fullVersion}_cuda${fileVersion}-archive.tar.xz";
+        supportedCudaVersions = [ "11.0" "11.1" "11.2" "11.3" "11.4" "11.4" "11.5" "11.6" ];
+      }
+    ];
+  };
+
+  # Default attributes
+  cuDnnDefaultVersion = {
+    "10.0" = "7.4.2";
+    "10.1" = "7.6.5";
+    "10.2" = "8.3.2";
+    "11.0" = "8.3.2";
+    "11.1" = "8.3.2";
+    "11.2" = "8.3.2";
+    "11.3" = "8.3.2";
+    "11.4" = "8.3.2";
+    "11.5" = "8.3.2";
+    "11.6" = "8.3.2";
+  }.${cudaVersion};
+
+in cuDnnPackages
diff --git a/pkgs/development/libraries/science/math/cudnn/generic.nix b/pkgs/development/libraries/science/math/cudnn/generic.nix
index a5272e56ab6..2e53bdcdfc4 100644
--- a/pkgs/development/libraries/science/math/cudnn/generic.nix
+++ b/pkgs/development/libraries/science/math/cudnn/generic.nix
@@ -1,9 +1,3 @@
-{ minCudaVersion
-, maxCudaVersion
-, mkSrc
-, version
-}:
-
 { stdenv
 , lib
 , cudatoolkit
@@ -19,13 +13,27 @@
   removeStatic ? false
 }:
 
-stdenv.mkDerivation {
+{ fullVersion
+, url
+, hash ? null
+, sha256 ? null
+, supportedCudaVersions ? []
+}:
+
+assert (hash != null) || (sha256 != null);
+
+let
+  majorMinorPatch = version: lib.concatStringsSep "." (lib.take 3 (lib.splitVersion version));
+  version = majorMinorPatch fullVersion;
+in stdenv.mkDerivation {
   name = "cudatoolkit-${cudatoolkit.majorVersion}-cudnn-${version}";
 
   inherit version;
   # It's often the case that the src depends on the version of cudatoolkit it's
   # being linked against, so we pass in `cudatoolkit` as an argument to `mkSrc`.
-  src = mkSrc cudatoolkit;
+  src = fetchurl {
+    inherit url hash sha256;
+  };
 
   nativeBuildInputs = [ addOpenGLRunpath ];
 
@@ -81,12 +89,7 @@ stdenv.mkDerivation {
     # official version constraints (as recorded in default.nix). In some cases
     # you _may_ be able to smudge version constraints, just know that you're
     # embarking into unknown and unsupported territory when doing so.
-    broken = let cudaVer = lib.getVersion cudatoolkit; in
-      !(
-        lib.versionAtLeast cudaVer minCudaVersion
-        && lib.versionAtLeast maxCudaVersion cudaVer
-      );
-
+    broken = !(elem cudatoolkit.majorMinorVersion supportedCudaVersions);
     description = "NVIDIA CUDA Deep Neural Network library (cuDNN)";
     homepage = "https://developer.nvidia.com/cudnn";
     license = licenses.unfree;
diff --git a/pkgs/development/libraries/science/math/cutensor/default.nix b/pkgs/development/libraries/science/math/cutensor/default.nix
deleted file mode 100644
index d0d24bd1adb..00000000000
--- a/pkgs/development/libraries/science/math/cutensor/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ callPackage
-, cudatoolkit_10_1
-, cudatoolkit_10_2
-, cudatoolkit_11
-, cudatoolkit_11_0
-, cudatoolkit_11_1
-, cudatoolkit_11_2
-, cudatoolkit_11_3
-, cudatoolkit_11_4
-, cudatoolkit_11_5
-, cudatoolkit_11_6
-}:
-
-rec {
-  cutensor_cudatoolkit_10_1 = callPackage ./generic.nix rec {
-    version = "1.2.2.5";
-    libPath = "lib/10.1";
-    cudatoolkit = cudatoolkit_10_1;
-    # 1.2.2 is compatible with CUDA 10.1, 10.2, and 11.x.
-    # See https://docs.nvidia.com/cuda/cutensor/release_notes.html#cutensor-v1-2-2.
-    hash = "sha256-lU7iK4DWuC/U3s1Ct/rq2Gr3w4F2U7RYYgpmF05bibY=";
-  };
-
-  cutensor_cudatoolkit_10_2 = cutensor_cudatoolkit_10_1.override {
-    version = "1.3.1.3";
-    libPath = "lib/10.2";
-    cudatoolkit = cudatoolkit_10_2;
-    # 1.3.1 is compatible with CUDA 10.2 and 11.x.
-    # See https://docs.nvidia.com/cuda/cutensor/release_notes.html#cutensor-v1-3-1.
-    hash = "sha256-mNlVnabB2IC3HnYY0mb06RLqQzDxN9ePGVeBy3hkBC8=";
-  };
-
-  cutensor_cudatoolkit_10 = cutensor_cudatoolkit_10_2;
-
-  cutensor_cudatoolkit_11_0 = cutensor_cudatoolkit_10_2.override {
-    libPath = "lib/11";
-    cudatoolkit = cudatoolkit_11_0;
-  };
-
-  cutensor_cudatoolkit_11_1 = cutensor_cudatoolkit_11_0.override { cudatoolkit = cudatoolkit_11_1; };
-  cutensor_cudatoolkit_11_2 = cutensor_cudatoolkit_11_0.override { cudatoolkit = cudatoolkit_11_2; };
-  cutensor_cudatoolkit_11_3 = cutensor_cudatoolkit_11_0.override { cudatoolkit = cudatoolkit_11_3; };
-  cutensor_cudatoolkit_11_4 = cutensor_cudatoolkit_11_0.override { cudatoolkit = cudatoolkit_11_4; };
-  cutensor_cudatoolkit_11_5 = cutensor_cudatoolkit_11_0.override { cudatoolkit = cudatoolkit_11_5; };
-  cutensor_cudatoolkit_11_6 = cutensor_cudatoolkit_11_0.override { cudatoolkit = cudatoolkit_11_6; };
-
-  cutensor_cudatoolkit_11 = cutensor_cudatoolkit_11_0.override { cudatoolkit = cudatoolkit_11; };
-}
diff --git a/pkgs/development/libraries/science/math/libtorch/test/default.nix b/pkgs/development/libraries/science/math/libtorch/test/default.nix
index eaea649d434..a7940cd1db8 100644
--- a/pkgs/development/libraries/science/math/libtorch/test/default.nix
+++ b/pkgs/development/libraries/science/math/libtorch/test/default.nix
@@ -6,10 +6,11 @@
 , symlinkJoin
 
 , cudaSupport
-, cudatoolkit
-, cudnn
+, cudaPackages ? {}
 }:
 let
+  inherit (cudaPackages) cudatoolkit cudnn;
+
   cudatoolkit_joined = symlinkJoin {
     name = "${cudatoolkit.name}-unsplit";
     paths = [ cudatoolkit.out cudatoolkit.lib ];
diff --git a/pkgs/development/libraries/science/math/magma/default.nix b/pkgs/development/libraries/science/math/magma/default.nix
index c5960dddf51..a1e0d908d51 100644
--- a/pkgs/development/libraries/science/math/magma/default.nix
+++ b/pkgs/development/libraries/science/math/magma/default.nix
@@ -1,4 +1,8 @@
-{ lib, stdenv, fetchurl, cmake, gfortran, ninja, cudatoolkit, libpthreadstubs, lapack, blas }:
+{ lib, stdenv, fetchurl, cmake, gfortran, ninja, cudaPackages, libpthreadstubs, lapack, blas }:
+
+let
+  inherit (cudaPackages) cudatoolkit;
+in
 
 assert let majorIs = lib.versions.major cudatoolkit.version;
        in majorIs == "9" || majorIs == "10" || majorIs == "11";
diff --git a/pkgs/development/libraries/science/math/tensorflow/bin.nix b/pkgs/development/libraries/science/math/tensorflow/bin.nix
index b57d1191933..e084fce9e9e 100644
--- a/pkgs/development/libraries/science/math/tensorflow/bin.nix
+++ b/pkgs/development/libraries/science/math/tensorflow/bin.nix
@@ -1,13 +1,16 @@
 { lib, stdenv
 , fetchurl
 , addOpenGLRunpath
-, cudaSupport ? false, symlinkJoin, cudatoolkit, cudnn
+, cudaSupport ? false, cudaPackages ? {}
+, symlinkJoin
 }:
 
 with lib;
 let
   broken = !stdenv.isLinux && !stdenv.isDarwin;
 
+  inherit (cudaPackages) cudatoolkit cudnn;
+
   tfType = if cudaSupport then "gpu" else "cpu";
 
   system =
diff --git a/pkgs/development/python-modules/Theano/default.nix b/pkgs/development/python-modules/Theano/default.nix
index 480970f04a1..cd4c81056d5 100644
--- a/pkgs/development/python-modules/Theano/default.nix
+++ b/pkgs/development/python-modules/Theano/default.nix
@@ -11,10 +11,14 @@
 , setuptools
 , six
 , libgpuarray
-, cudaSupport ? false, cudatoolkit
-, cudnnSupport ? false, cudnn
+, cudaSupport ? false, cudaPackages ? {}
+, cudnnSupport ? false
 }:
 
+let
+  inherit (cudaPackages) cudatoolkit cudnn;
+in
+
 assert cudnnSupport -> cudaSupport;
 
 let
@@ -39,7 +43,9 @@ let
     (    lib.optional cudaSupport libgpuarray_
       ++ lib.optional cudnnSupport cudnn );
 
-  libgpuarray_ = libgpuarray.override { inherit cudaSupport cudatoolkit; };
+  # We need to be careful with overriding Python packages within the package set
+  # as this can lead to collisions!
+  libgpuarray_ = libgpuarray.override { inherit cudaSupport cudaPackages; };
 
 in buildPythonPackage rec {
   pname = "Theano";
diff --git a/pkgs/development/python-modules/cupy/default.nix b/pkgs/development/python-modules/cupy/default.nix
index a798920ef7a..beba7d21e0c 100644
--- a/pkgs/development/python-modules/cupy/default.nix
+++ b/pkgs/development/python-modules/cupy/default.nix
@@ -1,15 +1,13 @@
 { lib, buildPythonPackage
 , fetchPypi, isPy3k, cython
 , fastrlock, numpy, six, wheel, pytestCheckHook, mock, setuptools
-, cudatoolkit, cudnn, cutensor, nccl
+, cudaPackages
 , addOpenGLRunpath
 }:
 
-assert cudnn.cudatoolkit == cudatoolkit;
-assert cutensor.cudatoolkit == cudatoolkit;
-assert nccl.cudatoolkit == cudatoolkit;
-
-buildPythonPackage rec {
+let
+  inherit (cudaPackages) cudatoolkit cudnn cutensor nccl;
+in buildPythonPackage rec {
   pname = "cupy";
   version = "10.2.0";
   disabled = !isPy3k;
diff --git a/pkgs/development/python-modules/jaxlib/bin.nix b/pkgs/development/python-modules/jaxlib/bin.nix
index 0929831e32a..1eb4cc18ed0 100644
--- a/pkgs/development/python-modules/jaxlib/bin.nix
+++ b/pkgs/development/python-modules/jaxlib/bin.nix
@@ -18,7 +18,6 @@
 , autoPatchelfHook
 , buildPythonPackage
 , config
-, cudatoolkit_11
 , cudnn
 , fetchurl
 , flatbuffers
@@ -29,11 +28,16 @@
 , stdenv
   # Options:
 , cudaSupport ? config.cudaSupport or false
+, cudaPackages ? {}
 }:
 
+let
+  inherit (cudaPackages) cudatoolkit cudnn;
+in
+
 # There are no jaxlib wheels targeting cudnn <8.0.5, and although there are
 # wheels for cudatoolkit <11.1, we don't support them.
-assert cudaSupport -> lib.versionAtLeast cudatoolkit_11.version "11.1";
+assert cudaSupport -> lib.versionAtLeast cudatoolkit.version "11.1";
 assert cudaSupport -> lib.versionAtLeast cudnn.version "8.0.5";
 
 let
@@ -116,7 +120,7 @@ buildPythonPackage rec {
       rpath=$(patchelf --print-rpath $file)
       # For some reason `makeLibraryPath` on `cudatoolkit_11` maps to
       # <cudatoolkit_11.lib>/lib which is different from <cudatoolkit_11>/lib.
-      patchelf --set-rpath "$rpath:${cudatoolkit_11}/lib:${lib.makeLibraryPath [ cudatoolkit_11.lib cudnn ]}" $file
+      patchelf --set-rpath "$rpath:${cudatoolkit}/lib:${lib.makeLibraryPath [ cudatoolkit.lib cudnn ]}" $file
     done
   '';
 
@@ -127,7 +131,7 @@ buildPythonPackage rec {
   # more info.
   postInstall = lib.optional cudaSupport ''
     mkdir -p $out/bin
-    ln -s ${cudatoolkit_11}/bin/ptxas $out/bin/ptxas
+    ln -s ${cudatoolkit}/bin/ptxas $out/bin/ptxas
   '';
 
   pythonImportsCheck = [ "jaxlib" ];
diff --git a/pkgs/development/python-modules/jaxlib/default.nix b/pkgs/development/python-modules/jaxlib/default.nix
index 363bfe56134..3ecad5e4c7a 100644
--- a/pkgs/development/python-modules/jaxlib/default.nix
+++ b/pkgs/development/python-modules/jaxlib/default.nix
@@ -18,11 +18,6 @@
 , wheel
 , which
 
-  # Build-time and runtime CUDA dependencies:
-, cudatoolkit ? null
-, cudnn ? null
-, nccl ? null
-
   # Python dependencies:
 , absl-py
 , flatbuffers
@@ -42,6 +37,7 @@
   # CUDA flags:
 , cudaCapabilities ? [ "sm_35" "sm_50" "sm_60" "sm_70" "sm_75" "compute_80" ]
 , cudaSupport ? false
+, cudaPackages ? {}
 
   # MKL:
 , mklSupport ? true
@@ -49,6 +45,8 @@
 
 let
 
+  inherit (cudaPackages) cudatoolkit cudnn nccl;
+
   pname = "jaxlib";
   version = "0.3.0";
 
diff --git a/pkgs/development/python-modules/libgpuarray/default.nix b/pkgs/development/python-modules/libgpuarray/default.nix
index 2be115ae365..89a83df4268 100644
--- a/pkgs/development/python-modules/libgpuarray/default.nix
+++ b/pkgs/development/python-modules/libgpuarray/default.nix
@@ -9,7 +9,7 @@
 , six
 , nose
 , Mako
-, cudaSupport ? false, cudatoolkit
+, cudaSupport ? false, cudaPackages
 , openclSupport ? true, ocl-icd, clblas
 }:
 
@@ -30,7 +30,7 @@ buildPythonPackage rec {
   configurePhase = "cmakeConfigurePhase";
 
   libraryPath = lib.makeLibraryPath (
-    lib.optionals cudaSupport [ cudatoolkit.lib cudatoolkit.out ]
+    lib.optionals cudaSupport (with cudaPackages; [ cudatoolkit.lib cudatoolkit.out ])
     ++ lib.optionals openclSupport ([ clblas ] ++ lib.optional (!stdenv.isDarwin) ocl-icd)
   );
 
diff --git a/pkgs/development/python-modules/numba/default.nix b/pkgs/development/python-modules/numba/default.nix
index 0219300f1fd..d656a56e3c1 100644
--- a/pkgs/development/python-modules/numba/default.nix
+++ b/pkgs/development/python-modules/numba/default.nix
@@ -13,12 +13,15 @@
 
 # CUDA-only dependencies:
 , addOpenGLRunpath ? null
-, cudatoolkit ? null
+, cudaPackages ? {}
 
 # CUDA flags:
 , cudaSupport ? false
 }:
-buildPythonPackage rec {
+
+let
+  inherit (cudaPackages) cudatoolkit;
+in buildPythonPackage rec {
   version = "0.55.1";
   pname = "numba";
   disabled = pythonOlder "3.6" || pythonAtLeast "3.10";
diff --git a/pkgs/development/python-modules/pycuda/default.nix b/pkgs/development/python-modules/pycuda/default.nix
index cdd07e86110..1c443712db7 100644
--- a/pkgs/development/python-modules/pycuda/default.nix
+++ b/pkgs/development/python-modules/pycuda/default.nix
@@ -10,7 +10,7 @@
 , decorator
 , appdirs
 , six
-, cudatoolkit
+, cudaPackages
 , python
 , mkDerivation
 , lib
@@ -19,6 +19,8 @@ let
   compyte = import ./compyte.nix {
     inherit mkDerivation fetchFromGitHub;
   };
+
+  inherit (cudaPackages) cudatoolkit;
 in
 buildPythonPackage rec {
   pname = "pycuda";
diff --git a/pkgs/development/python-modules/pytorch/default.nix b/pkgs/development/python-modules/pytorch/default.nix
index 24ba74a1013..810460a30ad 100644
--- a/pkgs/development/python-modules/pytorch/default.nix
+++ b/pkgs/development/python-modules/pytorch/default.nix
@@ -1,5 +1,5 @@
 { stdenv, lib, fetchFromGitHub, fetchpatch, buildPythonPackage, python,
-  cudaSupport ? false, cudatoolkit, cudnn, nccl, magma,
+  cudaSupport ? false, cudaPackages, magma,
   mklDnnSupport ? true, useSystemNccl ? true,
   MPISupport ? false, mpi,
   buildDocs ? false,
@@ -29,6 +29,10 @@
 
   isPy3k, pythonOlder }:
 
+let
+  inherit (cudaPackages) cudatoolkit cudnn nccl;
+in
+
 # assert that everything needed for cuda is present and that the correct cuda versions are used
 assert !cudaSupport || (let majorIs = lib.versions.major cudatoolkit.version;
                         in majorIs == "9" || majorIs == "10" || majorIs == "11");
@@ -300,7 +304,7 @@ in buildPythonPackage rec {
   requiredSystemFeatures = [ "big-parallel" ];
 
   passthru = {
-    inherit cudaSupport;
+    inherit cudaSupport cudaPackages;
     cudaArchList = final_cudaArchList;
     # At least for 1.10.2 `torch.fft` is unavailable unless BLAS provider is MKL. This attribute allows for easy detection of its availability.
     blasProvider = blas.provider;
diff --git a/pkgs/development/python-modules/tensorflow/bin.nix b/pkgs/development/python-modules/tensorflow/bin.nix
index 2c47f8674e0..5a35fb8ded4 100644
--- a/pkgs/development/python-modules/tensorflow/bin.nix
+++ b/pkgs/development/python-modules/tensorflow/bin.nix
@@ -20,8 +20,7 @@
 , tensorflow-estimator
 , tensorboard
 , cudaSupport ? false
-, cudatoolkit
-, cudnn
+, cudaPackages ? {}
 , patchelfUnstable
 , zlib
 , python
@@ -43,6 +42,7 @@ assert ! (stdenv.isDarwin && cudaSupport);
 
 let
   packages = import ./binary-hashes.nix;
+  inherit (cudaPackages) cudatoolkit cudnn;
 in buildPythonPackage {
   pname = "tensorflow" + lib.optionalString cudaSupport "-gpu";
   inherit (packages) version;
@@ -182,6 +182,10 @@ in buildPythonPackage {
     "tensorflow.python.framework"
   ];
 
+  passthru = {
+    inherit cudaPackages;
+  };
+
   meta = with lib; {
     description = "Computation using data flow graphs for scalable machine learning";
     homepage = "http://tensorflow.org";
diff --git a/pkgs/development/python-modules/tensorflow/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index 2d5a302521b..3a8eba3ba97 100644
--- a/pkgs/development/python-modules/tensorflow/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -17,7 +17,7 @@
 # that in nix as well. It would make some things easier and less confusing, but
 # it would also make the default tensorflow package unfree. See
 # https://groups.google.com/a/tensorflow.org/forum/#!topic/developers/iRCt5m4qUz0
-, cudaSupport ? false, cudatoolkit ? null, cudnn ? null, nccl ? null
+, cudaSupport ? false, cudaPackages ? {}
 , mklSupport ? false, mkl ? null
 , tensorboardSupport ? true
 # XLA without CUDA is broken
@@ -31,6 +31,10 @@
 , Foundation, Security, cctools, llvmPackages_11
 }:
 
+let
+  inherit (cudaPackages) cudatoolkit cudnn nccl;
+in
+
 assert cudaSupport -> cudatoolkit != null
                    && cudnn != null;
 
@@ -514,6 +518,7 @@ in buildPythonPackage {
   # Regression test for #77626 removed because not more `tensorflow.contrib`.
 
   passthru = {
+    inherit cudaPackages;
     deps = bazel-build.deps;
     libtensorflow = bazel-build.out;
   };
diff --git a/pkgs/development/python-modules/torchvision/default.nix b/pkgs/development/python-modules/torchvision/default.nix
index 7b6384966ab..0cb280af674 100644
--- a/pkgs/development/python-modules/torchvision/default.nix
+++ b/pkgs/development/python-modules/torchvision/default.nix
@@ -11,12 +11,12 @@
 , pillow
 , pytorch
 , pytest
-, cudatoolkit
-, cudnn
 , cudaSupport ? pytorch.cudaSupport or false # by default uses the value from pytorch
 }:
 
 let
+  inherit (pytorch.cudaPackages) cudatoolkit cudnn;
+
   cudatoolkit_joined = symlinkJoin {
     name = "${cudatoolkit.name}-unsplit";
     paths = [ cudatoolkit.out cudatoolkit.lib ];
diff --git a/pkgs/games/katago/default.nix b/pkgs/games/katago/default.nix
index 3265f3d6338..6328b3f9bc8 100644
--- a/pkgs/games/katago/default.nix
+++ b/pkgs/games/katago/default.nix
@@ -1,8 +1,7 @@
 { stdenv
 , boost
 , cmake
-, cudatoolkit
-, cudnn
+, cudaPackages
 , eigen
 , fetchFromGitHub
 , gperftools
@@ -52,7 +51,7 @@ stdenv.mkDerivation rec {
   ] ++ lib.optionals (!enableGPU) [
     eigen
   ] ++ lib.optionals (enableGPU && enableCuda) [
-    cudnn
+    cudaPackages.cudnn
     mesa.drivers
   ] ++ lib.optionals (enableGPU && !enableCuda) [
     opencl-headers
@@ -86,7 +85,7 @@ stdenv.mkDerivation rec {
   preConfigure = ''
     cd cpp/
   '' + lib.optionalString enableCuda ''
-    export CUDA_PATH="${cudatoolkit}"
+    export CUDA_PATH="${cudaPackages.cudatoolkit}"
     export EXTRA_LDFLAGS="-L/run/opengl-driver/lib"
   '';
 
diff --git a/pkgs/test/cuda/cuda-library-samples/default.nix b/pkgs/test/cuda/cuda-library-samples/default.nix
deleted file mode 100644
index ff256028cdf..00000000000
--- a/pkgs/test/cuda/cuda-library-samples/default.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{ callPackage
-, cudatoolkit_10_1, cudatoolkit_10_2
-, cudatoolkit_11_0, cudatoolkit_11_1, cudatoolkit_11_2, cudatoolkit_11_3, cudatoolkit_11_4
-, cutensor_cudatoolkit_10_1, cutensor_cudatoolkit_10_2
-, cutensor_cudatoolkit_11_0, cutensor_cudatoolkit_11_1, cutensor_cudatoolkit_11_2, cutensor_cudatoolkit_11_3, cutensor_cudatoolkit_11_4
-}:
-
-rec {
-
-  cuda-library-samples_cudatoolkit_10_1 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_10_1;
-    cutensor_cudatoolkit = cutensor_cudatoolkit_10_1;
-  };
-
-  cuda-library-samples_cudatoolkit_10_2 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_10_2;
-    cutensor_cudatoolkit = cutensor_cudatoolkit_10_2;
-  };
-
-  cuda-library-samples_cudatoolkit_10 =
-    cuda-library-samples_cudatoolkit_10_2;
-
-  ##
-
-  cuda-library-samples_cudatoolkit_11_0 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_0;
-    cutensor_cudatoolkit = cutensor_cudatoolkit_11_0;
-  };
-
-  cuda-library-samples_cudatoolkit_11_1 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_1;
-    cutensor_cudatoolkit = cutensor_cudatoolkit_11_1;
-  };
-
-  cuda-library-samples_cudatoolkit_11_2 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_2;
-    cutensor_cudatoolkit = cutensor_cudatoolkit_11_2;
-  };
-
-  cuda-library-samples_cudatoolkit_11_3 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_3;
-    cutensor_cudatoolkit = cutensor_cudatoolkit_11_3;
-  };
-
-  cuda-library-samples_cudatoolkit_11_4 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_4;
-    cutensor_cudatoolkit = cutensor_cudatoolkit_11_4;
-  };
-
-  cuda-library-samples_cudatoolkit_11 =
-    cuda-library-samples_cudatoolkit_11_4;
-}
diff --git a/pkgs/test/cuda/cuda-library-samples/extension.nix b/pkgs/test/cuda/cuda-library-samples/extension.nix
new file mode 100644
index 00000000000..4c721a9e9e1
--- /dev/null
+++ b/pkgs/test/cuda/cuda-library-samples/extension.nix
@@ -0,0 +1,3 @@
+final: prev: {
+  cuda-library-samples = final.callPackage ./generic.nix { };
+}
diff --git a/pkgs/test/cuda/cuda-library-samples/generic.nix b/pkgs/test/cuda/cuda-library-samples/generic.nix
index 350decef22d..f0c30d801a1 100644
--- a/pkgs/test/cuda/cuda-library-samples/generic.nix
+++ b/pkgs/test/cuda/cuda-library-samples/generic.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchFromGitHub
 , cmake, addOpenGLRunpath
 , cudatoolkit
-, cutensor_cudatoolkit
+, cutensor
 }:
 
 let
@@ -61,9 +61,9 @@ in
     # CUTENSOR_ROOT is double escaped
     postPatch = ''
       substituteInPlace CMakeLists.txt \
-        --replace "\''${CUTENSOR_ROOT}/include" "${cutensor_cudatoolkit.dev}/include"
+        --replace "\''${CUTENSOR_ROOT}/include" "${cutensor.dev}/include"
     '';
 
-    CUTENSOR_ROOT = cutensor_cudatoolkit;
+    CUTENSOR_ROOT = cutensor;
   });
 }
diff --git a/pkgs/test/cuda/cuda-samples/default.nix b/pkgs/test/cuda/cuda-samples/default.nix
deleted file mode 100644
index 5b46a0651eb..00000000000
--- a/pkgs/test/cuda/cuda-samples/default.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ callPackage
-, cudatoolkit_10_0, cudatoolkit_10_1, cudatoolkit_10_2
-, cudatoolkit_11_0, cudatoolkit_11_1, cudatoolkit_11_2, cudatoolkit_11_3, cudatoolkit_11_4
-}:
-
-rec {
-  ##
-
-  cuda-samples_cudatoolkit_10_0 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_10_0;
-    sha256 = "1zvh4xsdyc59m87brpcmssxsjlp9dkynh4asnkcmc3g94f53l0jw";
-  };
-
-  cuda-samples_cudatoolkit_10_1 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_10_1;
-    sha256 = "1s8ka0hznrni36ajhzf2gqpdrl8kd8fi047qijxks5l2abc093qd";
-  };
-
-  cuda-samples_cudatoolkit_10_2 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_10_2;
-    sha256 = "01p1innzgh9siacpld6nsqimj8jkg93rk4gj8q4crn62pa5vhd94";
-  };
-
-  cuda-samples_cudatoolkit_10 = cuda-samples_cudatoolkit_10_2;
-
-  ##
-
-  cuda-samples_cudatoolkit_11_0 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_0;
-    sha256 = "1n3vjc8c7zdig2xgl5fppavrphqzhdiv9m9nk6smh4f99fwi0705";
-  };
-
-  cuda-samples_cudatoolkit_11_1 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_1;
-    sha256 = "1kjixk50i8y1bkiwbdn5lkv342crvkmbvy1xl5j3lsa1ica21kwh";
-  };
-
-  cuda-samples_cudatoolkit_11_2 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_2;
-    sha256 = "1p1qjvfbm28l933mmnln02rqrf0cy9kbpsyb488d1haiqzvrazl1";
-  };
-
-  cuda-samples_cudatoolkit_11_3 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_3;
-    sha256 = "0kbibb6pgz8j5iq6284axcnmycaha9bw8qlmdp6yfwmnahq1v0yz";
-  };
-
-  cuda-samples_cudatoolkit_11_4 = callPackage ./generic.nix {
-    cudatoolkit = cudatoolkit_11_4;
-    sha256 = "082dkk5y34wyvjgj2p5j1d00rk8xaxb9z0mhvz16bd469r1bw2qk";
-  };
-
-  cuda-samples_cudatoolkit_11 = cuda-samples_cudatoolkit_11_4;
-}
diff --git a/pkgs/test/cuda/cuda-samples/extension.nix b/pkgs/test/cuda/cuda-samples/extension.nix
new file mode 100644
index 00000000000..4c93845d1db
--- /dev/null
+++ b/pkgs/test/cuda/cuda-samples/extension.nix
@@ -0,0 +1,20 @@
+final: prev: let
+
+  sha256 = {
+    "10.0" = "1zvh4xsdyc59m87brpcmssxsjlp9dkynh4asnkcmc3g94f53l0jw";
+    "10.1" = "1s8ka0hznrni36ajhzf2gqpdrl8kd8fi047qijxks5l2abc093qd";
+    "10.2" = "01p1innzgh9siacpld6nsqimj8jkg93rk4gj8q4crn62pa5vhd94";
+    "11.0" = "1n3vjc8c7zdig2xgl5fppavrphqzhdiv9m9nk6smh4f99fwi0705";
+    "11.1" = "1kjixk50i8y1bkiwbdn5lkv342crvkmbvy1xl5j3lsa1ica21kwh";
+    "11.2" = "1p1qjvfbm28l933mmnln02rqrf0cy9kbpsyb488d1haiqzvrazl1";
+    "11.3" = "0kbibb6pgz8j5iq6284axcnmycaha9bw8qlmdp6yfwmnahq1v0yz";
+    "11.4" = "082dkk5y34wyvjgj2p5j1d00rk8xaxb9z0mhvz16bd469r1bw2qk";
+    "11.5" = "sha256-AKRZbke0K59lakhTi8dX2cR2aBuWPZkiQxyKaZTvHrI=";
+    "11.6" = "sha256-AsLNmAplfuQbXg9zt09tXAuFJ524EtTYsQuUlV1tPkE=";
+  }.${prev.cudaVersion};
+
+in {
+  cuda-samples = final.callPackage ./generic.nix {
+    inherit sha256;
+  };
+}
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index 7b6b4f3e3d4..09208dd45f3 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -195,7 +195,6 @@ mapAliases ({
   cryptol = throw "cryptol was removed due to prolonged broken build"; # Added 2020-08-21
 
   # CUDA Toolkit
-
   cudatoolkit_6 = throw "cudatoolkit_6 has been removed in favor of newer versions"; # Added 2021-02-14
   cudatoolkit_65 = throw "cudatoolkit_65 has been removed in favor of newer versions"; # Added 2021-02-14
   cudatoolkit_7 = throw "cudatoolkit_7 has been removed in favor of newer versions"; # Added 2021-02-14
@@ -205,15 +204,56 @@ mapAliases ({
   cudatoolkit_9_0 = throw "cudatoolkit_9_0 has been removed in favor of newer versions"; # Added 2021-04-18
   cudatoolkit_9_1 = throw "cudatoolkit_9_1 has been removed in favor of newer versions"; # Added 2021-04-18
   cudatoolkit_9_2 = throw "cudatoolkit_9_2 has been removed in favor of newer versions"; # Added 2021-04-18
+  cudatoolkit_10 = throw "cudatoolkit_10 has been renamed to cudaPackages_10.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_10_0 = throw "cudatoolkit_10_0 has been renamed to cudaPackages_10_0.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_10_1 = throw "cudatoolkit_10_1 has been renamed to cudaPackages_10_1.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_10_2 = throw "cudatoolkit_10_2 has been renamed to cudaPackages_10_2.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_11_0 = throw "cudatoolkit_11_0 has been renamed to cudaPackages_11_0.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_11_1 = throw "cudatoolkit_11_1 has been renamed to cudaPackages_11_1.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_11_2 = throw "cudatoolkit_11_2 has been renamed to cudaPackages_11_2.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_11_3 = throw "cudatoolkit_11_3 has been renamed to cudaPackages_11_3.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_11_4 = throw "cudatoolkit_11_4 has been renamed to cudaPackages_11_4.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_11_5 = throw "cudatoolkit_11_5 has been renamed to cudaPackages_11_5.cudatoolkit"; # Added 2022-04-04
+  cudatoolkit_11_6 = throw "cudatoolkit_11_6 has been renamed to cudaPackages_11_6.cudatoolkit"; # Added 2022-04-04
+
+  cudnn = throw "cudnn is now part of cudaPackages*"; # Added 2022-04-04
   cudnn6_cudatoolkit_8 = throw "cudnn6_cudatoolkit_8 has been removed in favor of newer versions"; # Added 2021-02-14
   cudnn_cudatoolkit_7 = throw "cudnn_cudatoolkit_7 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudnn_7_4_cudatoolkit_10_0 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
   cudnn_cudatoolkit_7_5 = throw "cudnn_cudatoolkit_7_5 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudnn_7_6_cudatoolkit_10_0 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_7_6_cudatoolkit_10_1 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
   cudnn_cudatoolkit_8 = throw "cudnn_cudatoolkit_8 has been removed in favor of newer versions"; # Added 2021-02-14
+  cudnn_8_1_cudatoolkit_10_2 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_1_cudatoolkit_11_0 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_1_cudatoolkit_11_1 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_1_cudatoolkit_11_2 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_1_cudatoolkit_10 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_3_cudatoolkit_10_2 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_3_cudatoolkit_11_0 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_3_cudatoolkit_11_1 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_3_cudatoolkit_11_2 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_3_cudatoolkit_11_3 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_3_cudatoolkit_11_4 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_3_cudatoolkit_11_5 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_3_cudatoolkit_10 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
+  cudnn_8_3_cudatoolkit_11 = throw "cudnn* is now part of cudaPackages*"; # Added 2022-04-04
   cudnn_cudatoolkit_9 = throw "cudnn_cudatoolkit_9 has been removed in favor of newer versions"; # Added 2021-04-18
   cudnn_cudatoolkit_9_0 = throw "cudnn_cudatoolkit_9_0 has been removed in favor of newer versions"; # Added 2021-04-18
   cudnn_cudatoolkit_9_1 = throw "cudnn_cudatoolkit_9_1 has been removed in favor of newer versions"; # Added 2021-04-18
   cudnn_cudatoolkit_9_2 = throw "cudnn_cudatoolkit_9_2 has been removed in favor of newer versions"; # Added 2021-04-18
 
+  cutensor = throw "cutensor is now part of cudaPackages*"; # Added 2022-04-04
+  cutensor_cudatoolkit_10 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
+  cutensor_cudatoolkit_10_1 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
+  cutensor_cudatoolkit_10_2 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
+  cutensor_cudatoolkit_11 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
+  cutensor_cudatoolkit_11_0 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
+  cutensor_cudatoolkit_11_1 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
+  cutensor_cudatoolkit_11_2 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
+  cutensor_cudatoolkit_11_3 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
+  cutensor_cudatoolkit_11_4 = throw "cutensor* is now part of cudaPackages*"; # Added 2022-04-04
+
   cloud-print-connector = throw "Google Cloudprint is officially discontinued since Jan 2021, more info https://support.google.com/chrome/a/answer/9633006";
   cquery = throw "cquery has been removed because it is abandoned by upstream. Consider switching to clangd or ccls instead"; # Added 2020-06-15
   cups-googlecloudprint = throw "Google Cloudprint is officially discontinued since Jan 2021, more info https://support.google.com/chrome/a/answer/9633006";
@@ -782,6 +822,10 @@ mapAliases ({
 
   ### N ###
 
+  nccl = throw "nccl has been renamed to cudaPackages.nccl"; # Added 2022-04-04
+  nccl_cudatoolkit_10 = throw "nccl_cudatoolkit_10 has been renamed to cudaPackages_10.nccl"; # Added 2022-04-04
+  nccl_cudatoolkit_11 = throw "nccl_cudatoolkit_11 has been renamed to cudaPackages_11.nccl"; # Added 2022-04-04
+
   net_snmp = net-snmp; # Added 2019-12-21
   nagiosPluginsOfficial = monitoring-plugins;
   navit = throw "navit has been removed from nixpkgs, due to being unmaintained"; # Added 2021-06-07
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5ef3b109563..e2035dd2b2a 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2360,8 +2360,7 @@ with pkgs;
 
   libtensorflow-bin = callPackage ../development/libraries/science/math/tensorflow/bin.nix {
     cudaSupport = config.cudaSupport or false;
-    cudatoolkit = cudatoolkit_10_0;
-    cudnn = cudnn_7_4_cudatoolkit_10_0;
+    cudaPackages = cudaPackages_10_0;
   };
 
   libtensorflow =
@@ -4619,59 +4618,24 @@ with pkgs;
 
   snooze = callPackage ../tools/system/snooze { };
 
-  cudaPackages = recurseIntoAttrs (callPackage ../development/compilers/cudatoolkit {});
-  inherit (cudaPackages)
-    cudatoolkit_10
-    cudatoolkit_10_0
-    cudatoolkit_10_1
-    cudatoolkit_10_2
-    cudatoolkit_11
-    cudatoolkit_11_0
-    cudatoolkit_11_1
-    cudatoolkit_11_2
-    cudatoolkit_11_3
-    cudatoolkit_11_4
-    cudatoolkit_11_5
-    cudatoolkit_11_6;
-
-  cudatoolkit = cudatoolkit_11;
-
-  cudnnPackages = callPackages ../development/libraries/science/math/cudnn { };
-  inherit (cudnnPackages)
-    cudnn_7_4_cudatoolkit_10_0
-    cudnn_7_6_cudatoolkit_10_0
-    cudnn_7_6_cudatoolkit_10_1
-    cudnn_8_1_cudatoolkit_10_2
-    cudnn_8_1_cudatoolkit_11_0
-    cudnn_8_1_cudatoolkit_11_1
-    cudnn_8_1_cudatoolkit_11_2
-    cudnn_8_1_cudatoolkit_10
-    cudnn_8_3_cudatoolkit_10_2
-    cudnn_8_3_cudatoolkit_11_0
-    cudnn_8_3_cudatoolkit_11_1
-    cudnn_8_3_cudatoolkit_11_2
-    cudnn_8_3_cudatoolkit_11_3
-    cudnn_8_3_cudatoolkit_11_4
-    cudnn_8_3_cudatoolkit_11_5
-    cudnn_8_3_cudatoolkit_10
-    cudnn_8_3_cudatoolkit_11;
-
-  # Make sure to keep this in sync with the `cudatoolkit` version!
-  cudnn = cudnn_8_3_cudatoolkit_11;
-
-  cutensorPackages = callPackages ../development/libraries/science/math/cutensor { };
-  inherit (cutensorPackages)
-    cutensor_cudatoolkit_10
-    cutensor_cudatoolkit_10_1
-    cutensor_cudatoolkit_10_2
-    cutensor_cudatoolkit_11
-    cutensor_cudatoolkit_11_0
-    cutensor_cudatoolkit_11_1
-    cutensor_cudatoolkit_11_2
-    cutensor_cudatoolkit_11_3
-    cutensor_cudatoolkit_11_4;
-
-  cutensor = cutensor_cudatoolkit_11;
+  cudaPackages_10_0 = callPackage ./cuda-packages.nix { cudaVersion = "10.0"; };
+  cudaPackages_10_1 = callPackage ./cuda-packages.nix { cudaVersion = "10.1"; };
+  cudaPackages_10_2 = callPackage ./cuda-packages.nix { cudaVersion = "10.2"; };
+  cudaPackages_10 = cudaPackages_10_2;
+
+  cudaPackages_11_0 = callPackage ./cuda-packages.nix { cudaVersion = "11.0"; };
+  cudaPackages_11_1 = callPackage ./cuda-packages.nix { cudaVersion = "11.1"; };
+  cudaPackages_11_2 = callPackage ./cuda-packages.nix { cudaVersion = "11.2"; };
+  cudaPackages_11_3 = callPackage ./cuda-packages.nix { cudaVersion = "11.3"; };
+  cudaPackages_11_4 = callPackage ./cuda-packages.nix { cudaVersion = "11.4"; };
+  cudaPackages_11_5 = callPackage ./cuda-packages.nix { cudaVersion = "11.5"; };
+  cudaPackages_11_6 = callPackage ./cuda-packages.nix { cudaVersion = "11.6"; };
+  cudaPackages_11 = cudaPackages_11_5;
+  cudaPackages = cudaPackages_11;
+
+  # TODO: move to alias
+  cudatoolkit = cudaPackages.cudatoolkit;
+  cudatoolkit_11 = cudaPackages_11.cudatoolkit;
 
   curie = callPackage ../data/fonts/curie { };
 
@@ -8184,10 +8148,6 @@ with pkgs;
   nbd = callPackage ../tools/networking/nbd { };
   xnbd = callPackage ../tools/networking/xnbd { };
 
-  nccl = callPackage ../development/libraries/science/math/nccl { };
-  nccl_cudatoolkit_10 = nccl.override { cudatoolkit = cudatoolkit_10; };
-  nccl_cudatoolkit_11 = nccl.override { cudatoolkit = cudatoolkit_11; };
-
   ndjbdns = callPackage ../tools/networking/ndjbdns { };
 
   ndppd = callPackage ../applications/networking/ndppd { };
@@ -26411,7 +26371,7 @@ with pkgs;
 
   gpu-screen-recorder = callPackage ../applications/video/gpu-screen-recorder {
     # rm me as soon as this package gains the support for cuda 11
-    cudatoolkit = cudatoolkit_10;
+    inherit (cudaPackages_10) cudatoolkit;
   };
 
   gpu-screen-recorder-gtk = callPackage ../applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nix { };
@@ -31325,8 +31285,6 @@ with pkgs;
 
   katagoWithCuda = katago.override {
     enableCuda = true;
-    cudnn = cudnn_8_3_cudatoolkit_11;
-    cudatoolkit = cudatoolkit_11;
   };
 
   katagoCPU = katago.override {
@@ -32930,8 +32888,7 @@ with pkgs;
 
   caffe = callPackage ../applications/science/math/caffe ({
     cudaSupport = config.cudaSupport or false;
-    cudatoolkit = cudatoolkit_10_1;
-    cudnn = cudnn_7_6_cudatoolkit_10_1;
+    cudaPackages = cudaPackages_10_1;
     opencv3 = opencv3WithoutCuda; # Used only for image loading.
     blas = openblas;
     inherit (darwin.apple_sdk.frameworks) Accelerate CoreGraphics CoreVideo;
diff --git a/pkgs/top-level/cuda-packages.nix b/pkgs/top-level/cuda-packages.nix
new file mode 100644
index 00000000000..211540260d1
--- /dev/null
+++ b/pkgs/top-level/cuda-packages.nix
@@ -0,0 +1,72 @@
+{ lib
+, pkgs
+, cudaVersion
+}:
+
+with lib;
+
+let
+
+  scope = makeScope pkgs.newScope (final: {
+    # Here we put package set configuration and utility functions.
+    inherit cudaVersion;
+    cudaMajorVersion = versions.major final.cudaVersion;
+    cudaMajorMinorVersion = lib.versions.majorMinor final.cudaVersion;
+    inherit lib pkgs;
+
+    addBuildInputs = drv: buildInputs: drv.overrideAttrs (oldAttrs: {
+      buildInputs = (oldAttrs.buildInputs or []) ++ buildInputs;
+    });
+  });
+
+  cutensorExtension = final: prev: let
+    ### CuTensor
+
+    buildCuTensorPackage = final.callPackage ../development/libraries/science/math/cutensor/generic.nix;
+
+    cuTensorVersions = {
+      "1.2.2.5" = {
+        hash = "sha256-lU7iK4DWuC/U3s1Ct/rq2Gr3w4F2U7RYYgpmF05bibY=";
+      };
+      "1.3.1.3" = {
+        hash = "sha256-mNlVnabB2IC3HnYY0mb06RLqQzDxN9ePGVeBy3hkBC8=";
+      };
+    };
+
+    inherit (final) cudaMajorMinorVersion cudaMajorVersion;
+
+    cutensor = buildCuTensorPackage rec {
+      version = if cudaMajorMinorVersion == "10.1" then "1.2.2.5" else "1.3.1.3";
+      inherit (cuTensorVersions.${version}) hash;
+      # This can go into generic.nix
+      libPath = "lib/${if cudaMajorVersion == "10" then cudaMajorMinorVersion else cudaMajorVersion}";
+    };
+  in { inherit cutensor; };
+
+  extraPackagesExtension = final: prev: {
+
+    nccl = final.callPackage ../development/libraries/science/math/nccl { };
+
+    autoAddOpenGLRunpathHook = final.callPackage ( { makeSetupHook, addOpenGLRunpath }:
+      makeSetupHook {
+        name = "auto-add-opengl-runpath-hook";
+        deps = [
+          addOpenGLRunpath
+        ];
+      } ../development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh
+    ) {};
+
+  };
+
+  composedExtension = composeManyExtensions [
+    extraPackagesExtension
+    (import ../development/compilers/cudatoolkit/extension.nix)
+    (import ../development/compilers/cudatoolkit/redist/extension.nix)
+    (import ../development/compilers/cudatoolkit/redist/overrides.nix)
+    (import ../development/libraries/science/math/cudnn/extension.nix)
+    (import ../test/cuda/cuda-samples/extension.nix)
+    (import ../test/cuda/cuda-library-samples/extension.nix)
+    cutensorExtension
+  ];
+
+in (scope.overrideScope' composedExtension)
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 1cab3948c61..ad2f9173123 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -94,12 +94,6 @@ let
 
   disabledIf = x: drv: if x then disabled drv else drv;
 
-  # CUDA-related packages that are compatible with the currently packaged version
-  # of TensorFlow, used to keep these versions in sync in related packages like `jaxlib`.
-  tensorflow_compat_cudatoolkit = pkgs.cudatoolkit_11_2;
-  tensorflow_compat_cudnn = pkgs.cudnn_8_1_cudatoolkit_11_2;
-  tensorflow_compat_nccl = pkgs.nccl_cudatoolkit_11;
-
 in {
 
   inherit pkgs stdenv;
@@ -1959,12 +1953,7 @@ in {
 
   cufflinks = callPackage ../development/python-modules/cufflinks { };
 
-  cupy = callPackage ../development/python-modules/cupy {
-    cudatoolkit = pkgs.cudatoolkit_11;
-    cudnn = pkgs.cudnn_8_3_cudatoolkit_11;
-    nccl = pkgs.nccl_cudatoolkit_11;
-    cutensor = pkgs.cutensor_cudatoolkit_11;
-  };
+  cupy = callPackage ../development/python-modules/cupy { };
 
   curio = callPackage ../development/python-modules/curio { };
 
@@ -4231,22 +4220,20 @@ in {
 
   jaxlib-bin = callPackage ../development/python-modules/jaxlib/bin.nix {
     cudaSupport = pkgs.config.cudaSupport or false;
-    cudatoolkit_11 = tensorflow_compat_cudatoolkit;
-    cudnn = tensorflow_compat_cudnn;
+    inherit (self.tensorflow) cudaPackages;
   };
 
   jaxlib-build = callPackage ../development/python-modules/jaxlib {
     # Some platforms don't have `cudaSupport` defined, hence the need for 'or false'.
     cudaSupport = pkgs.config.cudaSupport or false;
-    cudatoolkit = tensorflow_compat_cudatoolkit;
-    cudnn = tensorflow_compat_cudnn;
-    nccl = tensorflow_compat_nccl;
+    inherit (self.tensorflow) cudaPackages;
   };
 
   jaxlib = self.jaxlib-build;
 
   jaxlibWithCuda = self.jaxlib-build.override {
     cudaSupport = true;
+
   };
 
   jaxlibWithoutCuda = self.jaxlib-build.override {
@@ -5681,7 +5668,6 @@ in {
 
   numba = callPackage ../development/python-modules/numba {
     cudaSupport = pkgs.config.cudaSupport or false;
-    cudatoolkit = tensorflow_compat_cudatoolkit;
   };
 
   numbaWithCuda = self.numba.override {
@@ -6876,7 +6862,6 @@ in {
   pyctr = callPackage ../development/python-modules/pyctr { };
 
   pycuda = callPackage ../development/python-modules/pycuda {
-    inherit (pkgs) cudatoolkit;
     inherit (pkgs.stdenv) mkDerivation;
   };
 
@@ -7596,6 +7581,7 @@ in {
   });
 
   pyrealsense2WithCuda = toPythonModule (pkgs.librealsenseWithCuda.override {
+    cudaSupport = true;
     enablePython = true;
     pythonPackages = self;
   });
@@ -9894,18 +9880,21 @@ in {
 
   tensorboardx = callPackage ../development/python-modules/tensorboardx { };
 
-  tensorflow-bin = callPackage ../development/python-modules/tensorflow/bin.nix {
+  tensorflow-bin = let
+    # CUDA-related packages that are compatible with the currently packaged version
+    # of TensorFlow, used to keep these versions in sync in related packages like `jaxlib`.
+    cudaPackages = pkgs.cudaPackages_11_2.overrideScope' (final: prev: {
+      cudnn = prev.cudnn_8_1_1;
+    });
+  in callPackage ../development/python-modules/tensorflow/bin.nix {
     cudaSupport = pkgs.config.cudaSupport or false;
-    cudatoolkit = tensorflow_compat_cudatoolkit;
-    cudnn = tensorflow_compat_cudnn;
+    inherit cudaPackages;
   };
 
   tensorflow-build = callPackage ../development/python-modules/tensorflow {
     inherit (pkgs.darwin) cctools;
     cudaSupport = pkgs.config.cudaSupport or false;
-    cudatoolkit = tensorflow_compat_cudatoolkit;
-    cudnn = tensorflow_compat_cudnn;
-    nccl = tensorflow_compat_nccl;
+    inherit (self.tensorflow-bin) cudaPackages;
     inherit (pkgs.darwin.apple_sdk.frameworks) Foundation Security;
     flatbuffers-core = pkgs.flatbuffers;
     flatbuffers-python = self.flatbuffers;
diff --git a/pkgs/top-level/release-cuda.nix b/pkgs/top-level/release-cuda.nix
new file mode 100644
index 00000000000..6cc149936ac
--- /dev/null
+++ b/pkgs/top-level/release-cuda.nix
@@ -0,0 +1,55 @@
+/*
+    Test CUDA packages.
+
+    This release file will not be tested on hydra.nixos.org
+    because it requires unfree software.
+
+    Test for example like this:
+
+        $ hydra-eval-jobs pkgs/top-level/release-cuda.nix --option restrict-eval false -I foo=. --arg nixpkgs '{ outPath = ./.; revCount = 0; shortRev = "aabbcc"; }'
+
+*/
+
+{ # The platforms for which we build Nixpkgs.
+  supportedSystems ? [
+    "x86_64-linux"
+  ]
+, # Attributes passed to nixpkgs.
+  nixpkgsArgs ? { config = { allowUnfree = true; inHydra = true; }; }
+}:
+
+with import ./release-lib.nix {inherit supportedSystems nixpkgsArgs; };
+with lib;
+
+let
+  # Package sets to evaluate
+  packageSets = [
+    "cudaPackages_10_0"
+    "cudaPackages_10_1"
+    "cudaPackages_10_2"
+    "cudaPackages_10"
+    "cudaPackages_11_0"
+    "cudaPackages_11_1"
+    "cudaPackages_11_2"
+    "cudaPackages_11_3"
+    "cudaPackages_11_4"
+    "cudaPackages_11_5"
+    "cudaPackages_11_6"
+    "cudaPackages_11"
+    "cudaPackages"
+  ];
+
+  evalPackageSet = pset: mapTestOn { ${pset} = packagePlatforms pkgs.${pset}; };
+
+  jobs = (mapTestOn ({
+    # Packages to evaluate
+    python3.pkgs.caffeWithCuda = linux;
+    python3.pkgs.jaxlibWithCuda = linux;
+    python3.pkgs.libgpuarray = linux;
+    python3.pkgs.tensorflowWithCuda = linux;
+    python3.pkgs.pyrealsense2WithCuda = linux;
+    python3.pkgs.pytorchWithCuda = linux;
+    python3.pkgs.jaxlib = linux;
+  }) // (genAttrs packageSets evalPackageSet));
+
+in jobs