summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/games.scm116
1 files changed, 116 insertions, 0 deletions
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 7d259f8241..2b8b85fbfa 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -76,6 +76,7 @@
;;; Copyright © 2022 Hendursaga <hendursaga@aol.com>
;;; Copyright © 2022 Parnikkapore <poomklao@yahoo.com>
;;; Copyright © 2022 Cairn <cairn@pm.me>
+;;; Copyright © 2022 Morgan Smith <Morgan.J.Smith@outlook.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 Florian Pelz <pelzflorian@pelzflorian.de>
;;; Copyright © 2023 Ivana Drazovic <iv.dra@hotmail.com>
@@ -184,6 +185,7 @@
#:use-module (gnu packages libedit)
#:use-module (gnu packages libidn)
#:use-module (gnu packages libunwind)
+ #:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages lisp)
#:use-module (gnu packages llvm)
@@ -12913,6 +12915,120 @@ on the pitch of the voice and the rhythm of singing.")
Jongg tiles from the playing field by taking one matching pair at a time.")
(license license:gpl2+)))
+(define-public sc-controller
+ (package
+ (name "sc-controller")
+ (version "0.4.8.9")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Ryochan7/sc-controller")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1410yj6947yq43wwrj3cwllalalggzmd74sad70jd1niwj85yvna"
+ ))))
+ (build-system python-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (delete 'sanity-check)
+ (add-after 'unpack 'remove-bundled-libraries
+ (lambda _
+ (with-directory-excursion "scc/lib"
+ (for-each delete-file
+ '("enum.py" "jsonencoder.py"
+ "libusb1.py" "usb1.py")))
+ ;; libusb1 fixes
+ (substitute* '("scc/uinput.py"
+ "scc/drivers/usb.py"
+ "scc/drivers/steamdeck.py"
+ "scc/drivers/sc_by_cable.py")
+ (("scc\\.lib\\.libusb1")
+ "libusb1")
+ (("scc\\.lib\\.usb1")
+ "usb1")
+ (("from scc\\.lib import usb1")
+ "import usb1"))
+ ;; enum fixes
+ (substitute* "scc/cemuhook_server.py"
+ (("scc\\.lib\\.enum")
+ "enum"))
+ ;; simplejson fixes
+ (substitute* "scc/profile.py"
+ (("from scc\\.lib\\.jsonencoder")
+ "from simplejson"))))
+ (add-after 'unpack 'fix-paths
+ (lambda _
+ (substitute* "scc/lib/xwrappers.py"
+ (("libXfixes.so")
+ (string-append (assoc-ref %build-inputs
+ "libxfixes")
+ "/lib/libXfixes.so"))
+ (("libXext.so")
+ (string-append (assoc-ref %build-inputs
+ "libxext")
+ "/lib/libXext.so")))
+ (substitute* "scc/lib/eudevmonitor.py"
+ (("libudev.so")
+ (string-append (assoc-ref %build-inputs "eudev")
+ "/lib/libudev.so")))
+ (substitute* "scc/uinput.py"
+ (("/usr/include")
+ (string-append (assoc-ref %build-inputs
+ "linux-libre-headers")
+ "/include")))
+ (substitute* '("scc/gui/app.py"
+ "scc/osd/inputdisplay.py"
+ "scc/paths.py")
+ (("/usr/share/scc")
+ (string-append #$output "/share/scc")))))
+ (add-after 'wrap 'gi-wrap
+ (lambda _
+ (for-each (lambda (prog)
+ (wrap-program (string-append #$output
+ "/bin/"
+ prog)
+ `("GI_TYPELIB_PATH" =
+ (,(getenv
+ "GI_TYPELIB_PATH")))))
+ '("sc-controller" "scc"
+ "scc-daemon"
+ "scc-osd-dialog"
+ "scc-osd-keyboard"
+ "scc-osd-launcher"
+ "scc-osd-menu"
+ "scc-osd-message"
+ "scc-osd-radial-menu"
+ "scc-osd-show-bindings")))))))
+ (inputs (list bash-minimal
+ gtk+
+ gtk-layer-shell
+ eudev
+ libxext
+ libxfixes
+ linux-libre-headers
+ python-pycairo
+ python-evdev
+ python-libusb1
+ python-pylibacl
+ python-pygobject
+ python-simplejson
+ python-vdf
+ zlib))
+ (home-page "https://github.com/Ryochan7/sc-controller")
+ (synopsis "Driver and configuration tool for game controllers")
+ (description
+ "Driver and configuration tool for game controllers such as
+the Steam Controller, Steam Deck, and Dual Shock 4. Install the included udev
+rules to solve permissions issues.")
+ (license (list
+ ;; lib/enum.py, lib/usb1.py, and lib/libusb1.py are deleted but
+ ;; do have other licenses.
+ license:cc0 ; images/*, default_profiles/*, profile_examples/*, default_menus/*
+ license:zlib ; scripts/gamecontrollerdb.txt
+ license:gpl2)))) ; everything else
+
(define-public steam-devices-udev-rules
;; Last release from 2019-04-10
(let ((commit "13443480a64fe8f10676606bd57da6de89f8ccb1")