nvidia-docker: split out nvidia-container-runtime into separate drv

+68 -30
+68
pkgs/applications/virtualization/nvidia-container-runtime/default.nix
···
··· 1 + { lib 2 + , glibc 3 + , fetchFromGitHub 4 + , makeWrapper 5 + , buildGoPackage 6 + , linkFarm 7 + , writeShellScript 8 + , containerRuntimePath 9 + , configTemplate 10 + }: 11 + let 12 + isolatedContainerRuntimePath = linkFarm "isolated_container_runtime_path" [ 13 + { 14 + name = "runc"; 15 + path = containerRuntimePath; 16 + } 17 + ]; 18 + warnIfXdgConfigHomeIsSet = writeShellScript "warn_if_xdg_config_home_is_set" '' 19 + set -eo pipefail 20 + 21 + if [ -n "$XDG_CONFIG_HOME" ]; then 22 + echo >&2 "$(tput setaf 3)warning: \$XDG_CONFIG_HOME=$XDG_CONFIG_HOME$(tput sgr 0)" 23 + fi 24 + ''; 25 + in 26 + buildGoPackage rec { 27 + pname = "nvidia-container-runtime"; 28 + version = "3.4.0"; 29 + src = fetchFromGitHub { 30 + owner = "NVIDIA"; 31 + repo = pname; 32 + rev = "v${version}"; 33 + sha256 = "095mks0r4079vawi50pk4zb5jk0g6s9idg2s1w55a0d27jkknldr"; 34 + }; 35 + goPackagePath = "github.com/${pname}/src"; 36 + buildFlagsArray = [ "-ldflags=" "-s -w" ]; 37 + nativeBuildInputs = [ makeWrapper ]; 38 + postInstall = '' 39 + mv $out/bin/{src,nvidia-container-runtime} 40 + mkdir -p $out/etc/nvidia-container-runtime 41 + 42 + # nvidia-container-runtime invokes docker-runc or runc if that isn't 43 + # available on PATH. 44 + # 45 + # Also set XDG_CONFIG_HOME if it isn't already to allow overriding 46 + # configuration. This in turn allows users to have the nvidia container 47 + # runtime enabled for any number of higher level runtimes like docker and 48 + # podman, i.e., there's no need to have mutually exclusivity on what high 49 + # level runtime can enable the nvidia runtime because each high level 50 + # runtime has its own config.toml file. 51 + wrapProgram $out/bin/nvidia-container-runtime \ 52 + --run "${warnIfXdgConfigHomeIsSet}" \ 53 + --prefix PATH : ${isolatedContainerRuntimePath} \ 54 + --set-default XDG_CONFIG_HOME $out/etc 55 + 56 + cp ${configTemplate} $out/etc/nvidia-container-runtime/config.toml 57 + 58 + substituteInPlace $out/etc/nvidia-container-runtime/config.toml \ 59 + --subst-var-by glibcbin ${lib.getBin glibc} 60 + ''; 61 + meta = with lib; { 62 + homepage = "https://github.com/NVIDIA/nvidia-container-runtime"; 63 + description = "NVIDIA container runtime"; 64 + license = licenses.bsd3; 65 + platforms = platforms.linux; 66 + maintainers = with maintainers; [ cpcloud ]; 67 + }; 68 + }
-30
pkgs/applications/virtualization/nvidia-docker/default.nix
··· 9 , glibc 10 , docker 11 , linkFarm 12 - , containerRuntimePath ? "${docker}/libexec/docker/runc" 13 }: 14 15 with lib; let 16 - isolatedContainerRuntimePath = linkFarm "isolated_container_runtime_path" [ 17 - { 18 - name = "runc"; 19 - path = containerRuntimePath; 20 - } 21 - ]; 22 - 23 - nvidia-container-runtime = buildGoPackage rec { 24 - pname = "nvidia-container-runtime"; 25 - version = "3.4.0"; 26 - src = fetchFromGitHub { 27 - owner = "NVIDIA"; 28 - repo = "nvidia-container-runtime"; 29 - rev = "v${version}"; 30 - sha256 = "095mks0r4079vawi50pk4zb5jk0g6s9idg2s1w55a0d27jkknldr"; 31 - }; 32 - goPackagePath = "github.com/nvidia-container-runtime/src"; 33 - buildFlagsArray = [ "-ldflags=" "-s -w" ]; 34 - postInstall = '' 35 - mv $out/bin/{src,nvidia-container-runtime} 36 - ''; 37 - }; 38 - 39 nvidia-container-toolkit = buildGoModule rec { 40 pname = "nvidia-container-toolkit"; 41 version = "1.3.0"; ··· 65 sha256 = "1n1k7fnimky67s12p2ycaq9mgk245fchq62vgd7bl3bzfcbg0z4h"; 66 }; 67 68 - nativeBuildInputs = [ makeWrapper ]; 69 - 70 buildPhase = '' 71 mkdir bin 72 ··· 74 substituteInPlace bin/nvidia-docker --subst-var-by VERSION ${version} 75 76 cp ${nvidia-container-toolkit}/bin/nvidia-container-{toolkit,runtime-hook} bin 77 - cp ${nvidia-container-runtime}/bin/nvidia-container-runtime bin 78 ''; 79 80 installPhase = '' 81 mkdir -p $out/{bin,etc} 82 cp -r bin $out 83 - 84 - # nvidia-container-runtime invokes docker-runc or runc if that isn't available on PATH 85 - wrapProgram $out/bin/nvidia-container-runtime --prefix PATH : ${isolatedContainerRuntimePath} 86 87 cp ${./config.toml} $out/etc/config.toml 88 substituteInPlace $out/etc/config.toml --subst-var-by glibcbin ${lib.getBin glibc}
··· 9 , glibc 10 , docker 11 , linkFarm 12 }: 13 14 with lib; let 15 nvidia-container-toolkit = buildGoModule rec { 16 pname = "nvidia-container-toolkit"; 17 version = "1.3.0"; ··· 41 sha256 = "1n1k7fnimky67s12p2ycaq9mgk245fchq62vgd7bl3bzfcbg0z4h"; 42 }; 43 44 buildPhase = '' 45 mkdir bin 46 ··· 48 substituteInPlace bin/nvidia-docker --subst-var-by VERSION ${version} 49 50 cp ${nvidia-container-toolkit}/bin/nvidia-container-{toolkit,runtime-hook} bin 51 ''; 52 53 installPhase = '' 54 mkdir -p $out/{bin,etc} 55 cp -r bin $out 56 57 cp ${./config.toml} $out/etc/config.toml 58 substituteInPlace $out/etc/config.toml --subst-var-by glibcbin ${lib.getBin glibc}