mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-16 06:45:16 +01:00
Merge pull request #97972 from mvnetbiz/power-profiles-daemon
This commit is contained in:
commit
faf133f854
5 changed files with 167 additions and 0 deletions
|
@ -374,6 +374,7 @@
|
||||||
./services/hardware/nvidia-optimus.nix
|
./services/hardware/nvidia-optimus.nix
|
||||||
./services/hardware/pcscd.nix
|
./services/hardware/pcscd.nix
|
||||||
./services/hardware/pommed.nix
|
./services/hardware/pommed.nix
|
||||||
|
./services/hardware/power-profiles-daemon.nix
|
||||||
./services/hardware/ratbagd.nix
|
./services/hardware/ratbagd.nix
|
||||||
./services/hardware/sane.nix
|
./services/hardware/sane.nix
|
||||||
./services/hardware/sane_extra_backends/brscan4.nix
|
./services/hardware/sane_extra_backends/brscan4.nix
|
||||||
|
|
53
nixos/modules/services/hardware/power-profiles-daemon.nix
Normal file
53
nixos/modules/services/hardware/power-profiles-daemon.nix
Normal 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 ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
45
nixos/tests/power-profiles-daemon.nix
Normal file
45
nixos/tests/power-profiles-daemon.nix
Normal 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")
|
||||||
|
'';
|
||||||
|
})
|
66
pkgs/os-specific/linux/power-profiles-daemon/default.nix
Normal file
66
pkgs/os-specific/linux/power-profiles-daemon/default.nix
Normal 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 ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -7181,6 +7181,8 @@ in
|
||||||
|
|
||||||
povray = callPackage ../tools/graphics/povray { };
|
povray = callPackage ../tools/graphics/povray { };
|
||||||
|
|
||||||
|
power-profiles-daemon = callPackage ../os-specific/linux/power-profiles-daemon { };
|
||||||
|
|
||||||
ppl = callPackage ../development/libraries/ppl { };
|
ppl = callPackage ../development/libraries/ppl { };
|
||||||
|
|
||||||
pplatex = callPackage ../tools/typesetting/tex/pplatex { };
|
pplatex = callPackage ../tools/typesetting/tex/pplatex { };
|
||||||
|
|
Loading…
Reference in a new issue