diff options
author | Phillip Cloud <cloud@standard.ai> | 2021-01-09 09:39:16 -0500 |
---|---|---|
committer | Phillip Cloud <cloud@standard.ai> | 2021-01-10 08:54:37 -0500 |
commit | 610ec202dcea5a06baeec789ff625b20a663a114 (patch) | |
tree | 84e2fbabc43627e69f9eaee6fd9d9b5cc8b63382 /pkgs/applications/virtualization/nvidia-container-runtime | |
parent | 27cd42fd6d4f61c0980455b975a4d5c037a463dd (diff) |
nvidia-docker: split out nvidia-container-runtime into separate drv
Diffstat (limited to 'pkgs/applications/virtualization/nvidia-container-runtime')
-rw-r--r-- | pkgs/applications/virtualization/nvidia-container-runtime/default.nix | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/pkgs/applications/virtualization/nvidia-container-runtime/default.nix b/pkgs/applications/virtualization/nvidia-container-runtime/default.nix new file mode 100644 index 000000000000..66d133db63a5 --- /dev/null +++ b/pkgs/applications/virtualization/nvidia-container-runtime/default.nix @@ -0,0 +1,68 @@ +{ lib +, glibc +, fetchFromGitHub +, makeWrapper +, buildGoPackage +, linkFarm +, writeShellScript +, containerRuntimePath +, configTemplate +}: +let + isolatedContainerRuntimePath = linkFarm "isolated_container_runtime_path" [ + { + name = "runc"; + path = containerRuntimePath; + } + ]; + warnIfXdgConfigHomeIsSet = writeShellScript "warn_if_xdg_config_home_is_set" '' + set -eo pipefail + + if [ -n "$XDG_CONFIG_HOME" ]; then + echo >&2 "$(tput setaf 3)warning: \$XDG_CONFIG_HOME=$XDG_CONFIG_HOME$(tput sgr 0)" + fi + ''; +in +buildGoPackage rec { + pname = "nvidia-container-runtime"; + version = "3.4.0"; + src = fetchFromGitHub { + owner = "NVIDIA"; + repo = pname; + rev = "v${version}"; + sha256 = "095mks0r4079vawi50pk4zb5jk0g6s9idg2s1w55a0d27jkknldr"; + }; + goPackagePath = "github.com/${pname}/src"; + buildFlagsArray = [ "-ldflags=" "-s -w" ]; + nativeBuildInputs = [ makeWrapper ]; + postInstall = '' + mv $out/bin/{src,nvidia-container-runtime} + mkdir -p $out/etc/nvidia-container-runtime + + # nvidia-container-runtime invokes docker-runc or runc if that isn't + # available on PATH. + # + # Also set XDG_CONFIG_HOME if it isn't already to allow overriding + # configuration. This in turn allows users to have the nvidia container + # runtime enabled for any number of higher level runtimes like docker and + # podman, i.e., there's no need to have mutually exclusivity on what high + # level runtime can enable the nvidia runtime because each high level + # runtime has its own config.toml file. + wrapProgram $out/bin/nvidia-container-runtime \ + --run "${warnIfXdgConfigHomeIsSet}" \ + --prefix PATH : ${isolatedContainerRuntimePath} \ + --set-default XDG_CONFIG_HOME $out/etc + + cp ${configTemplate} $out/etc/nvidia-container-runtime/config.toml + + substituteInPlace $out/etc/nvidia-container-runtime/config.toml \ + --subst-var-by glibcbin ${lib.getBin glibc} + ''; + meta = with lib; { + homepage = "https://github.com/NVIDIA/nvidia-container-runtime"; + description = "NVIDIA container runtime"; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = with maintainers; [ cpcloud ]; + }; +} |