Toggle diff (158 lines)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 246472c699..809fbc9ef7 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -74,6 +74,7 @@
;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 Hendursaga <hendursaga@aol.com>
+;;; Copyright © 2022 Morgan Smith <Morgan.J.Smith@outlook.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -100,6 +101,7 @@ (define-module (gnu packages games)
#:use-module (guix svn-download)
#:use-module (guix gexp)
#:use-module (gnu packages)
+ #:use-module (gnu packages acl)
#:use-module (gnu packages adns)
#:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
@@ -162,6 +164,7 @@ (define-module (gnu packages games)
#: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 llvm)
#:use-module (gnu packages lua)
@@ -185,6 +188,7 @@ (define-module (gnu packages games)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-build)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
@@ -11160,6 +11164,119 @@ (define-public freerct
and unsafe rides. Which path will you take?")
(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) ;; XXX: no clue how python works
+ (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 "d87ef558408c5e7a1a793d738db4c9dc2cb5f8fa")
--
2.37.3