Package: guix-patches;
Reported by: Roman Scherer <roman <at> burningswell.com>
Date: Fri, 14 Feb 2025 13:56:01 UTC
Severity: normal
Tags: patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Roman Scherer <roman <at> burningswell.com> To: 76289 <at> debbugs.gnu.org Cc: Roman Scherer <roman <at> burningswell.com>, Ludovic Courtès <ludo <at> gnu.org>, Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Subject: [bug#76289] [PATCH v3 2/2] services: Add speakersafetyd service. Date: Sat, 15 Feb 2025 10:24:35 +0100
* gnu/services/sound.scm (speakersafetyd-service-type) New variable. * doc/guix.texi: Document the speakersafetyd service. Change-Id: Ib8fa19b056a2036019ae7c199d81e1139664e951 --- doc/guix.texi | 42 +++++++++++++++++++++++++++ gnu/services/sound.scm | 65 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 106 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index bd66adf326..ec5c7ab5cf 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -26575,6 +26575,48 @@ Sound Services @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 + +@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 panicing, useful for debugging. + +@item @code{speakersafetyd} (default: @code{speakersafetyd}) (type: file-like) +The Speaker Safety Daemon package to use. + +@end table + +@end deftp + @node File Search Services @subsection File Search Services diff --git a/gnu/services/sound.scm b/gnu/services/sound.scm index 8ca7acd737..bf7d3cc6b0 100644 --- a/gnu/services/sound.scm +++ b/gnu/services/sound.scm @@ -35,6 +35,7 @@ (define-module (gnu services sound) #:use-module (gnu packages audio) #:use-module (gnu packages linux) #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages rust-apps) #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:export (alsa-configuration @@ -56,7 +57,15 @@ (define-module (gnu services sound) ladspa-configuration ladspa-configuration? 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: ;;; @@ -263,4 +272,58 @@ (define ladspa-service-type (default-value (ladspa-configuration)) (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 panicing, 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 -- 2.48.1
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.