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}