Migrate to snowfall lib
This commit is contained in:
		
							
								
								
									
										42
									
								
								modules/nixos/system/hw/power/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								modules/nixos/system/hw/power/default.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| { lib, config, pkgs, ... }: | ||||
| let cfg = config.hostcfg.make.power; | ||||
| in { | ||||
|   config = lib.mkIf cfg { | ||||
|     services.tlp = { | ||||
|       enable = true; | ||||
|       settings = { | ||||
|         START_CHARGE_THRESH_BAT0 = 75; | ||||
|         STOP_CHARGE_THRESH_BAT0 = 90; | ||||
|         CPU_SCALING_GOVERNOR_ON_AC = "performance"; | ||||
|         CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; | ||||
|       }; | ||||
|     }; | ||||
|  | ||||
|     systemd.user.services.battery_monitor = { | ||||
|       wants = [ "display-manager.service" ]; | ||||
|       wantedBy = [ "graphical-session.target" ]; | ||||
|       script = '' | ||||
|         prev_val=100 | ||||
|         check () { [[ $1 -ge $val ]] && [[ $1 -lt $prev_val ]]; } | ||||
|         notify () { | ||||
|         ${pkgs.libnotify}/bin/notify-send -a Battery "$@" \ | ||||
|             -h "int:value:$val" "Discharging" "$val%, $remaining" | ||||
|         } | ||||
|         while true; do | ||||
|         IFS=: read _ bat0 < <(${pkgs.acpi}/bin/acpi -b) | ||||
|         IFS=\ , read status val remaining <<<"$bat0" | ||||
|         val=''${val%\%} | ||||
|         if [[ $status = Discharging ]]; then | ||||
|             echo "$val%, $remaining" | ||||
|             if check 30 || check 25 || check 20; then notify | ||||
|             elif check 15 || [[ $val -le 10 ]]; then notify -u critical | ||||
|             fi | ||||
|         fi | ||||
|         prev_val=$val | ||||
|         # Sleep longer when battery is high to save CPU | ||||
|         if [[ $val -gt 30 ]]; then sleep 10m; elif [[ $val -ge 20 ]]; then sleep 5m; else sleep 1m; fi | ||||
|         done | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user