at master 1.7 kB view raw
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}