Add NixOS module to control power policy
Reviewed-by: Aleix Roca Nonell <aleix.rocanonell@bsc.es> Reviewed-by: Aleix Boné <abonerib@bsc.es>
This commit is contained in:
		
							parent
							
								
									ef28582bd8
								
							
						
					
					
						commit
						3e0156d7a0
					
				
							
								
								
									
										31
									
								
								m/module/power-policy.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								m/module/power-policy.nix
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | |||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.power.policy; | ||||||
|  | in | ||||||
|  | { | ||||||
|  |   options = { | ||||||
|  |     power.policy = mkOption { | ||||||
|  |       type = types.nullOr (types.enum [ "always-on" "previous" "always-off" ]); | ||||||
|  |       default = null; | ||||||
|  |       description = "Set power policy to use via IPMI."; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf (cfg != null) { | ||||||
|  |     systemd.services."power-policy" = { | ||||||
|  |       description = "Set power policy to use via IPMI"; | ||||||
|  |       wantedBy = [ "multi-user.target" ]; | ||||||
|  |       serviceConfig = { | ||||||
|  |         ExecStart = "${pkgs.ipmitool}/bin/ipmitool chassis policy ${cfg}"; | ||||||
|  |         Type = "oneshot"; | ||||||
|  |         Restart = "on-failure"; | ||||||
|  |         RestartSec = "5s"; | ||||||
|  |         StartLimitBurst = "10"; | ||||||
|  |         StartLimitIntervalSec = "10m"; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user