mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
services: Add speakersafetyd service.
* gnu/services/sound.scm (speakersafetyd-shepherd-service) (speakersafetyd-configuration) (speakersafetyd-service-type): New variables. * doc/guix.texi (Sound Services): Document it. Change-Id: Ib8fa19b056a2036019ae7c199d81e1139664e951 Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
parent
5135b9e805
commit
af643735a5
2 changed files with 108 additions and 1 deletions
|
@ -26575,6 +26575,49 @@ details.
|
||||||
|
|
||||||
@end defvar
|
@end defvar
|
||||||
|
|
||||||
|
@subsubheading Speaker Safety Daemon System Service
|
||||||
|
|
||||||
|
@uref{https://github.com/AsahiLinux/speakersafetyd, Speaker Safety
|
||||||
|
Daemon} is a user-space daemon that implements an analogue of the Texas
|
||||||
|
Instruments Smart Amp speaker protection model. It can be used to
|
||||||
|
protect the speakers on Apple Silicon devices.
|
||||||
|
|
||||||
|
@defvar speakersafetyd-service-type
|
||||||
|
This is the type for the @code{speakersafetyd} system service, whose
|
||||||
|
value is a @command{speakersafetyd-configuration} record.
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(service speakersafetyd-service-type)
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
See below for details about @code{speakersafetyd-configuration}.
|
||||||
|
@end defvar
|
||||||
|
|
||||||
|
@c %start of fragment
|
||||||
|
@deftp {Data Type} speakersafetyd-configuration
|
||||||
|
Available @code{speakersafetyd-configuration} fields are:
|
||||||
|
|
||||||
|
@table @asis
|
||||||
|
@item @code{blackbox-directory} (default: @code{"/var/lib/speakersafetyd/blackbox"}) (type: string)
|
||||||
|
The directory to which blackbox files are written when the speakers are
|
||||||
|
getting too hot. The blackbox files contain audio and debug information
|
||||||
|
which the developers of @code{speakersafetyd} might ask for when
|
||||||
|
reporting bugs.
|
||||||
|
|
||||||
|
@item @code{configuration-directory} (type: file-like)
|
||||||
|
The base directory as a G-expression (@pxref{G-Expressions}) that
|
||||||
|
contains the configuration files of the speaker models.
|
||||||
|
|
||||||
|
@item @code{maximum-gain-reduction} (default: @code{7}) (type: integer)
|
||||||
|
Maximum gain reduction before panicking, useful for debugging.
|
||||||
|
|
||||||
|
@item @code{speakersafetyd} (default: @code{speakersafetyd}) (type: file-like)
|
||||||
|
The Speaker Safety Daemon package to use.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
@end deftp
|
||||||
|
@c %end of fragment
|
||||||
|
|
||||||
@node File Search Services
|
@node File Search Services
|
||||||
@subsection File Search Services
|
@subsection File Search Services
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
|
;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
|
||||||
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
|
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
|
||||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||||
|
;;; Copyright © 2025 Roman Scherer <roman@burningswell.com>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -35,6 +36,7 @@
|
||||||
#:use-module (gnu packages audio)
|
#:use-module (gnu packages audio)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
#:use-module (gnu packages pulseaudio)
|
#:use-module (gnu packages pulseaudio)
|
||||||
|
#:use-module (gnu packages rust-apps)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:export (alsa-configuration
|
#:export (alsa-configuration
|
||||||
|
@ -56,7 +58,15 @@
|
||||||
ladspa-configuration
|
ladspa-configuration
|
||||||
ladspa-configuration?
|
ladspa-configuration?
|
||||||
ladspa-configuration-plugins
|
ladspa-configuration-plugins
|
||||||
ladspa-service-type))
|
ladspa-service-type
|
||||||
|
|
||||||
|
speakersafetyd-configuration
|
||||||
|
speakersafetyd-configuration-blackbox-directory
|
||||||
|
speakersafetyd-configuration-configuration-directory
|
||||||
|
speakersafetyd-configuration-maximum-gain-reduction
|
||||||
|
speakersafetyd-configuration-speakersafetyd
|
||||||
|
speakersafetyd-configuration?
|
||||||
|
speakersafetyd-service-type))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;;
|
;;;
|
||||||
|
@ -263,4 +273,58 @@ computed-file object~%") file))))
|
||||||
(default-value (ladspa-configuration))
|
(default-value (ladspa-configuration))
|
||||||
(description "Configure LADSPA plugins.")))
|
(description "Configure LADSPA plugins.")))
|
||||||
|
|
||||||
|
|
||||||
|
;;;
|
||||||
|
;;; Speaker Safety Daemon.
|
||||||
|
;;;
|
||||||
|
|
||||||
|
(define-configuration/no-serialization speakersafetyd-configuration
|
||||||
|
(blackbox-directory
|
||||||
|
(string "/var/lib/speakersafetyd/blackbox")
|
||||||
|
"The directory to which blackbox files are written when the speakers are
|
||||||
|
getting too hot. The blackbox files contain audio and debug information which
|
||||||
|
the developers of @code{speakersafetyd} might ask for when reporting bugs.")
|
||||||
|
(configuration-directory
|
||||||
|
(file-like (file-append speakersafetyd "/share/speakersafetyd"))
|
||||||
|
"The base directory as a G-expression (@pxref{G-Expressions}) that contains
|
||||||
|
the configuration files of the speaker models.")
|
||||||
|
(maximum-gain-reduction
|
||||||
|
(integer 7)
|
||||||
|
"Maximum gain reduction before panicking, useful for debugging.")
|
||||||
|
(speakersafetyd
|
||||||
|
(file-like speakersafetyd)
|
||||||
|
"The Speaker Safety Daemon package to use."))
|
||||||
|
|
||||||
|
(define speakersafetyd-shepherd-service
|
||||||
|
(match-record-lambda <speakersafetyd-configuration>
|
||||||
|
(blackbox-directory configuration-directory maximum-gain-reduction speakersafetyd)
|
||||||
|
(shepherd-service
|
||||||
|
(documentation "Run the speaker safety daemon")
|
||||||
|
(provision '(speakersafetyd))
|
||||||
|
(requirement '(udev))
|
||||||
|
(start #~(make-forkexec-constructor
|
||||||
|
(list #$(file-append speakersafetyd "/bin/speakersafetyd")
|
||||||
|
"--config-path" #$configuration-directory
|
||||||
|
"--blackbox-path" #$blackbox-directory
|
||||||
|
"--max-reduction" (number->string #$maximum-gain-reduction))))
|
||||||
|
(stop #~(make-kill-destructor)))))
|
||||||
|
|
||||||
|
(define speakersafetyd-service-type
|
||||||
|
(service-type
|
||||||
|
(name 'speakersafetyd)
|
||||||
|
(description "Run @command{speakersafetyd}, a user space daemon that
|
||||||
|
implements an analogue of the Texas Instruments Smart Amp speaker protection
|
||||||
|
model. It can be used to protect the speakers on Apple Silicon devices.")
|
||||||
|
(extensions
|
||||||
|
(list (service-extension
|
||||||
|
shepherd-root-service-type
|
||||||
|
(compose list speakersafetyd-shepherd-service))
|
||||||
|
(service-extension
|
||||||
|
udev-service-type
|
||||||
|
(compose list speakersafetyd-configuration-speakersafetyd))
|
||||||
|
(service-extension
|
||||||
|
profile-service-type
|
||||||
|
(compose list speakersafetyd-configuration-speakersafetyd))))
|
||||||
|
(default-value (speakersafetyd-configuration))))
|
||||||
|
|
||||||
;;; sound.scm ends here
|
;;; sound.scm ends here
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue