1{
2 lib,
3 symlinkJoin,
4 backendStdenv,
5 cudaMajorMinorVersion,
6 cuda_cccl ? null,
7 cuda_cudart ? null,
8 cuda_cuobjdump ? null,
9 cuda_cupti ? null,
10 cuda_cuxxfilt ? null,
11 cuda_gdb ? null,
12 cuda_nvcc ? null,
13 cuda_nvdisasm ? null,
14 cuda_nvml_dev ? null,
15 cuda_nvprune ? null,
16 cuda_nvrtc ? null,
17 cuda_nvtx ? null,
18 cuda_profiler_api ? null,
19 cuda_sanitizer_api ? null,
20 libcublas ? null,
21 libcufft ? null,
22 libcurand ? null,
23 libcusolver ? null,
24 libcusparse ? null,
25 libnpp ? null,
26}:
27
28let
29 getAllOutputs = p: [
30 (lib.getBin p)
31 (lib.getLib p)
32 (lib.getDev p)
33 ];
34 hostPackages = [
35 cuda_cuobjdump
36 cuda_gdb
37 cuda_nvcc
38 cuda_nvdisasm
39 cuda_nvprune
40 ];
41 targetPackages = [
42 cuda_cccl
43 cuda_cudart
44 cuda_cupti
45 cuda_cuxxfilt
46 cuda_nvml_dev
47 cuda_nvrtc
48 cuda_nvtx
49 cuda_profiler_api
50 cuda_sanitizer_api
51 libcublas
52 libcufft
53 libcurand
54 libcusolver
55 libcusparse
56 libnpp
57 ];
58
59 # This assumes we put `cudatoolkit` in `buildInputs` instead of `nativeBuildInputs`:
60 allPackages = (map (p: p.__spliced.buildHost or p) hostPackages) ++ targetPackages;
61in
62symlinkJoin rec {
63 name = "cuda-merged-${cudaMajorMinorVersion}";
64 version = cudaMajorMinorVersion;
65
66 paths = builtins.concatMap getAllOutputs allPackages;
67
68 passthru = {
69 cc = lib.warn "cudaPackages.cudatoolkit is deprecated, refer to the manual and use splayed packages instead" backendStdenv.cc;
70 lib = symlinkJoin {
71 inherit name;
72 paths = map (p: lib.getLib p) allPackages;
73 };
74 };
75
76 meta = with lib; {
77 description = "Wrapper substituting the deprecated runfile-based CUDA installation";
78 license = licenses.nvidiaCuda;
79 };
80}