From b578c282172626ffc848d12622cdc81ab5aaa89e Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:34:24 -0500 Subject: [PATCH 01/22] nvidia-docker: split out libnvidia-container into separate drv --- .../avoid-static-libtirpc-build.patch | 0 .../libnvc.nix => libnvidia-container/default.nix} | 12 ++++++++++-- .../libnvc-ldconfig-and-path-fixes.patch | 0 .../modprobe.patch | 0 .../virtualization/nvidia-docker/default.nix | 5 ----- 5 files changed, 10 insertions(+), 7 deletions(-) rename pkgs/applications/virtualization/{nvidia-docker => libnvidia-container}/avoid-static-libtirpc-build.patch (100%) rename pkgs/applications/virtualization/{nvidia-docker/libnvc.nix => libnvidia-container/default.nix} (87%) rename pkgs/applications/virtualization/{nvidia-docker => libnvidia-container}/libnvc-ldconfig-and-path-fixes.patch (100%) rename pkgs/applications/virtualization/{nvidia-docker => libnvidia-container}/modprobe.patch (100%) diff --git a/pkgs/applications/virtualization/nvidia-docker/avoid-static-libtirpc-build.patch b/pkgs/applications/virtualization/libnvidia-container/avoid-static-libtirpc-build.patch similarity index 100% rename from pkgs/applications/virtualization/nvidia-docker/avoid-static-libtirpc-build.patch rename to pkgs/applications/virtualization/libnvidia-container/avoid-static-libtirpc-build.patch diff --git a/pkgs/applications/virtualization/nvidia-docker/libnvc.nix b/pkgs/applications/virtualization/libnvidia-container/default.nix similarity index 87% rename from pkgs/applications/virtualization/nvidia-docker/libnvc.nix rename to pkgs/applications/virtualization/libnvidia-container/default.nix index 95d66582618..f57863cba11 100644 --- a/pkgs/applications/virtualization/nvidia-docker/libnvc.nix +++ b/pkgs/applications/virtualization/libnvidia-container/default.nix @@ -7,6 +7,8 @@ , libseccomp , rpcsvc-proto , libtirpc +, makeWrapper + }: let modp-ver = "450.57"; @@ -23,7 +25,7 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "NVIDIA"; - repo = "libnvidia-container"; + repo = pname; rev = "v${version}"; sha256 = "0j6b8z9x9hrrs4xp11zyjjd7kyl7fzcicpiis8k1qb1q2afnqsrq"; }; @@ -64,10 +66,15 @@ stdenv.mkDerivation rec { popd ''; + postInstall = '' + wrapProgram $out/bin/nvidia-container-cli \ + --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:/run/opengl-driver-32/lib + ''; + NIX_CFLAGS_COMPILE = [ "-I${libtirpc.dev}/include/tirpc" ]; NIX_LDFLAGS = [ "-L${libtirpc.dev}/lib" "-ltirpc" ]; - nativeBuildInputs = [ pkgconfig rpcsvc-proto ]; + nativeBuildInputs = [ pkgconfig rpcsvc-proto makeWrapper ]; buildInputs = [ libelf libcap libseccomp libtirpc ]; @@ -76,5 +83,6 @@ stdenv.mkDerivation rec { description = "NVIDIA container runtime library"; license = licenses.bsd3; platforms = platforms.linux; + maintainers = with maintainers; [ cpcloud ]; }; } diff --git a/pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch b/pkgs/applications/virtualization/libnvidia-container/libnvc-ldconfig-and-path-fixes.patch similarity index 100% rename from pkgs/applications/virtualization/nvidia-docker/libnvc-ldconfig-and-path-fixes.patch rename to pkgs/applications/virtualization/libnvidia-container/libnvc-ldconfig-and-path-fixes.patch diff --git a/pkgs/applications/virtualization/nvidia-docker/modprobe.patch b/pkgs/applications/virtualization/libnvidia-container/modprobe.patch similarity index 100% rename from pkgs/applications/virtualization/nvidia-docker/modprobe.patch rename to pkgs/applications/virtualization/libnvidia-container/modprobe.patch diff --git a/pkgs/applications/virtualization/nvidia-docker/default.nix b/pkgs/applications/virtualization/nvidia-docker/default.nix index 0df2efebd82..ac2b9db0c5c 100644 --- a/pkgs/applications/virtualization/nvidia-docker/default.nix +++ b/pkgs/applications/virtualization/nvidia-docker/default.nix @@ -13,7 +13,6 @@ }: with lib; let - libnvidia-container = callPackage ./libnvc.nix { }; isolatedContainerRuntimePath = linkFarm "isolated_container_runtime_path" [ { name = "runc"; @@ -74,7 +73,6 @@ stdenv.mkDerivation rec { cp nvidia-docker bin substituteInPlace bin/nvidia-docker --subst-var-by VERSION ${version} - cp ${libnvidia-container}/bin/nvidia-container-cli bin cp ${nvidia-container-toolkit}/bin/nvidia-container-{toolkit,runtime-hook} bin cp ${nvidia-container-runtime}/bin/nvidia-container-runtime bin ''; @@ -83,9 +81,6 @@ stdenv.mkDerivation rec { mkdir -p $out/{bin,etc} cp -r bin $out - wrapProgram $out/bin/nvidia-container-cli \ - --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} From 27cd42fd6d4f61c0980455b975a4d5c037a463dd Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:35:06 -0500 Subject: [PATCH 02/22] nvidia-docker: use pname for repo attribute --- pkgs/applications/virtualization/nvidia-docker/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/virtualization/nvidia-docker/default.nix b/pkgs/applications/virtualization/nvidia-docker/default.nix index ac2b9db0c5c..c8c08590622 100644 --- a/pkgs/applications/virtualization/nvidia-docker/default.nix +++ b/pkgs/applications/virtualization/nvidia-docker/default.nix @@ -60,7 +60,7 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "NVIDIA"; - repo = "nvidia-docker"; + repo = pname; rev = "v${version}"; sha256 = "1n1k7fnimky67s12p2ycaq9mgk245fchq62vgd7bl3bzfcbg0z4h"; }; From 610ec202dcea5a06baeec789ff625b20a663a114 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:39:16 -0500 Subject: [PATCH 03/22] nvidia-docker: split out nvidia-container-runtime into separate drv --- .../nvidia-container-runtime/default.nix | 68 +++++++++++++++++++ .../virtualization/nvidia-docker/default.nix | 30 -------- 2 files changed, 68 insertions(+), 30 deletions(-) create mode 100644 pkgs/applications/virtualization/nvidia-container-runtime/default.nix 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 00000000000..66d133db63a --- /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 ]; + }; +} diff --git a/pkgs/applications/virtualization/nvidia-docker/default.nix b/pkgs/applications/virtualization/nvidia-docker/default.nix index c8c08590622..2a4d8db7e4b 100644 --- a/pkgs/applications/virtualization/nvidia-docker/default.nix +++ b/pkgs/applications/virtualization/nvidia-docker/default.nix @@ -9,33 +9,9 @@ , glibc , docker , linkFarm -, containerRuntimePath ? "${docker}/libexec/docker/runc" }: with lib; let - isolatedContainerRuntimePath = linkFarm "isolated_container_runtime_path" [ - { - name = "runc"; - path = containerRuntimePath; - } - ]; - - nvidia-container-runtime = buildGoPackage rec { - pname = "nvidia-container-runtime"; - version = "3.4.0"; - src = fetchFromGitHub { - owner = "NVIDIA"; - repo = "nvidia-container-runtime"; - rev = "v${version}"; - sha256 = "095mks0r4079vawi50pk4zb5jk0g6s9idg2s1w55a0d27jkknldr"; - }; - goPackagePath = "github.com/nvidia-container-runtime/src"; - buildFlagsArray = [ "-ldflags=" "-s -w" ]; - postInstall = '' - mv $out/bin/{src,nvidia-container-runtime} - ''; - }; - nvidia-container-toolkit = buildGoModule rec { pname = "nvidia-container-toolkit"; version = "1.3.0"; @@ -65,8 +41,6 @@ stdenv.mkDerivation rec { sha256 = "1n1k7fnimky67s12p2ycaq9mgk245fchq62vgd7bl3bzfcbg0z4h"; }; - nativeBuildInputs = [ makeWrapper ]; - buildPhase = '' mkdir bin @@ -74,16 +48,12 @@ stdenv.mkDerivation rec { substituteInPlace bin/nvidia-docker --subst-var-by VERSION ${version} cp ${nvidia-container-toolkit}/bin/nvidia-container-{toolkit,runtime-hook} bin - cp ${nvidia-container-runtime}/bin/nvidia-container-runtime bin ''; installPhase = '' mkdir -p $out/{bin,etc} cp -r bin $out - # 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 substituteInPlace $out/etc/config.toml --subst-var-by glibcbin ${lib.getBin glibc} From e67c679649a2f03baf161c3c89a01611045546ed Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:40:45 -0500 Subject: [PATCH 04/22] nvidia-docker: split out nvidia-container-toolkit into separate drv --- .../nvidia-container-toolkit/default.nix | 41 +++++++++++++++++++ .../virtualization/nvidia-docker/default.nix | 19 --------- 2 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 pkgs/applications/virtualization/nvidia-container-toolkit/default.nix diff --git a/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix new file mode 100644 index 00000000000..cb562993565 --- /dev/null +++ b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix @@ -0,0 +1,41 @@ +{ lib +, fetchFromGitHub +, buildGoModule +, callPackage +, makeWrapper +, containerRuntimePath +, configTemplate +}: +let + nvidia-container-runtime = callPackage ../nvidia-container-runtime { + inherit containerRuntimePath configTemplate; + }; +in +buildGoModule rec { + pname = "nvidia-container-toolkit"; + version = "1.3.0"; + src = fetchFromGitHub { + owner = "NVIDIA"; + repo = pname; + rev = "v${version}"; + sha256 = "04284bhgx4j55vg9ifvbji2bvmfjfy3h1lq7q356ffgw3yr9n0hn"; + }; + vendorSha256 = "17zpiyvf22skfcisflsp6pn56y6a793jcx89kw976fq2x5br1bz7"; + buildFlagsArray = [ "-ldflags=" "-s -w" ]; + nativeBuildInputs = [ makeWrapper ]; + postInstall = '' + mv $out/bin/{pkg,${pname}} + ln -s $out/bin/nvidia-container-{toolkit,runtime-hook} + + wrapProgram $out/bin/nvidia-container-toolkit \ + --add-flags "-config ${nvidia-container-runtime}/etc/nvidia-container-runtime/config.toml" + ''; + + meta = with lib; { + homepage = "https://github.com/NVIDIA/nvidia-container-toolkit"; + description = "NVIDIA container runtime hook"; + license = licenses.bsd3; + platforms = platforms.linux; + maintainers = with maintainers; [ cpcloud ]; + }; +} diff --git a/pkgs/applications/virtualization/nvidia-docker/default.nix b/pkgs/applications/virtualization/nvidia-docker/default.nix index 2a4d8db7e4b..e0425ec32a2 100644 --- a/pkgs/applications/virtualization/nvidia-docker/default.nix +++ b/pkgs/applications/virtualization/nvidia-docker/default.nix @@ -12,23 +12,6 @@ }: with lib; let - nvidia-container-toolkit = buildGoModule rec { - pname = "nvidia-container-toolkit"; - version = "1.3.0"; - src = fetchFromGitHub { - owner = "NVIDIA"; - repo = "nvidia-container-toolkit"; - rev = "v${version}"; - sha256 = "04284bhgx4j55vg9ifvbji2bvmfjfy3h1lq7q356ffgw3yr9n0hn"; - }; - vendorSha256 = "17zpiyvf22skfcisflsp6pn56y6a793jcx89kw976fq2x5br1bz7"; - buildFlagsArray = [ "-ldflags=" "-s -w" ]; - postInstall = '' - mv $out/bin/{pkg,${pname}} - cp $out/bin/{${pname},nvidia-container-runtime-hook} - ''; - }; - in stdenv.mkDerivation rec { pname = "nvidia-docker"; @@ -46,8 +29,6 @@ stdenv.mkDerivation rec { cp nvidia-docker bin substituteInPlace bin/nvidia-docker --subst-var-by VERSION ${version} - - cp ${nvidia-container-toolkit}/bin/nvidia-container-{toolkit,runtime-hook} bin ''; installPhase = '' From 91b47ae43c44138734b4ffacad6f9eb84506fe8b Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:43:12 -0500 Subject: [PATCH 05/22] nvidia-docker: podman-config.toml -> nvidia-podman/config.toml --- .../podman-config.toml => nvidia-podman/config.toml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pkgs/applications/virtualization/{nvidia-docker/podman-config.toml => nvidia-podman/config.toml} (100%) diff --git a/pkgs/applications/virtualization/nvidia-docker/podman-config.toml b/pkgs/applications/virtualization/nvidia-podman/config.toml similarity index 100% rename from pkgs/applications/virtualization/nvidia-docker/podman-config.toml rename to pkgs/applications/virtualization/nvidia-podman/config.toml From 8f1a64953ebb0d8cb53d20cc74bea2a894a98a2b Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:45:10 -0500 Subject: [PATCH 06/22] nixos/docker: remove nvidia-container-runtime/config.toml creation from module --- nixos/modules/virtualisation/docker.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/nixos/modules/virtualisation/docker.nix b/nixos/modules/virtualisation/docker.nix index ec257801b33..3efb13c2912 100644 --- a/nixos/modules/virtualisation/docker.nix +++ b/nixos/modules/virtualisation/docker.nix @@ -215,9 +215,6 @@ in message = "Option enableNvidia requires 32bit support libraries"; }]; } - (mkIf cfg.enableNvidia { - environment.etc."nvidia-container-runtime/config.toml".source = "${pkgs.nvidia-docker}/etc/config.toml"; - }) ]); imports = [ From 50f70cb8ed78342515397879f635de07deb06b28 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:45:25 -0500 Subject: [PATCH 07/22] nixos/podman: remove nvidia-container-runtime/config.toml creation from module --- nixos/modules/virtualisation/podman.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/nixos/modules/virtualisation/podman.nix b/nixos/modules/virtualisation/podman.nix index 36c0ca8dfea..b61b4197b8c 100644 --- a/nixos/modules/virtualisation/podman.nix +++ b/nixos/modules/virtualisation/podman.nix @@ -117,8 +117,5 @@ in } ]; } - (lib.mkIf cfg.enableNvidia { - environment.etc."nvidia-container-runtime/config.toml".source = "${nvidia-docker}/etc/podman-config.toml"; - }) ]); } From 3e57cbdd3ca2a9a0e6b23478bc90c2e6991f7011 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:48:07 -0500 Subject: [PATCH 08/22] nixos/podman: remove assertion that docker and podman nvidia runtimes cannot both be enabled --- nixos/modules/virtualisation/podman.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/nixos/modules/virtualisation/podman.nix b/nixos/modules/virtualisation/podman.nix index b61b4197b8c..e1ccc8c34ce 100644 --- a/nixos/modules/virtualisation/podman.nix +++ b/nixos/modules/virtualisation/podman.nix @@ -111,10 +111,6 @@ in assertion = cfg.dockerCompat -> !config.virtualisation.docker.enable; message = "Option dockerCompat conflicts with docker"; } - { - assertion = cfg.enableNvidia -> !config.virtualisation.docker.enableNvidia; - message = "Option enableNvidia conflicts with docker.enableNvidia"; - } ]; } ]); From 6b5b64173f2a40695ed1129f104b2a5e11ddd0f0 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:49:15 -0500 Subject: [PATCH 09/22] nvidia-docker: no longer perform templating of container runtime config files --- .../virtualization/nvidia-docker/default.nix | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/pkgs/applications/virtualization/nvidia-docker/default.nix b/pkgs/applications/virtualization/nvidia-docker/default.nix index e0425ec32a2..50c864fdc47 100644 --- a/pkgs/applications/virtualization/nvidia-docker/default.nix +++ b/pkgs/applications/virtualization/nvidia-docker/default.nix @@ -32,14 +32,8 @@ stdenv.mkDerivation rec { ''; installPhase = '' - mkdir -p $out/{bin,etc} - cp -r bin $out - - cp ${./config.toml} $out/etc/config.toml - substituteInPlace $out/etc/config.toml --subst-var-by glibcbin ${lib.getBin glibc} - - cp ${./podman-config.toml} $out/etc/podman-config.toml - substituteInPlace $out/etc/podman-config.toml --subst-var-by glibcbin ${lib.getBin glibc} + mkdir -p $out/bin + cp bin/nvidia-docker $out/bin ''; meta = { From e94a0228c5bac3c82faaf97aaad6384e5ba9c668 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:49:46 -0500 Subject: [PATCH 10/22] nvidia-docker: clean up drv inputs --- .../virtualization/nvidia-docker/default.nix | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/pkgs/applications/virtualization/nvidia-docker/default.nix b/pkgs/applications/virtualization/nvidia-docker/default.nix index 50c864fdc47..a17839fabb5 100644 --- a/pkgs/applications/virtualization/nvidia-docker/default.nix +++ b/pkgs/applications/virtualization/nvidia-docker/default.nix @@ -1,18 +1,4 @@ -{ stdenv -, lib -, fetchFromGitHub -, fetchpatch -, callPackage -, makeWrapper -, buildGoModule -, buildGoPackage -, glibc -, docker -, linkFarm -}: - -with lib; let -in +{ stdenv, lib, fetchFromGitHub, callPackage }: stdenv.mkDerivation rec { pname = "nvidia-docker"; version = "2.5.0"; From ca2aa77d7bd8695d3bd3b763d354b5c1ca5dcc36 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:50:59 -0500 Subject: [PATCH 11/22] nixpkgs: use symlinkJoin to share container runtime config for runtimes that support nvidia GPUs --- pkgs/top-level/all-packages.nix | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 42b6c9d6026..d90cabd1f03 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15415,7 +15415,32 @@ in nv-codec-headers = callPackage ../development/libraries/nv-codec-headers { }; - nvidia-docker = callPackage ../applications/virtualization/nvidia-docker { }; + mkNvidiaContainerPkg = { name, containerRuntimePath, configTemplate, additionalPaths ? [] }: + symlinkJoin { + name = "nvidia-containers-${name}"; + paths = [ + (callPackage ../applications/virtualization/libnvidia-container { }) + (callPackage ../applications/virtualization/nvidia-container-runtime { + inherit containerRuntimePath configTemplate; + }) + (callPackage ../applications/virtualization/nvidia-container-toolkit { + inherit containerRuntimePath configTemplate; + }) + ] ++ additionalPaths; + }; + + nvidia-docker = mkNvidiaContainerPkg { + name = "docker"; + containerRuntimePath = "${docker}/libexec/docker/runc"; + configTemplate = ../applications/virtualization/nvidia-docker/config.toml; + additionalPaths = [ (callPackage ../applications/virtualization/nvidia-docker { }) ]; + }; + + nvidia-podman = mkNvidiaContainerPkg { + name = "podman"; + containerRuntimePath = "${runc}/bin/runc"; + configTemplate = ../applications/virtualization/nvidia-podman/config.toml; + }; nvidia-texture-tools = callPackage ../development/libraries/nvidia-texture-tools { }; From a873cbc218187f5b6e0f6c6a6111927f6c327f17 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 09:52:32 -0500 Subject: [PATCH 12/22] nixos/podman: use shared config drvs to populate podman module --- nixos/modules/virtualisation/podman.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nixos/modules/virtualisation/podman.nix b/nixos/modules/virtualisation/podman.nix index e1ccc8c34ce..98da5a096d9 100644 --- a/nixos/modules/virtualisation/podman.nix +++ b/nixos/modules/virtualisation/podman.nix @@ -2,7 +2,6 @@ let cfg = config.virtualisation.podman; toml = pkgs.formats.toml { }; - nvidia-docker = pkgs.nvidia-docker.override { containerRuntimePath = "${pkgs.runc}/bin/runc"; }; inherit (lib) mkOption types; @@ -100,8 +99,8 @@ in containersConf.extraConfig = lib.optionalString cfg.enableNvidia (builtins.readFile (toml.generate "podman.nvidia.containers.conf" { engine = { - conmon_env_vars = [ "PATH=${lib.makeBinPath [ nvidia-docker ]}" ]; - runtimes.nvidia = [ "${nvidia-docker}/bin/nvidia-container-runtime" ]; + conmon_env_vars = [ "PATH=${lib.makeBinPath [ pkgs.nvidia-podman ]}" ]; + runtimes.nvidia = [ "${pkgs.nvidia-podman}/bin/nvidia-container-runtime" ]; }; })); }; From d93754bb40c559435ce18c8c21ee8e8fcbd4330e Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 10:17:26 -0500 Subject: [PATCH 13/22] nvidia-docker: fix lib access --- pkgs/applications/virtualization/nvidia-docker/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/virtualization/nvidia-docker/default.nix b/pkgs/applications/virtualization/nvidia-docker/default.nix index a17839fabb5..07dfc3fdb6d 100644 --- a/pkgs/applications/virtualization/nvidia-docker/default.nix +++ b/pkgs/applications/virtualization/nvidia-docker/default.nix @@ -22,11 +22,11 @@ stdenv.mkDerivation rec { cp bin/nvidia-docker $out/bin ''; - meta = { + meta = with lib; { homepage = "https://github.com/NVIDIA/nvidia-docker"; description = "NVIDIA container runtime for Docker"; license = licenses.bsd3; platforms = platforms.linux; - maintainers = with lib.maintainers; [ cpcloud ]; + maintainers = with maintainers; [ cpcloud ]; }; } From b0b92e598d86dd03620128b4fb31b2dd5b39aed2 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sat, 9 Jan 2021 15:36:41 -0500 Subject: [PATCH 14/22] libnvidia-container: remove line break --- pkgs/applications/virtualization/libnvidia-container/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/applications/virtualization/libnvidia-container/default.nix b/pkgs/applications/virtualization/libnvidia-container/default.nix index f57863cba11..15ded8b671d 100644 --- a/pkgs/applications/virtualization/libnvidia-container/default.nix +++ b/pkgs/applications/virtualization/libnvidia-container/default.nix @@ -8,7 +8,6 @@ , rpcsvc-proto , libtirpc , makeWrapper - }: let modp-ver = "450.57"; From bc43141b48a9b1fa9ade937a6d557c94ed24c244 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sun, 10 Jan 2021 07:58:25 -0500 Subject: [PATCH 15/22] nvidia-container-runtime: format --- .../virtualization/nvidia-container-runtime/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/applications/virtualization/nvidia-container-runtime/default.nix b/pkgs/applications/virtualization/nvidia-container-runtime/default.nix index 66d133db63a..9fe1920789a 100644 --- a/pkgs/applications/virtualization/nvidia-container-runtime/default.nix +++ b/pkgs/applications/virtualization/nvidia-container-runtime/default.nix @@ -26,15 +26,18 @@ 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 @@ -58,6 +61,7 @@ buildGoPackage rec { 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"; From f91f9eacd676ac5b54e8e2858bcbc0e3c39be9f4 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sun, 10 Jan 2021 07:58:41 -0500 Subject: [PATCH 16/22] nvidia-container-toolkit: format --- .../virtualization/nvidia-container-toolkit/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix index cb562993565..fd6edc64a0f 100644 --- a/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix +++ b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix @@ -14,15 +14,18 @@ in buildGoModule rec { pname = "nvidia-container-toolkit"; version = "1.3.0"; + src = fetchFromGitHub { owner = "NVIDIA"; repo = pname; rev = "v${version}"; sha256 = "04284bhgx4j55vg9ifvbji2bvmfjfy3h1lq7q356ffgw3yr9n0hn"; }; + vendorSha256 = "17zpiyvf22skfcisflsp6pn56y6a793jcx89kw976fq2x5br1bz7"; buildFlagsArray = [ "-ldflags=" "-s -w" ]; nativeBuildInputs = [ makeWrapper ]; + postInstall = '' mv $out/bin/{pkg,${pname}} ln -s $out/bin/nvidia-container-{toolkit,runtime-hook} From 8169d5c64451122b4867b5457a1d628354162fbe Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sun, 10 Jan 2021 08:09:36 -0500 Subject: [PATCH 17/22] nvidia-container-toolkit: pass nvidia-container-runtime into drv --- .../nvidia-container-toolkit/default.nix | 8 +------- pkgs/top-level/all-packages.nix | 12 +++++++----- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix index fd6edc64a0f..1ef9603195d 100644 --- a/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix +++ b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix @@ -3,14 +3,8 @@ , buildGoModule , callPackage , makeWrapper -, containerRuntimePath -, configTemplate +, nvidia-container-runtime }: -let - nvidia-container-runtime = callPackage ../nvidia-container-runtime { - inherit containerRuntimePath configTemplate; - }; -in buildGoModule rec { pname = "nvidia-container-toolkit"; version = "1.3.0"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d90cabd1f03..ff32fe78593 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15416,15 +15416,17 @@ in nv-codec-headers = callPackage ../development/libraries/nv-codec-headers { }; mkNvidiaContainerPkg = { name, containerRuntimePath, configTemplate, additionalPaths ? [] }: - symlinkJoin { + let + nvidia-container-runtime = callPackage ../applications/virtualization/nvidia-container-runtime { + inherit containerRuntimePath configTemplate; + }; + in symlinkJoin { name = "nvidia-containers-${name}"; paths = [ (callPackage ../applications/virtualization/libnvidia-container { }) - (callPackage ../applications/virtualization/nvidia-container-runtime { - inherit containerRuntimePath configTemplate; - }) + nvidia-container-runtime (callPackage ../applications/virtualization/nvidia-container-toolkit { - inherit containerRuntimePath configTemplate; + inherit nvidia-container-runtime; }) ] ++ additionalPaths; }; From 7eed27754c278d2f671fe6e41705780acdc959a5 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sun, 10 Jan 2021 08:52:23 -0500 Subject: [PATCH 18/22] libnvidia-container: fix license --- .../applications/virtualization/libnvidia-container/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/virtualization/libnvidia-container/default.nix b/pkgs/applications/virtualization/libnvidia-container/default.nix index 15ded8b671d..e7cfb3c7a58 100644 --- a/pkgs/applications/virtualization/libnvidia-container/default.nix +++ b/pkgs/applications/virtualization/libnvidia-container/default.nix @@ -80,7 +80,7 @@ stdenv.mkDerivation rec { meta = with lib; { homepage = "https://github.com/NVIDIA/libnvidia-container"; description = "NVIDIA container runtime library"; - license = licenses.bsd3; + license = licenses.asl20; platforms = platforms.linux; maintainers = with maintainers; [ cpcloud ]; }; From 8f33bef20fd242c31537c45408357f266b83892e Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sun, 10 Jan 2021 08:52:50 -0500 Subject: [PATCH 19/22] nvidia-container-runtime: fix license --- .../virtualization/nvidia-container-runtime/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/virtualization/nvidia-container-runtime/default.nix b/pkgs/applications/virtualization/nvidia-container-runtime/default.nix index 9fe1920789a..92717b98891 100644 --- a/pkgs/applications/virtualization/nvidia-container-runtime/default.nix +++ b/pkgs/applications/virtualization/nvidia-container-runtime/default.nix @@ -65,7 +65,7 @@ buildGoPackage rec { meta = with lib; { homepage = "https://github.com/NVIDIA/nvidia-container-runtime"; description = "NVIDIA container runtime"; - license = licenses.bsd3; + license = licenses.asl20; platforms = platforms.linux; maintainers = with maintainers; [ cpcloud ]; }; From 5af3dd4a96e3f327f2e4b641297f0708c080a014 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sun, 10 Jan 2021 08:53:07 -0500 Subject: [PATCH 20/22] nvidia-container-toolkit: fix license --- .../virtualization/nvidia-container-toolkit/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix index 1ef9603195d..19647bce631 100644 --- a/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix +++ b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix @@ -31,7 +31,7 @@ buildGoModule rec { meta = with lib; { homepage = "https://github.com/NVIDIA/nvidia-container-toolkit"; description = "NVIDIA container runtime hook"; - license = licenses.bsd3; + license = licenses.asl20; platforms = platforms.linux; maintainers = with maintainers; [ cpcloud ]; }; From 4cd4468144b150e68dab9a7454f3ddc28b592353 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sun, 10 Jan 2021 08:53:26 -0500 Subject: [PATCH 21/22] nvidia-container-toolkit: remove unused input --- .../virtualization/nvidia-container-toolkit/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix index 19647bce631..4276f71a409 100644 --- a/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix +++ b/pkgs/applications/virtualization/nvidia-container-toolkit/default.nix @@ -1,7 +1,6 @@ { lib , fetchFromGitHub , buildGoModule -, callPackage , makeWrapper , nvidia-container-runtime }: From caf2a8d9eaa653a9989e14629198c515ba398ea9 Mon Sep 17 00:00:00 2001 From: Phillip Cloud Date: Sun, 10 Jan 2021 08:54:18 -0500 Subject: [PATCH 22/22] nvidia-docker/nvidia-podman: inherit name directly --- pkgs/top-level/all-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ff32fe78593..b0146c934a9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15421,7 +15421,7 @@ in inherit containerRuntimePath configTemplate; }; in symlinkJoin { - name = "nvidia-containers-${name}"; + inherit name; paths = [ (callPackage ../applications/virtualization/libnvidia-container { }) nvidia-container-runtime @@ -15432,14 +15432,14 @@ in }; nvidia-docker = mkNvidiaContainerPkg { - name = "docker"; + name = "nvidia-docker"; containerRuntimePath = "${docker}/libexec/docker/runc"; configTemplate = ../applications/virtualization/nvidia-docker/config.toml; additionalPaths = [ (callPackage ../applications/virtualization/nvidia-docker { }) ]; }; nvidia-podman = mkNvidiaContainerPkg { - name = "podman"; + name = "nvidia-podman"; containerRuntimePath = "${runc}/bin/runc"; configTemplate = ../applications/virtualization/nvidia-podman/config.toml; };