mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-03-06 23:31:34 +00:00
40 lines
1.7 KiB
Nix
40 lines
1.7 KiB
Nix
{ config, lib, pkgs }: let
|
|
mountOptions = { options = ["ro" "nosuid" "nodev" "bind"]; };
|
|
mounts = [
|
|
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-cuda-mps-control";
|
|
containerPath = "/usr/bin/nvidia-cuda-mps-control"; }
|
|
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-cuda-mps-server";
|
|
containerPath = "/usr/bin/nvidia-cuda-mps-server"; }
|
|
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-debugdump";
|
|
containerPath = "/usr/bin/nvidia-debugdump"; }
|
|
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-powerd";
|
|
containerPath = "/usr/bin/nvidia-powerd"; }
|
|
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-smi";
|
|
containerPath = "/usr/bin/nvidia-smi"; }
|
|
{ hostPath = "${pkgs.nvidia-container-toolkit}/bin/nvidia-ctk";
|
|
containerPath = "/usr/bin/nvidia-ctk"; }
|
|
{ hostPath = "${pkgs.glibc}/lib";
|
|
containerPath = "${pkgs.glibc}/lib"; }
|
|
{ hostPath = "${pkgs.glibc}/lib64";
|
|
containerPath = "${pkgs.glibc}/lib64"; }
|
|
];
|
|
jqAddMountExpression = ".containerEdits.mounts[.containerEdits.mounts | length] |= . +";
|
|
mountsToJq = lib.concatMap
|
|
(mount:
|
|
["${pkgs.jq}/bin/jq '${jqAddMountExpression} ${builtins.toJSON (mount // mountOptions)}'"])
|
|
mounts;
|
|
in ''
|
|
#! ${pkgs.runtimeShell}
|
|
|
|
function cdiGenerate {
|
|
${pkgs.nvidia-container-toolkit}/bin/nvidia-ctk cdi generate \
|
|
--format json \
|
|
--ldconfig-path ${pkgs.glibc.bin}/bin/ldconfig \
|
|
--library-search-path ${config.hardware.nvidia.package}/lib \
|
|
--nvidia-ctk-path ${pkgs.nvidia-container-toolkit}/bin/nvidia-ctk
|
|
}
|
|
|
|
cdiGenerate | \
|
|
${lib.concatStringsSep " | " mountsToJq} > $RUNTIME_DIRECTORY/nvidia-container-toolkit.json
|
|
''
|