about summary refs log tree commit diff
path: root/nixos/modules/hardware
diff options
context:
space:
mode:
authorRakesh Gupta <rakesh.gupta@formbay.com.au>2020-03-09 19:47:57 +1100
committerRakesh Gupta <rakesh.gupta@formbay.com.au>2020-03-09 19:47:57 +1100
commit89a8a31bf36f95acc5efc31344d97d9e48cf51e3 (patch)
tree0da2d75434ae7b2673a61b66e8cf19b38c5f9514 /nixos/modules/hardware
parentbbab73266d5ad509315505419f3619f077052a9d (diff)
downloadnixlib-89a8a31bf36f95acc5efc31344d97d9e48cf51e3.tar
nixlib-89a8a31bf36f95acc5efc31344d97d9e48cf51e3.tar.gz
nixlib-89a8a31bf36f95acc5efc31344d97d9e48cf51e3.tar.bz2
nixlib-89a8a31bf36f95acc5efc31344d97d9e48cf51e3.tar.lz
nixlib-89a8a31bf36f95acc5efc31344d97d9e48cf51e3.tar.xz
nixlib-89a8a31bf36f95acc5efc31344d97d9e48cf51e3.tar.zst
nixlib-89a8a31bf36f95acc5efc31344d97d9e48cf51e3.zip
nixos/nvidia : added nvidia-persistenced
Diffstat (limited to 'nixos/modules/hardware')
-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.