gnu: services: Add power-profiles-daemon-service-type.
* gnu/services/pm.scm (power-profiles-configuration): New configuration. (power-profiles-daemon-shepherd-service): New procedure. (power-profiles-daemon-activation): New variable. (power-profiles-daemon-service-type): New procedure. * doc/guix.texi (Power Management Services): Document it. Change-Id: Ib035d993ed82eec2a43f3ba2b4c92f77e08a0fd7 Signed-off-by: Christopher Baines <mail@cbaines.net>master
parent
558e2b07ea
commit
d0ad4f557f
|
@ -127,6 +127,7 @@ Copyright @copyright{} 2023 Tomas Volf@*
|
||||||
Copyright @copyright{} 2024 Herman Rimm@*
|
Copyright @copyright{} 2024 Herman Rimm@*
|
||||||
Copyright @copyright{} 2024 Matthew Trzcinski@*
|
Copyright @copyright{} 2024 Matthew Trzcinski@*
|
||||||
Copyright @copyright{} 2024 Richard Sent@*
|
Copyright @copyright{} 2024 Richard Sent@*
|
||||||
|
Copyright @copyright{} 2024 Dariqq@*
|
||||||
|
|
||||||
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||||
|
@ -34711,6 +34712,45 @@ Base URL to use for links to laminar itself.
|
||||||
@node Power Management Services
|
@node Power Management Services
|
||||||
@subsection Power Management Services
|
@subsection Power Management Services
|
||||||
|
|
||||||
|
@cindex power-profiles-daemon
|
||||||
|
@subsubheading Power Profiles Daemon
|
||||||
|
|
||||||
|
The @code{(gnu services pm)} module provides a Guix service definition for
|
||||||
|
the Linux Power Profiles Daemon, which makes power profiles handling
|
||||||
|
available over D-Bus.
|
||||||
|
|
||||||
|
The available profiles consist of the default @samp{balanced} mode, a @samp{power-saver} mode
|
||||||
|
and on supported systems a @samp{performance} mode.
|
||||||
|
|
||||||
|
@quotation Important
|
||||||
|
The @code{power-profiles-daemon} conflicts with other power management tools
|
||||||
|
like @code{tlp}. Using both together is not recommended.
|
||||||
|
@end quotation
|
||||||
|
|
||||||
|
@defvar power-profiles-daemon-service-type
|
||||||
|
This is the service type for the
|
||||||
|
@uref{https://gitlab.freedesktop.org/upower/power-profiles-daemon/, Power Profiles Daemon}.
|
||||||
|
The value for this service is a @code{power-profiles-daemon-configuration}.
|
||||||
|
|
||||||
|
To enable the Power Profiles Daemon with default configuration
|
||||||
|
add this line to your services:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(service power-profiles-daemon-service-type)
|
||||||
|
@end lisp
|
||||||
|
@end defvar
|
||||||
|
|
||||||
|
@deftp {Data Type} power-profiles-daemon-configuration
|
||||||
|
Data type representing the configuration of @code{power-profiles-daemon-service-type}.
|
||||||
|
|
||||||
|
@table @asis
|
||||||
|
@item @code{power-profiles-daemon} (default: @code{power-profiles-daemon}) (type: file-like)
|
||||||
|
Package object of power-profiles-daemon.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
@end deftp
|
||||||
|
|
||||||
|
|
||||||
@cindex tlp
|
@cindex tlp
|
||||||
@cindex power management with TLP
|
@cindex power management with TLP
|
||||||
@subsubheading TLP daemon
|
@subsubheading TLP daemon
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||||
|
;;; Copyright © 2024 Dariqq <dariqq@posteo.net>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -21,18 +22,75 @@
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix records)
|
#:use-module (guix records)
|
||||||
#:use-module (gnu packages admin)
|
#:use-module (gnu packages admin)
|
||||||
|
#:use-module (gnu packages freedesktop)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
#:use-module (gnu services)
|
#:use-module (gnu services)
|
||||||
#:use-module (gnu services base)
|
#:use-module (gnu services base)
|
||||||
#:use-module (gnu services configuration)
|
#:use-module (gnu services configuration)
|
||||||
|
#:use-module (gnu services dbus)
|
||||||
#:use-module (gnu services shepherd)
|
#:use-module (gnu services shepherd)
|
||||||
#:use-module (gnu system shadow)
|
#:use-module (gnu system shadow)
|
||||||
#:export (tlp-service-type
|
#:export (power-profiles-daemon-service-type
|
||||||
|
power-profiles-daemon-configuration
|
||||||
|
|
||||||
|
tlp-service-type
|
||||||
tlp-configuration
|
tlp-configuration
|
||||||
|
|
||||||
thermald-configuration
|
thermald-configuration
|
||||||
thermald-service-type))
|
thermald-service-type))
|
||||||
|
|
||||||
|
;;;
|
||||||
|
;;; power-profiles-daemon
|
||||||
|
;;;
|
||||||
|
|
||||||
|
(define-configuration/no-serialization power-profiles-daemon-configuration
|
||||||
|
(power-profiles-daemon
|
||||||
|
(file-like power-profiles-daemon)
|
||||||
|
"The power-profiles-daemon package."))
|
||||||
|
|
||||||
|
(define (power-profiles-daemon-shepherd-service config)
|
||||||
|
(match-record
|
||||||
|
config <power-profiles-daemon-configuration>
|
||||||
|
(power-profiles-daemon)
|
||||||
|
(list (shepherd-service
|
||||||
|
(provision '(power-profiles-daemon))
|
||||||
|
(requirement '(dbus-system))
|
||||||
|
(documentation "Run the power-profiles-daemon.")
|
||||||
|
(start #~(make-forkexec-constructor
|
||||||
|
(list #$(file-append power-profiles-daemon
|
||||||
|
"/libexec/power-profiles-daemon"))))
|
||||||
|
(stop #~(make-kill-destructor))))))
|
||||||
|
|
||||||
|
(define %power-profiles-daemon-activation
|
||||||
|
#~(begin
|
||||||
|
(use-modules (guix build utils))
|
||||||
|
(mkdir-p "/var/lib/power-profiles-daemon")))
|
||||||
|
|
||||||
|
(define power-profiles-daemon-service-type
|
||||||
|
(let ((config->package
|
||||||
|
(compose list power-profiles-daemon-configuration-power-profiles-daemon)))
|
||||||
|
(service-type
|
||||||
|
(name 'power-profiles-daemon)
|
||||||
|
(extensions (list
|
||||||
|
(service-extension shepherd-root-service-type
|
||||||
|
power-profiles-daemon-shepherd-service)
|
||||||
|
(service-extension dbus-root-service-type
|
||||||
|
config->package)
|
||||||
|
(service-extension polkit-service-type
|
||||||
|
config->package)
|
||||||
|
(service-extension profile-service-type
|
||||||
|
config->package)
|
||||||
|
(service-extension activation-service-type
|
||||||
|
(const %power-profiles-daemon-activation))))
|
||||||
|
(default-value (power-profiles-daemon-configuration))
|
||||||
|
(description "Run the power-profiles-daemon"))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;;;
|
||||||
|
;;; tlp
|
||||||
|
;;;
|
||||||
|
|
||||||
(define (uglify-field-name field-name)
|
(define (uglify-field-name field-name)
|
||||||
(let ((str (symbol->string field-name)))
|
(let ((str (symbol->string field-name)))
|
||||||
(string-join (string-split
|
(string-join (string-split
|
||||||
|
|
Reference in New Issue