[PATCH] gnu: Services: Add espeakup service.

  • Open
  • quality assurance status badge
Details
2 participants
  • hunter.t.joz
  • (
Owner
unassigned
Submitted by
hunter.t.joz
Severity
normal
H
H
hunter.t.joz wrote on 14 Oct 2022 22:09
(address . guix-patches@gnu.org)(name . Hunter Jozwiak)(address . hunter.t.joz@gmail.com)
CAJ1hvUHRrJ32WyYJXe27n-2qoK-qqLsWGwpq7-8N3+P9b+yqRA@mail.gmail.com
From: Hunter Jozwiak <hunter.t.joz@gmail.com>

* gnu/services/accessibility.scm: add espeakup-configuration,
espeakup-shepherd-service, and espeakup-service-type.
* doc/guix.texi (Accessibility Services): Document the espeakup configuration.
---
doc/guix.texi | 19 ++++++++++++
gnu/services/accessibility.scm | 56 ++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+)
create mode 100644 gnu/services/accessibility.scm

Toggle diff (106 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index dbf4ca9be9..73dc647ca5 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -17572,6 +17572,7 @@ Services

@menu
* Base Services:: Essential system services.
+* Accessibility Services:: For those with various impairments.
* Scheduled Job Execution:: The mcron service.
* Log Rotation:: The rottlog service.
* Networking Setup:: Setting up network interfaces.
@@ -18793,6 +18794,24 @@ Base Services
(local-file "sway-greetd.conf"))))))))
@end lisp
@end deftp
+@node Accessibility Services
+@subsection Accessibility Services
+%espeakup-configuration
+@c %start of fragment
+
+@deftp {Data Type} espeakup-configuration
+Available @code{espeakup-configuration} fields are:
+
+@table @asis
+@item @code{default-voice} (default: @code{"en-US"}) (type: string)
+Set the voice that espeak-ng should use by default.
+
+@end table
+
+@end deftp
+
+
+@c %end of fragment

@node Scheduled Job Execution
@subsection Scheduled Job Execution
diff --git a/gnu/services/accessibility.scm b/gnu/services/accessibility.scm
new file mode 100644
index 0000000000..5dc8825bec
--- /dev/null
+++ b/gnu/services/accessibility.scm
@@ -0,0 +1,56 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2022 Hunter Jozwiak <hunter.t.joz@gmail.com>
+
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services accessibility)
+ #:use-module (gnu packages accessibility)
+ #:use-module (gnu services)
+ #:use-module (gnu services configuration)
+ #:use-module (gnu services linux)
+ #:use-module (gnu services shepherd)
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:export (espeakup-configuration espeakup-service-type))
+
+;; Espeakup service
+(define-configuration/no-serialization espeakup-configuration
+ (default-voice (string "en-US")
+ "Set the voice that espeak-ng
should use by default."))
+
+(define (espeakup-shepherd-service config)
+ (list (shepherd-service (provision '(espeakup))
+ (documentation "The espeak-ng bridge to speakup.")
+ (requirement '(user-processes))
+ (start #~(make-forkexec-constructor (list
(string-append #$espeakup
+
"/bin/espeakup"
+ "-v"
+
#$(espeakup-configuration-default-voice
+
config)))))
+ (stop #~(make-kill-destructor)))))
+
+(define espeakup-service-type
+ (service-type (name 'espeakup)
+ (description
+ "A lightweight connector between espeak and speakup.")
+ (extensions (list (service-extension
+ shepherd-root-service-type
+ espeakup-shepherd-service)
+ (service-extension
+ kernel-module-loader-service-type
+ (const (list "speakup_soft")))))
+ (default-value (espeakup-configuration))))
--
2.38.0
(
CNLXFSW3F1O9.1ZEF4DPX3CS49@guix-framework
Heya,

On Fri Oct 14, 2022 at 9:09 PM BST, wrote:
Toggle quote (35 lines)
> diff --git a/doc/guix.texi b/doc/guix.texi
> index dbf4ca9be9..73dc647ca5 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -17572,6 +17572,7 @@ Services
>
> @menu
> * Base Services:: Essential system services.
> +* Accessibility Services:: For those with various impairments.
> * Scheduled Job Execution:: The mcron service.
> * Log Rotation:: The rottlog service.
> * Networking Setup:: Setting up network interfaces.
> @@ -18793,6 +18794,24 @@ Base Services
> (local-file "sway-greetd.conf"))))))))
> @end lisp
> @end deftp
> +@node Accessibility Services
> +@subsection Accessibility Services
> +%espeakup-configuration
> +@c %start of fragment
> +
> +@deftp {Data Type} espeakup-configuration
> +Available @code{espeakup-configuration} fields are:
> +
> +@table @asis
> +@item @code{default-voice} (default: @code{"en-US"}) (type: string)
> +Set the voice that espeak-ng should use by default.
> +
> +@end table
> +
> +@end deftp
> +
> +
> +@c %end of fragment

