mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-13 13:15:30 +03:00
nvidia-docker: wrapProgram to pickup needed runc executable
This commit is contained in:
parent
df43c0f9da
commit
890a298409
2 changed files with 18 additions and 4 deletions
|
@ -2,6 +2,7 @@
|
||||||
let
|
let
|
||||||
cfg = config.virtualisation.podman;
|
cfg = config.virtualisation.podman;
|
||||||
toml = pkgs.formats.toml { };
|
toml = pkgs.formats.toml { };
|
||||||
|
nvidia-docker = pkgs.nvidia-docker.override { containerRuntimePath = "${pkgs.runc}/bin/runc"; };
|
||||||
|
|
||||||
inherit (lib) mkOption types;
|
inherit (lib) mkOption types;
|
||||||
|
|
||||||
|
@ -99,8 +100,8 @@ in
|
||||||
containersConf.extraConfig = lib.optionalString cfg.enableNvidia
|
containersConf.extraConfig = lib.optionalString cfg.enableNvidia
|
||||||
(builtins.readFile (toml.generate "podman.nvidia.containers.conf" {
|
(builtins.readFile (toml.generate "podman.nvidia.containers.conf" {
|
||||||
engine = {
|
engine = {
|
||||||
conmon_env_vars = [ "PATH=${lib.makeBinPath [ pkgs.nvidia-docker ]}" ];
|
conmon_env_vars = [ "PATH=${lib.makeBinPath [ nvidia-docker ]}" ];
|
||||||
runtimes.nvidia = [ "${pkgs.nvidia-docker}/bin/nvidia-container-runtime" ];
|
runtimes.nvidia = [ "${nvidia-docker}/bin/nvidia-container-runtime" ];
|
||||||
};
|
};
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
@ -117,7 +118,7 @@ in
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
(lib.mkIf cfg.enableNvidia {
|
(lib.mkIf cfg.enableNvidia {
|
||||||
environment.etc."nvidia-container-runtime/config.toml".source = "${pkgs.nvidia-docker}/etc/podman-config.toml";
|
environment.etc."nvidia-container-runtime/config.toml".source = "${nvidia-docker}/etc/podman-config.toml";
|
||||||
})
|
})
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,20 @@
|
||||||
, makeWrapper
|
, makeWrapper
|
||||||
, buildGoModule
|
, buildGoModule
|
||||||
, buildGoPackage
|
, buildGoPackage
|
||||||
, git
|
|
||||||
, glibc
|
, glibc
|
||||||
|
, docker
|
||||||
|
, linkFarm
|
||||||
|
, containerRuntimePath ? "${docker}/libexec/docker/runc"
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with lib; let
|
with lib; let
|
||||||
libnvidia-container = callPackage ./libnvc.nix { };
|
libnvidia-container = callPackage ./libnvc.nix { };
|
||||||
|
isolatedContainerRuntimePath = linkFarm "isolated_container_runtime_path" [
|
||||||
|
{
|
||||||
|
name = "runc";
|
||||||
|
path = containerRuntimePath;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
nvidia-container-runtime = buildGoPackage rec {
|
nvidia-container-runtime = buildGoPackage rec {
|
||||||
pname = "nvidia-container-toolkit";
|
pname = "nvidia-container-toolkit";
|
||||||
|
@ -74,8 +82,13 @@ stdenv.mkDerivation rec {
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/{bin,etc}
|
mkdir -p $out/{bin,etc}
|
||||||
cp -r bin $out
|
cp -r bin $out
|
||||||
|
|
||||||
wrapProgram $out/bin/nvidia-container-cli \
|
wrapProgram $out/bin/nvidia-container-cli \
|
||||||
--prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:/run/opengl-driver-32/lib
|
--prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:/run/opengl-driver-32/lib
|
||||||
|
|
||||||
|
# nvidia-container-runtime invokes docker-runc or runc if that isn't available on PATH
|
||||||
|
wrapProgram $out/bin/nvidia-container-runtime --prefix PATH : ${isolatedContainerRuntimePath}
|
||||||
|
|
||||||
cp ${./config.toml} $out/etc/config.toml
|
cp ${./config.toml} $out/etc/config.toml
|
||||||
substituteInPlace $out/etc/config.toml --subst-var-by glibcbin ${lib.getBin glibc}
|
substituteInPlace $out/etc/config.toml --subst-var-by glibcbin ${lib.getBin glibc}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue