at master 1.9 kB view raw
1{ pkgs, ... }: 2 3{ 4 name = "power-profiles-daemon"; 5 meta = with pkgs.lib.maintainers; { 6 maintainers = [ mvnetbiz ]; 7 }; 8 nodes.machine = 9 { pkgs, ... }: 10 { 11 security.polkit.enable = true; 12 services.power-profiles-daemon.enable = true; 13 environment.systemPackages = [ 14 pkgs.glib 15 pkgs.power-profiles-daemon 16 ]; 17 }; 18 19 testScript = '' 20 def get_profile(): 21 return machine.succeed( 22 """gdbus call --system --dest org.freedesktop.UPower.PowerProfiles --object-path /org/freedesktop/UPower/PowerProfiles \ 23 --method org.freedesktop.DBus.Properties.Get 'org.freedesktop.UPower.PowerProfiles' 'ActiveProfile' 24 """ 25 ) 26 27 28 def set_profile(profile): 29 return machine.succeed( 30 """gdbus call --system --dest org.freedesktop.UPower.PowerProfiles --object-path /org/freedesktop/UPower/PowerProfiles \ 31 --method org.freedesktop.DBus.Properties.Set 'org.freedesktop.UPower.PowerProfiles' 'ActiveProfile' "<'{profile}'>" 32 """.format( 33 profile=profile 34 ) 35 ) 36 37 38 machine.wait_for_unit("multi-user.target") 39 40 set_profile("power-saver") 41 profile = get_profile() 42 if not "power-saver" in profile: 43 raise Exception("Unable to set power-saver profile") 44 45 46 set_profile("balanced") 47 profile = get_profile() 48 if not "balanced" in profile: 49 raise Exception("Unable to set balanced profile") 50 51 # test powerprofilectl CLI 52 machine.succeed("powerprofilesctl set power-saver") 53 profile = get_profile() 54 if not "power-saver" in profile: 55 raise Exception("Unable to set power-saver profile with powerprofilectl") 56 57 machine.succeed("powerprofilesctl set balanced") 58 profile = get_profile() 59 if not "balanced" in profile: 60 raise Exception("Unable to set balanced profile with powerprofilectl") 61 ''; 62}