Files
NixMachines/overlays/nvidiacontainer.nix
2024-05-04 16:13:09 -04:00

48 lines
1.6 KiB
Nix

(nixpkgs: (final: prev: let
libnvidia-container = ((
final.callPackage (nixpkgs+"/pkgs/applications/virtualization/libnvidia-container") { }
).overrideAttrs (old: rec {
pname = "libnvidia-container";
version = "1.12.0";
src = final.fetchFromGitHub {
owner = "NVIDIA";
repo = pname;
rev = "v${version}";
sha256 = "Ih8arSrBGGX44SiWcj61qV9z4DRrbi1J+3xxid2GupE=";
};
patches = [
./libnvidia-container/inline-c-struct.patch
./libnvidia-container/avoid-static-libtirpc-build.patch
./libnvidia-container/libnvc-ldconfig-and-path-fix.patch
];
postInstall =
let
inherit (final.addOpenGLRunpath) driverLink;
libraryPath = final.lib.makeLibraryPath [ "$out" driverLink "${driverLink}-32" ];
in
''
remove-references-to -t "${final.go}" $out/lib/libnvidia-container-go.so.${version}
wrapProgram $out/bin/nvidia-container-cli --prefix LD_LIBRARY_PATH : ${libraryPath}
'';
}));
in {
mkNvidiaContainerPkg = { name, containerRuntimePath, configTemplate, additionalPaths ? [] }:
let
nvidia-container-toolkit = final.callPackage (nixpkgs+"/pkgs/applications/virtualization/nvidia-container-toolkit") {
inherit containerRuntimePath configTemplate libnvidia-container;
};
in final.symlinkJoin {
inherit name;
paths = [
libnvidia-container
nvidia-container-toolkit
] ++ additionalPaths;
};
nvidia-podman = final.mkNvidiaContainerPkg {
name = "nvidia-podman";
containerRuntimePath = "${final.runc}/bin/runc";
configTemplate = ./libnvidia-container/config.tml;
};
}))