471ff2c33c
Add the NixOS option `hardware.nvidia-container-toolkit-cdi-generator.enable`. This enables the ability to expose GPU's in containers for container runtimes that support the Container Device Interface (CDI) Remove `cdi.static` and `cdi.dynamic.nvidia.enable` attributes.
36 lines
961 B
Nix
36 lines
961 B
Nix
{
|
|
glibc,
|
|
jq,
|
|
lib,
|
|
mounts,
|
|
nvidia-container-toolkit,
|
|
nvidia-driver,
|
|
runtimeShell,
|
|
writeScriptBin,
|
|
}: let
|
|
mkMount = {hostPath, containerPath, mountOptions}: {
|
|
inherit hostPath containerPath;
|
|
options = mountOptions;
|
|
};
|
|
jqAddMountExpression = ".containerEdits.mounts[.containerEdits.mounts | length] |= . +";
|
|
allJqMounts = lib.concatMap
|
|
(mount:
|
|
["${lib.getExe jq} '${jqAddMountExpression} ${builtins.toJSON (mkMount mount)}'"])
|
|
mounts;
|
|
in
|
|
writeScriptBin "nvidia-cdi-generator"
|
|
''
|
|
#! ${runtimeShell}
|
|
|
|
function cdiGenerate {
|
|
${lib.getExe' nvidia-container-toolkit "nvidia-ctk"} cdi generate \
|
|
--format json \
|
|
--ldconfig-path ${lib.getExe' glibc "ldconfig"} \
|
|
--library-search-path ${lib.getLib nvidia-driver}/lib \
|
|
--nvidia-ctk-path ${lib.getExe' nvidia-container-toolkit "nvidia-ctk"}
|
|
}
|
|
|
|
cdiGenerate | \
|
|
${lib.concatStringsSep " | " allJqMounts} > $RUNTIME_DIRECTORY/nvidia-container-toolkit.json
|
|
''
|