Subject: [PATCH 2/3] gnu: Add libratbag.

From: Brendan Tildesley <[email-masked]>
Date: Mon, 30 Mar 2020 15:16:50 +1100

* gnu/packages/gnome.scm (libratbag): New variable.
---
 gnu/packages/gnome.scm | 71 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 70 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index bc78910c64..d44e9ea5e7 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -27,7 +27,7 @@
 ;;; Copyright © 2017, 2018 nee <[email-masked]>
 ;;; Copyright © 2017 Chris Marusich <[email-masked]>
 ;;; Copyright © 2017 Mohammed Sadiq <[email-masked]>
-;;; Copyright © 2017 Brendan Tildesley <[email-masked]>
+;;; Copyright © 2017, 2020 Brendan Tildesley <[email-masked]>
 ;;; Copyright © 2017, 2018 Rutger Helling <[email-masked]>
 ;;; Copyright © 2018 Jovany Leandro G.C <[email-masked]>
 ;;; Copyright © 2018 Vasile Dumitrascu <[email-masked]>
@@ -159,10 +159,12 @@
   #:use-module (gnu packages speech)
   #:use-module (gnu packages spice)
   #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages swig)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages valgrind)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages video)
   #:use-module (gnu packages virtualization)
@@ -9889,3 +9891,70 @@ to.")
               license:public-domain
               ;; snowball
               license:bsd-2))))
+
+(define-public libratbag
+  (package
+    (name "libratbag")
+    (version "0.13")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "https://github.com/libratbag/libratbag/archive/v" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1j8ryzrljqcp0c1wqzzpgr5fqdmwqr5z99avkxwfs7kqwm8ii9xh"))))
+    (build-system meson-build-system)
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("check" ,check)
+                     ("swig" ,swig)
+                     ("valgrind" ,valgrind)))
+    (inputs `(("glib" ,glib)
+              ("json-glib" ,json-glib)
+              ("libevdev" ,libevdev)
+              ("udev" ,eudev)
+              ("libunistring" ,libunistring)
+              ("python-pygobject" ,python-pygobject)
+              ("python-evdev" ,python-evdev)
+              ("libsystemd" ,elogind)))
+    (arguments
+     `(#:configure-flags
+       (list "-Dsystemd=false"
+             "-Dlogind-provider=elogind")
+       #:phases
+       (modify-phases %standard-phases
+         ;; (add-after 'install 'wrap-python
+         ;;   (assoc-ref python:%standard-phases 'wrap))
+         (add-after 'install 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (site (string-append
+                           "/lib/python"
+                           ,(version-major+minor (package-version python))
+                           "/site-packages"))
+                    (evdev (string-append
+                            (assoc-ref inputs "python-evdev") site))
+                    (pygo (string-append
+                           (assoc-ref inputs "python-pygobject") site))
+                    (python-wrap
+                     `("PYTHONPATH" = (,evdev ,pygo))))
+               (wrap-program (string-append out "/bin/" "ratbagctl")
+                 python-wrap)
+               #t))))))
+    (home-page "https://github.com/libratbag/libratbag")
+    (synopsis "DBus daemon and utility for configuring gaming mice")
+    (description "libratbag provides @command{ratbagd}, a DBus daemon to
+configure input devices, mainly gaming mice.  The daemon provides a generic
+way to access the various features exposed by these mice and abstracts away
+hardware-specific and kernel-specific quirks.  There is also the
+@command{ratbagctl} command line interface for configuring devices.
+
+libratbag currently supports devices from Logitech, Etekcity, GSkill, Roccat,
+Steelseries.
+
+The ratbagd dbus service can be enabled by adding the following service to
+your operating-system definition:
+(simple-service 'ratbagd dbus-root-service-type (list libratbag))
+")
+    (license license:expat)))
-- 
2.25.2