Subject: [PATCH] gnu: Add ckb-next.

From: Formbi <[email-masked]>
Date: Sat, 12 Mar 2022 20:14:00 +0000

=This patch adds ckb-next, a free app for controlling some Corsair devices.

>From 1e9e6403f28ebaccac9bd6f0f7d3bd744516aed1 Mon Sep 17 00:00:00 2001
From: Formbi <[email-masked]>
Date: Sat, 12 Mar 2022 20:09:26 +0100
Subject: [PATCH] gnu: add ckb-next

* gnu/packages/hardware.scm (ckb-next): add ckb-next
---
 gnu/packages/hardware.scm | 64 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm
index 0a2a7dbb7..e43c18c1a 100644
--- a/gnu/packages/hardware.scm
+++ b/gnu/packages/hardware.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <[email-masked]>
+;;; Copyright © 2022 Marcel Kupiec <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,15 +18,20 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

 (define-module (gnu packages hardware)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages lxqt)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -35,6 +41,64 @@
 ;; This is a module for packages related to physical hardware that don't (yet)
 ;; have a more specific home like gps.scm, security-token.scm, &c.

+(define-public ckb-next
+  (let ((commit "967f44018a9d46efa7203fad38518e9381eba0f3")
+    (revision "0"))
+    (package
+      (name "ckb-next")
+      (version (git-version "0.4.4" revision commit))
+      (source
+       (origin
+     (method git-fetch)
+     (uri (git-reference
+               (url "https://github.com/ckb-next/ckb-next")
+               (commit commit)))
+     (sha256
+          (base32 "0bfpah0zgmyhbi6payymr3p98nfnwqr2xqxgkyzvccz72z246316"))
+     (file-name (git-file-name name version))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:modules ((guix build cmake-build-system)
+                    (guix build qt-utils)
+                    (guix build utils))
+           #:imported-modules (,@%cmake-build-system-modules
+                       (guix build qt-utils))
+           #:tests? #f
+           #:phases
+           (modify-phases %standard-phases
+             (add-before 'build 'patch-lib-udev
+               (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute*
+                 "src/daemon/cmake_install.cmake"
+               (("/lib/udev")
+                (string-append (assoc-ref outputs "out")
+                       "/lib/udev")))))
+             (add-after 'install 'wrap-qt
+               (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (wrap-qt-program "ckb-next" #:output out #:inputs inputs)))))))
+      (native-inputs
+       (list qttools pkg-config))
+      (inputs
+       (list qtbase-5
+         zlib
+         libdbusmenu-qt
+         quazip
+         pulseaudio
+         libxcb
+         xcb-util-wm
+         qtx11extras
+         eudev
+         bash-minimal))
+      (home-page "https://github.com/ckb-next/ckb-next")
+      (synopsis "Open-source driver for Corsair keyboards and mice")
+      (description "ckb-next is an open-source driver for Corsair keyboards and
+mice.  It aims to bring the features of Corsair's proprietary CUE software to
+Linux operating systems.  This project is currently a work in progress, but it
+already supports much of the same functionality, including full RGB animations.
+More features are coming soon.")
+      (license license:gpl2))))
+
 (define-public ddcutil
   (package
     (name "ddcutil")
--
2.35.1