Remember to add your copyright notice to the manual's copyright section.

Toggle quote (2 lines)
> + (define-module (gnu services accessibility)

Since this is a new file, you'll need to update ``gnu/local.mk'' accordingly.

Toggle quote (2 lines)
> +

Remove this empty line after the ``;;; Copyright ...'' line.

Toggle quote (2 lines)
> + #:export (espeakup-configuration espeakup-service-type))

You should probably put each variable here on a new line.

Toggle quote (3 lines)
> +
> +;; Espeakup service

Instead of this, do this:

^L
;;;
;;; Espeakup.
;;;

The ^L is a control character, not a literal ``^L''. Look at one of the other
files and copy their ^L in. Also, add another newline after this "section
comment".

Toggle quote (5 lines)
> +(define-configuration/no-serialization espeakup-configuration
> + (default-voice (string "en-US")
> + "Set the voice that espeak-ng
> should use by default."))

Funky indentation here, and there needs to be a field for customizing the
``espeakup'' package to use. Should be:

(define-configuration/no-serialization espeakup-configuration
(espeakup
(file-like espeakup)
"Set the package providing the @code{/bin/espeakup} command.")
(default-voice
(string "en-US")
"Set the voice that espeak-ng should use by default."))

Toggle quote (15 lines)
> +(define (espeakup-shepherd-service config)
> + (list (shepherd-service (provision '(espeakup))
> + (documentation "The espeak-ng bridge to speakup.")
> + (requirement '(user-processes))
> + (start #~(make-forkexec-constructor (list
> (string-append #$espeakup
> +
> "/bin/espeakup"
> + "-v"
> +
> #$(espeakup-configuration-default-voice
> +
> config)))))
> + (stop #~(make-kill-destructor)))))

Again, indentation is off here, and there's a small issue with ``string-append''
being used where ``file-append'' should be. Try this instead:

(define (espeakup-shepherd-service config)
(list (shepherd-service
(provision '(espeakup))
(requirement '(user-processes))
(documentation "Run espeakup, the espeak-ng bridge to speakup.")
(start
#~(make-forkexec-constructor
(list #$(file-append (espeakup-configuration-espeakup config)
"/bin/espeakup")
"-v" #$(espeakup-configuration-default-voice config))))
(stop #~(make-kill-destructor)))))

Toggle quote (12 lines)
> +(define espeakup-service-type
> + (service-type (name 'espeakup)
> + (description
> + "A lightweight connector between espeak and speakup.")
> + (extensions (list (service-extension
> + shepherd-root-service-type
> + espeakup-shepherd-service)
> + (service-extension
> + kernel-module-loader-service-type
> + (const (list "speakup_soft")))))
> + (default-value (espeakup-configuration))))

Here too; try this:

(define espeakup-service-type
(service-type
(name 'espeakup)
(extensions
(list (service-extension shepherd-root-service-type
espeakup-shepherd-services)
(service-extension kernel-module-loader-service-type
(const (list "speakup_soft")))))
(default-value (espeakup-configuration))
(description
"Configure and run espeakup, a lightweight bridge between espeak-ng
and speakup.")))

-- (
H
H
Hunter Jozwiak wrote on 15 Oct 2022 17:09
(address . 58528@debbugs.gnu.org)
CAJ1hvUE2gZKfi4PZQnxZfveUBT97uAbxW=Tcr8g0q2KKuXcdpQ@mail.gmail.com
"(" <paren@disroot.org> writes:

Heya,
Toggle quote (107 lines)
>
> On Fri Oct 14, 2022 at 9:09 PM BST, wrote:
>>
>> diff –git a/doc/guix.texi b/doc/guix.texi index dbf4ca9be9..73dc647ca5
>> 100644 — a/doc/guix.texi + b/doc/guix.texi @@ -17572,6 +17572,7 @@
>> Services
>>
>> @menu * Base Services:: Essential system services. +* Accessibility
>> Services:: For those with various impairments. * Scheduled Job Execution::
>> The mcron service. * Log Rotation:: The rottlog service. * Networking
>> Setup:: Setting up network interfaces. @@ -18793,6 +18794,24 @@ Base
>> Services (local-file "sway-greetd.conf")))))))) @end lisp @end deftp +@node
>> Accessibility Services +@subsection Accessibility Services
>> +%espeakup-configuration +@c %start of fragment + +@deftp {Data Type}
>> espeakup-configuration +Available @code{espeakup-configuration} fields are:
>> + +@table @asis +@item @code{default-voice} (default: @code{"en-US"})
>> (type: string) +Set the voice that espeak-ng should use by default. + +@end
>> table + +@end deftp + + +@c %end of fragment
>>
>
> Remember to add your copyright notice to the manual's copyright section.
>
> + (define-module (gnu services accessibility)
>>
>
> Since this is a new file, you'll need to update ``gnu/local.mk''
> accordingly.
>
> +
>>
>
> Remove this empty line after the ``;;; Copyright …'' line.
>
> + #:export (espeakup-configuration espeakup-service-type))
>>
>
> You should probably put each variable here on a new line.
>
> + +;; Espeakup service
>>
>
> Instead of this, do this:
>
> ^L ;;; ;;; Espeakup. ;;;
>
> The ^L is a control character, not a literal ``L''. Look at one of the
> other files and copy their ^L in. Also, add another newline after this
> "section comment".
>
> +(define-configuration/no-serialization espeakup-configuration +
>> (default-voice (string "en-US") + "Set the voice that espeak-ng should use
>> by default."))
>>
>
> Funky indentation here, and there needs to be a field for customizing the
> ``espeakup'' package to use. Should be:
>
> (define-configuration/no-serialization espeakup-configuration (espeakup
> (file-like espeakup) "Set the package providing the @code{/bin/espeakup}
> command.") (default-voice (string "en-US") "Set the voice that espeak-ng
> should use by default."))
>
> +(define (espeakup-shepherd-service config) + (list (shepherd-service
>> (provision '(espeakup)) + (documentation "The espeak-ng bridge to
>> speakup.") + (requirement '(user-processes)) + (start
>> #~(make-forkexec-constructor (list (string-append #[image: $espeakup
>> </div></blockquote> </div></blockquote> &gt;&gt; + &gt;&gt; /bin/espeakup
>> &gt;&gt; + -v &gt;&gt; + &gt;&gt; #$](espeakup-configuration-default-voice
>>
>>>
>>> + config))))) + (stop #~(make-kill-destructor)))))
>>>>
>>>
>>> Again, indentation is off here, and there's a small issue with
>>> ``string-append'' being used where ``file-append'' should be. Try this
>>> instead:
>>>
>>> (define (espeakup-shepherd-service config) (list (shepherd-service
>>> (provision '(espeakup)) (requirement '(user-processes)) (documentation "Run
>>> espeakup, the espeak-ng bridge to speakup.") (start
>>> #~(make-forkexec-constructor (list #[image: $(file-append
>>> (espeakup-configuration-espeakup config) </div></blockquote> &gt;
>>> /bin/espeakup) &gt; -v #$](espeakup-configuration-default-voice
>>> config))))
>>>>
>>>> (stop #~(make-kill-destructor)))))
>>>>
>>>> +(define espeakup-service-type + (service-type (name 'espeakup) +
>>>>> (description + "A lightweight connector between espeak and speakup.") +
>>>>> (extensions (list (service-extension + shepherd-root-service-type +
>>>>> espeakup-shepherd-service) + (service-extension +
>>>>> kernel-module-loader-service-type + (const (list "speakupsoft"))))) +
>>>>> (default-value (espeakup-configuration))))
>>>>>
>>>>
>>>> Here too; try this:
>>>>
>>>> (define espeakup-service-type (service-type (name 'espeakup)
>>>> (extensions (list (service-extension shepherd-root-service-type
>>>> espeakup-shepherd-services) (service-extension
>>>> kernel-module-loader-service-type (const (list "speakupsoft")))))
>>>> (default-value (espeakup-configuration)) (description "Configure and run
>>>> espeakup, a lightweight bridge between espeak-ng and speakup.")))
>>>>
>>>> – (
>>>>
>>>
Attachment: file
Attachment: signature.asc
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 58528@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 58528
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch