···343343 ];344344345345 # Don't add `nvidia-uvm` to `kernelModules`, because we want346346- # `nvidia-uvm` be loaded only after `udev` rules for `nvidia` kernel347347- # module are applied.346346+ # `nvidia-uvm` be loaded only after the GPU device is available, i.e. after `udev` rules347347+ # for `nvidia` kernel module are applied.348348+ # This matters on Azure GPU instances: https://github.com/NixOS/nixpkgs/pull/267335348349 #349350 # Instead, we use `softdep` to lazily load `nvidia-uvm` kernel module350351 # after `nvidia` kernel module is loaded and `udev` rules are applied.351352 extraModprobeConfig = ''352353 softdep nvidia post: nvidia-uvm353354 '';355355+356356+ # Exception is the open-source kernel module failing to load nvidia-uvm using softdep357357+ # for unknown reasons.358358+ # It affects CUDA: https://github.com/NixOS/nixpkgs/issues/334180359359+ # Previously nvidia-uvm was explicitly loaded only when xserver was enabled:360360+ # https://github.com/NixOS/nixpkgs/pull/334340/commits/4548c392862115359e50860bcf658cfa8715bde9361361+ # We are now loading the module eagerly for all users of the open driver (including headless).362362+ kernelModules = lib.optionals useOpenModules [ "nvidia_uvm" ];354363 };355364 systemd.tmpfiles.rules = lib.mkIf config.virtualisation.docker.enableNvidia [356365 "L+ /run/nvidia-docker/bin - - - - ${nvidia_x11.bin}/origBin"···648639 boot = {649640 extraModulePackages = if useOpenModules then [ nvidia_x11.open ] else [ nvidia_x11.bin ];650641 # nvidia-uvm is required by CUDA applications.651651- kernelModules =652652- lib.optionals config.services.xserver.enable [653653- "nvidia"654654- "nvidia_modeset"655655- "nvidia_drm"656656- ]657657- # With the open driver, nvidia-uvm does not automatically load as658658- # a softdep of the nvidia module, so we explicitly load it for now.659659- # See https://github.com/NixOS/nixpkgs/issues/334180660660- ++ lib.optionals (config.services.xserver.enable && useOpenModules) [ "nvidia_uvm" ];642642+ kernelModules = lib.optionals config.services.xserver.enable [643643+ "nvidia"644644+ "nvidia_modeset"645645+ "nvidia_drm"646646+ ];661647662648 # If requested enable modesetting via kernel parameters.663649 kernelParams =