mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-30 00:34:00 +00:00
nvidia-container-toolkit: only mount existing paths in the host
This commit is contained in:
parent
b764d780d8
commit
2b883410d4
@ -13,11 +13,14 @@
|
||||
inherit hostPath containerPath;
|
||||
options = mountOptions;
|
||||
};
|
||||
jqAddMountExpression = ".containerEdits.mounts[.containerEdits.mounts | length] |= . +";
|
||||
allJqMounts = lib.concatMap
|
||||
(mount:
|
||||
["${lib.getExe jq} '${jqAddMountExpression} ${builtins.toJSON (mkMount mount)}'"])
|
||||
mounts;
|
||||
mountToCommand = mount:
|
||||
"additionalMount \"${mount.hostPath}\" \"${mount.containerPath}\" '${builtins.toJSON mount.mountOptions}'";
|
||||
mountsToCommands = mounts:
|
||||
if (builtins.length mounts) == 0 then
|
||||
"cat"
|
||||
else
|
||||
(lib.strings.concatMapStringsSep " | \\\n"
|
||||
mountToCommand mounts);
|
||||
in
|
||||
writeScriptBin "nvidia-cdi-generator"
|
||||
''
|
||||
@ -32,6 +35,18 @@ function cdiGenerate {
|
||||
--nvidia-ctk-path ${lib.getExe' nvidia-container-toolkit "nvidia-ctk"}
|
||||
}
|
||||
|
||||
cdiGenerate | \
|
||||
${lib.concatStringsSep " | " allJqMounts} > $RUNTIME_DIRECTORY/nvidia-container-toolkit.json
|
||||
function additionalMount {
|
||||
local hostPath="$1"
|
||||
local containerPath="$2"
|
||||
local mountOptions="$3"
|
||||
if [ -e "$hostPath" ]; then
|
||||
${lib.getExe jq} ".containerEdits.mounts[.containerEdits.mounts | length] = { \"hostPath\": \"$hostPath\", \"containerPath\": \"$containerPath\", \"options\": $mountOptions }"
|
||||
else
|
||||
echo "Mount $hostPath ignored: could not find path in the host machine" >&2
|
||||
cat
|
||||
fi
|
||||
}
|
||||
|
||||
cdiGenerate |
|
||||
${mountsToCommands mounts} > $RUNTIME_DIRECTORY/nvidia-container-toolkit.json
|
||||
''
|
||||
|
Loading…
Reference in New Issue
Block a user