From 247ce9cd302d3ff196eae662d27f5a37ac6ce376 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 13 Jan 2023 17:04:21 -0500 Subject: [PATCH] gnu: services: Add joycond-service. * gnu/services/games.scm (): New record type. (joycond-configuration, joycond-configuration?, joycond-configuration-joycond, joycond-shepherd-service): New procedures. (joycond-service-type): New variable. * doc/guix.texi (Game Services): Document it. --- doc/guix.texi | 19 +++++++++++++++++++ gnu/services/games.scm | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 751d0957d8..4aec5895d2 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -36277,6 +36277,25 @@ like to serve. @node Game Services @subsection Game Services +@subsubheading Joycond service +@cindex joycond +The joycond service allows the pairing of Nintendo joycon game +controllers over Bluetooth. (@pxref{Desktop Services} for setting up +Bluetooth.) + +@deftp {Data Type} joycond-configuration +Data type representing the configuration of @command{joycond}. + +@table @asis +@item @code{joycond} (default: @code{joycond}) +The joycond package to use. +@end table +@end deftp + +@defvar {Scheme Variable} joycond-service-type +Service type for the joycond service. +@end defvar + @subsubheading The Battle for Wesnoth Service @cindex wesnothd @uref{https://wesnoth.org, The Battle for Wesnoth} is a fantasy, turn diff --git a/gnu/services/games.scm b/gnu/services/games.scm index 6c2af44b49..adccddfb99 100644 --- a/gnu/services/games.scm +++ b/gnu/services/games.scm @@ -30,10 +30,45 @@ (define-module (gnu services games) #:use-module (guix modules) #:use-module (guix records) #:use-module (ice-9 match) - #:export (wesnothd-configuration + #:export (joycond-configuration + joycond-configuration? + joycond-configuration-joycond + joycond-service-type + + wesnothd-configuration wesnothd-configuration? wesnothd-service-type)) +;;; +;;; Joycond +;;; + +(define-record-type* + joycond-configuration make-joycond-configuration + joycond-configuration? + (joycond joycond-configuration-joycond (default joycond))) + +(define (joycond-shepherd-service config) + (let ((joycond (joycond-configuration-joycond config))) + (list (shepherd-service + (documentation "Run joycond.") + (provision '(joycond)) + (requirement '(bluetooth)) + (start #~(make-forkexec-constructor + (list #$(file-append joycond "/bin/joycond")))) + (stop #~(make-kill-destructor)))))) + +(define joycond-service-type + (service-type + (name 'joycond) + (description + "Run @command{joycond} for pairing Nintendo joycons via Bluetooth.") + (extensions + (list (service-extension shepherd-root-service-type + joycond-shepherd-service))) + (default-value (joycond-configuration)))) + + ;;; ;;; The Battle for Wesnoth server ;;; -- 2.38.1