Subject: [PATCH 1/4] services: Extend udev rules in joycond-service-type.

From: Maxim Cournoyer <[email-masked]>
Date: Thu, 19 Sep 2024 10:02:32 +0900

* gnu/services/games.scm (joycond-service-type): Also extend the udev service
with the configured joycond package.
* doc/guix.texi (Game Services): Update documentation.

Change-Id: I9f7fb0da5cfc1f8a7e8bb5f2ce7161e5e66b2f5e
---
 doc/guix.texi          | 6 +++++-
 gnu/services/games.scm | 8 ++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index bc4d306c2d..d63b57300f 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -39353,6 +39353,7 @@ Game Services
 
 @subsubheading Joycond service
 @cindex joycond
+@cindex nintendo controllers
 The joycond service allows the pairing of Nintendo joycon game
 controllers over Bluetooth. (@pxref{Desktop Services} for setting up
 Bluetooth.)
@@ -39367,7 +39368,10 @@ Game Services
 @end deftp
 
 @defvar joycond-service-type
-Service type for the joycond service.
+Service type for the joycond service.  It also extends the
+@code{udev-service-type} with the @code{joycond} package (provided via
+the @code{joycond-configuration} configuration), so that joycond
+controllers can be detected and used by an unprivileged user.
 @end defvar
 
 @subsubheading The Battle for Wesnoth Service
diff --git a/gnu/services/games.scm b/gnu/services/games.scm
index e63c1c1299..2557b82bec 100644
--- a/gnu/services/games.scm
+++ b/gnu/services/games.scm
@@ -23,6 +23,7 @@ (define-module (gnu services games)
   #:use-module (gnu services shepherd)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages games)
+  #:use-module ((gnu services base) #:select (udev-service-type))
   #:use-module (gnu system shadow)
   #:use-module ((gnu system file-systems) #:select (file-system-mapping))
   #:use-module (gnu build linux-container)
@@ -61,10 +62,13 @@ (define joycond-service-type
   (service-type
    (name 'joycond)
    (description
-    "Run @command{joycond} for pairing Nintendo joycons via Bluetooth.")
+    "Run @command{joycond} for pairing Nintendo joycons via Bluetooth and
+install udev rules required to use the controller as an unprivileged user.")
    (extensions
     (list (service-extension shepherd-root-service-type
-                             joycond-shepherd-service)))
+                             joycond-shepherd-service)
+          (service-extension udev-service-type
+                             (compose list joycond-configuration-package))))
    (default-value (joycond-configuration))))
 
 

base-commit: 8dae6b47542b906682f83b06b0478fcbd0776fd6
-- 
2.46.0