about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJosé Romildo Malaquias <malaquias@gmail.com>2020-05-10 07:42:47 -0300
committerGitHub <noreply@github.com>2020-05-10 07:42:47 -0300
commitbe034746371ca91f9c9f087db2445ccfc0f0eaaa (patch)
treec6ea1681cfb2ad6cd65e008a557ca72f81ebcdfb
parente4efa8bc83ae70b2ec592ecfeddec322b00b5e0b (diff)
parent89a8a31bf36f95acc5efc31344d97d9e48cf51e3 (diff)
downloadnixlib-be034746371ca91f9c9f087db2445ccfc0f0eaaa.tar
nixlib-be034746371ca91f9c9f087db2445ccfc0f0eaaa.tar.gz
nixlib-be034746371ca91f9c9f087db2445ccfc0f0eaaa.tar.bz2
nixlib-be034746371ca91f9c9f087db2445ccfc0f0eaaa.tar.lz
nixlib-be034746371ca91f9c9f087db2445ccfc0f0eaaa.tar.xz
nixlib-be034746371ca91f9c9f087db2445ccfc0f0eaaa.tar.zst
nixlib-be034746371ca91f9c9f087db2445ccfc0f0eaaa.zip
Merge pull request #77054 from formbay/nvidia-persistenced
nixos/nvidia : added nvidia-persistenced
-rw-r--r--nixos/modules/hardware/video/nvidia.nix23
1 files changed, 23 insertions, 0 deletions
diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix
index 7461e231402a..8c3d64fceb9c 100644
--- a/nixos/modules/hardware/video/nvidia.nix
+++ b/nixos/modules/hardware/video/nvidia.nix
@@ -34,10 +34,12 @@ let
   enabled = nvidia_x11 != null;
 
   cfg = config.hardware.nvidia;
+
   pCfg = cfg.prime;
   syncCfg = pCfg.sync;
   offloadCfg = pCfg.offload;
   primeEnabled = syncCfg.enable || offloadCfg.enable;
+  nvidiaPersistencedEnabled =  cfg.nvidiaPersistenced;
 in
 
 {
@@ -129,6 +131,15 @@ in
         <option>hardware.nvidia.prime.intelBusId</option>).
       '';
     };
+
+    hardware.nvidia.nvidiaPersistenced = mkOption {
+      default = false;
+      type = types.bool;
+      description = ''
+        Update for NVIDA GPU headless mode, i.e. nvidia-persistenced. It ensures all
+        GPUs stay awake even during headless mode.
+      '';
+    };
   };
 
   config = mkIf enabled {
@@ -220,6 +231,18 @@ in
       ++ optional (nvidia_x11.persistenced != null && config.virtualisation.docker.enableNvidia)
         "L+ /run/nvidia-docker/extras/bin/nvidia-persistenced - - - - ${nvidia_x11.persistenced}/origBin/nvidia-persistenced";
 
+    systemd.services."nvidia-persistenced" = mkIf nvidiaPersistencedEnabled {
+      description = "NVIDIA Persistence Daemon";
+      wantedBy = [ "multi-user.target" ];
+      serviceConfig = {
+        Type = "forking";
+        Restart = "always";
+        PIDFile = "/var/run/nvidia-persistenced/nvidia-persistenced.pid";
+        ExecStart = "${nvidia_x11.persistenced}/bin/nvidia-persistenced --verbose";
+        ExecStopPost = "${pkgs.coreutils}/bin/rm -rf /var/run/nvidia-persistenced";
+      };
+    };
+
     boot.extraModulePackages = [ nvidia_x11.bin ];
 
     # nvidia-uvm is required by CUDA applications.