mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-10-30 16:10:36 +00:00
nixos/nvidia: use nvidia-modprobe to create device nodes
Use the native helper to handle existing nodes and driver device-file parameters, including stale UVM major numbers. Create the reverse-link directory before the module add handlers, keep GPU minor enumeration, and do not recreate nodes on remove events. Backport the independently prepared helper fix for concurrent device creation. Assisted-by: OpenAI Codex (gpt-6.1-sol)
This commit is contained in:
@@ -456,12 +456,12 @@ in
|
||||
"L+ /run/nvidia-docker/bin - - - - ${nvidia_x11.bin}/origBin"
|
||||
];
|
||||
services.udev.extraRules = ''
|
||||
# Create /dev/nvidia-uvm when the nvidia-uvm module is loaded.
|
||||
KERNEL=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidiactl c 195 255'"
|
||||
KERNEL=="nvidia", RUN+="${pkgs.runtimeShell} -c 'for i in $$(cat /proc/driver/nvidia/gpus/*/information | grep Minor | cut -d \ -f 4); do mknod -m 666 /dev/nvidia$${i} c 195 $${i}; done'"
|
||||
KERNEL=="nvidia_modeset", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-modeset c 195 254'"
|
||||
KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'"
|
||||
KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm-tools c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 1'"
|
||||
# nvidia-modprobe honors the driver's device-file parameters.
|
||||
ACTION=="add", SUBSYSTEM=="module", KERNEL=="nvidia|nvidia_modeset|nvidia_uvm", RUN+="${pkgs.coreutils}/bin/mkdir -m 755 -p /dev/char"
|
||||
ACTION=="add", SUBSYSTEM=="module", KERNEL=="nvidia", RUN+="${pkgs.nvidia-modprobe}/bin/nvidia-modprobe -c 255"
|
||||
ACTION=="add", SUBSYSTEM=="module", KERNEL=="nvidia", RUN+="${pkgs.runtimeShell} -c 'for i in $$(cat /proc/driver/nvidia/gpus/*/information | grep Minor | cut -d \ -f 4); do ${pkgs.nvidia-modprobe}/bin/nvidia-modprobe -c $${i} || exit; done'"
|
||||
ACTION=="add", SUBSYSTEM=="module", KERNEL=="nvidia_modeset", RUN+="${pkgs.nvidia-modprobe}/bin/nvidia-modprobe -m"
|
||||
ACTION=="add", SUBSYSTEM=="module", KERNEL=="nvidia_uvm", RUN+="${pkgs.nvidia-modprobe}/bin/nvidia-modprobe -u -c 0"
|
||||
'';
|
||||
hardware.graphics =
|
||||
let
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
gnum4,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -15,6 +16,13 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-XVWvnUZkEqEh3UjPIU6DaZuYU9DvjfIMsWbLJ78jJWs=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://github.com/ooonea/nvidia-modprobe/commit/450f0c15ad9229fe5f4d3f80ae4d95e42d9c038e.patch";
|
||||
hash = "sha256-SKJqt2MJDQxzRnfGcgB9oJHyt6Rwrm4hLh9zgIPEv/0=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ gnum4 ];
|
||||
|
||||
postPatch = ''
|
||||
|
||||
Reference in New Issue
Block a user