Merge pull request #291828 from SomeoneSerge/refactor/cdi-nvidia
nixos/cdi.dynamic.nvidia: expose driverLink
This commit is contained in:
commit
46b75bf589
@ -1,37 +1,58 @@
|
|||||||
{ config, lib, pkgs }: let
|
{
|
||||||
|
addDriverRunpath,
|
||||||
|
glibc,
|
||||||
|
jq,
|
||||||
|
lib,
|
||||||
|
nvidia-container-toolkit,
|
||||||
|
nvidia-driver,
|
||||||
|
runtimeShell,
|
||||||
|
writeScriptBin,
|
||||||
|
}:
|
||||||
|
let
|
||||||
mountOptions = { options = ["ro" "nosuid" "nodev" "bind"]; };
|
mountOptions = { options = ["ro" "nosuid" "nodev" "bind"]; };
|
||||||
mounts = [
|
mounts = [
|
||||||
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-cuda-mps-control";
|
# FIXME: Making /usr mounts optional
|
||||||
|
{ hostPath = lib.getExe' nvidia-driver "nvidia-cuda-mps-control";
|
||||||
containerPath = "/usr/bin/nvidia-cuda-mps-control"; }
|
containerPath = "/usr/bin/nvidia-cuda-mps-control"; }
|
||||||
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-cuda-mps-server";
|
{ hostPath = lib.getExe' nvidia-driver "nvidia-cuda-mps-server";
|
||||||
containerPath = "/usr/bin/nvidia-cuda-mps-server"; }
|
containerPath = "/usr/bin/nvidia-cuda-mps-server"; }
|
||||||
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-debugdump";
|
{ hostPath = lib.getExe' nvidia-driver "nvidia-debugdump";
|
||||||
containerPath = "/usr/bin/nvidia-debugdump"; }
|
containerPath = "/usr/bin/nvidia-debugdump"; }
|
||||||
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-powerd";
|
{ hostPath = lib.getExe' nvidia-driver "nvidia-powerd";
|
||||||
containerPath = "/usr/bin/nvidia-powerd"; }
|
containerPath = "/usr/bin/nvidia-powerd"; }
|
||||||
{ hostPath = "${lib.getBin config.hardware.nvidia.package}/bin/nvidia-smi";
|
{ hostPath = lib.getExe' nvidia-driver "nvidia-smi";
|
||||||
containerPath = "/usr/bin/nvidia-smi"; }
|
containerPath = "/usr/bin/nvidia-smi"; }
|
||||||
{ hostPath = "${pkgs.nvidia-container-toolkit}/bin/nvidia-ctk";
|
{ hostPath = lib.getExe' nvidia-container-toolkit "nvidia-ctk";
|
||||||
containerPath = "/usr/bin/nvidia-ctk"; }
|
containerPath = "/usr/bin/nvidia-ctk"; }
|
||||||
{ hostPath = "${pkgs.glibc}/lib";
|
{ hostPath = "${lib.getLib glibc}/lib";
|
||||||
containerPath = "${pkgs.glibc}/lib"; }
|
containerPath = "${lib.getLib glibc}/lib"; }
|
||||||
{ hostPath = "${pkgs.glibc}/lib64";
|
|
||||||
containerPath = "${pkgs.glibc}/lib64"; }
|
# FIXME: use closureinfo
|
||||||
|
{
|
||||||
|
hostPath = addDriverRunpath.driverLink;
|
||||||
|
containerPath = addDriverRunpath.driverLink;
|
||||||
|
}
|
||||||
|
{ hostPath = "${lib.getLib glibc}/lib";
|
||||||
|
containerPath = "${lib.getLib glibc}/lib"; }
|
||||||
|
{ hostPath = "${lib.getLib glibc}/lib64";
|
||||||
|
containerPath = "${lib.getLib glibc}/lib64"; }
|
||||||
];
|
];
|
||||||
jqAddMountExpression = ".containerEdits.mounts[.containerEdits.mounts | length] |= . +";
|
jqAddMountExpression = ".containerEdits.mounts[.containerEdits.mounts | length] |= . +";
|
||||||
mountsToJq = lib.concatMap
|
mountsToJq = lib.concatMap
|
||||||
(mount:
|
(mount:
|
||||||
["${pkgs.jq}/bin/jq '${jqAddMountExpression} ${builtins.toJSON (mount // mountOptions)}'"])
|
["${lib.getExe jq} '${jqAddMountExpression} ${builtins.toJSON (mount // mountOptions)}'"])
|
||||||
mounts;
|
mounts;
|
||||||
in ''
|
in
|
||||||
#! ${pkgs.runtimeShell}
|
writeScriptBin "nvidia-cdi-generator"
|
||||||
|
''
|
||||||
|
#! ${runtimeShell}
|
||||||
|
|
||||||
function cdiGenerate {
|
function cdiGenerate {
|
||||||
${pkgs.nvidia-container-toolkit}/bin/nvidia-ctk cdi generate \
|
${lib.getExe' nvidia-container-toolkit "nvidia-ctk"} cdi generate \
|
||||||
--format json \
|
--format json \
|
||||||
--ldconfig-path ${pkgs.glibc.bin}/bin/ldconfig \
|
--ldconfig-path ${lib.getExe' glibc "ldconfig"} \
|
||||||
--library-search-path ${config.hardware.nvidia.package}/lib \
|
--library-search-path ${lib.getLib nvidia-driver}/lib \
|
||||||
--nvidia-ctk-path ${pkgs.nvidia-container-toolkit}/bin/nvidia-ctk
|
--nvidia-ctk-path ${lib.getExe' nvidia-container-toolkit "nvidia-ctk"}
|
||||||
}
|
}
|
||||||
|
|
||||||
cdiGenerate | \
|
cdiGenerate | \
|
||||||
|
@ -26,9 +26,11 @@
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
RuntimeDirectory = "cdi";
|
RuntimeDirectory = "cdi";
|
||||||
RemainAfterExit = true;
|
RemainAfterExit = true;
|
||||||
ExecStart = let
|
ExecStart =
|
||||||
script = (pkgs.writeScriptBin "nvidia-cdi-generator"
|
let
|
||||||
(import ./cdi-generate.nix { inherit config lib pkgs; })); in (lib.getExe script);
|
script = pkgs.callPackage ./cdi-generate.nix { nvidia-driver = config.hardware.nvidia.package; };
|
||||||
|
in
|
||||||
|
lib.getExe script;
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user