Merge pull request #97972 from mvnetbiz/power-profiles-daemon

This commit is contained in:
Jan Tojnar 2021-02-09 01:41:04 +01:00 committed by GitHub
commit faf133f854
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 167 additions and 0 deletions

View file

@ -374,6 +374,7 @@
./services/hardware/nvidia-optimus.nix
./services/hardware/pcscd.nix
./services/hardware/pommed.nix
./services/hardware/power-profiles-daemon.nix
./services/hardware/ratbagd.nix
./services/hardware/sane.nix
./services/hardware/sane_extra_backends/brscan4.nix

View file

@ -0,0 +1,53 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.power-profiles-daemon;
package = pkgs.power-profiles-daemon;
in
{
###### interface
options = {
services.power-profiles-daemon = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable power-profiles-daemon, a DBus daemon that allows
changing system behavior based upon user-selected power profiles.
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
assertions = [
{ assertion = !config.services.tlp.enable;
message = ''
You have set services.power-profiles-daemon.enable = true;
which conflicts with services.tlp.enable = true;
'';
}
];
services.dbus.packages = [ package ];
services.udev.packages = [ package ];
systemd.packages = [ package ];
};
}

View file

@ -0,0 +1,45 @@
import ./make-test-python.nix ({ pkgs, ... }:
{
name = "power-profiles-daemon";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ mvnetbiz ];
};
machine = { pkgs, ... }: {
services.power-profiles-daemon.enable = true;
environment.systemPackages = [ pkgs.glib ];
};
testScript = ''
def get_profile():
return machine.succeed(
"""gdbus call --system --dest net.hadess.PowerProfiles --object-path /net/hadess/PowerProfiles \
--method org.freedesktop.DBus.Properties.Get 'net.hadess.PowerProfiles' 'ActiveProfile'
"""
)
def set_profile(profile):
return machine.succeed(
"""gdbus call --system --dest net.hadess.PowerProfiles --object-path /net/hadess/PowerProfiles \
--method org.freedesktop.DBus.Properties.Set 'net.hadess.PowerProfiles' 'ActiveProfile' "<'{profile}'>"
""".format(
profile=profile
)
)
machine.wait_for_unit("multi-user.target")
set_profile("power-saver")
profile = get_profile()
if not "power-saver" in profile:
raise Exception("Unable to set power-saver profile")
set_profile("balanced")
profile = get_profile()
if not "balanced" in profile:
raise Exception("Unable to set balanced profile")
'';
})

View file

@ -0,0 +1,66 @@
{ stdenv
, lib
, pkg-config
, meson
, ninja
, fetchFromGitLab
, libgudev
, glib
, gobject-introspection
, gettext
, gtk-doc
, docbook-xsl-nons
, docbook_xml_dtd_412
, libxml2
, libxslt
, upower
, systemd
}:
stdenv.mkDerivation rec {
pname = "power-profiles-daemon";
version = "0.1";
outputs = [ "out" "devdoc" ];
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "hadess";
repo = "power-profiles-daemon";
rev = version;
sha256 = "012w3aryw5d43dr9jj5i6wy2a0n21jidr4ggs9ix7d4z9byr175w";
};
nativeBuildInputs = [
pkg-config
meson
ninja
gettext
gtk-doc
docbook-xsl-nons
docbook_xml_dtd_412
libxml2 # for xmllint for stripping GResources
libxslt # for xsltproc for building docs
gobject-introspection
];
buildInputs = [
libgudev
systemd
upower
glib
];
mesonFlags = [
"-Dsystemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
"-Dgtk_doc=true"
];
meta = with lib; {
homepage = "https://gitlab.freedesktop.org/hadess/power-profiles-daemon";
description = "Makes user-selected power profiles handling available over D-Bus";
platforms = platforms.linux;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ mvnetbiz ];
};
}

View file

@ -7181,6 +7181,8 @@ in
povray = callPackage ../tools/graphics/povray { };
power-profiles-daemon = callPackage ../os-specific/linux/power-profiles-daemon { };
ppl = callPackage ../development/libraries/ppl { };
pplatex = callPackage ../tools/typesetting/tex/pplatex { };