[PATCH 0/2] Add sc-controller (steam controller and steam deck driver)

  • Open
  • quality assurance status badge
Details
3 participants
  • Morgan.J.Smith
  • nathan
  • Fredrik Salomonsson
Owner
unassigned
Submitted by
Morgan.J.Smith
Severity
normal
M
M
Morgan.J.Smith wrote on 10 Oct 2022 00:13
(address . guix-patches@gnu.org)
DM5PR03MB31633128461B0C8DE3048BBFC5219@DM5PR03MB3163.namprd03.prod.outlook.com
Hello!

This will allow users to use and configure some gaming controllers.

[PATCH 1/2] gnu: Add python-vdf.
[PATCH 2/2] gnu: Add sc-controller.

Thanks,

Morgan
M
M
Morgan.J.Smith wrote on 10 Oct 2022 00:24
[PATCH 1/2] gnu: Add python-vdf.
(address . 58403@debbugs.gnu.org)(name . Morgan Smith)(address . Morgan.J.Smith@outlook.com)
DM5PR03MB316352A4286DFA19FEB763CCC5219@DM5PR03MB3163.namprd03.prod.outlook.com
From: Morgan Smith <Morgan.J.Smith@outlook.com>

* gnu/packages/python-xyz.scm (python-vdf): New variable.
---
gnu/packages/python-xyz.scm | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

Toggle diff (29 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 60870f5447..51f24e59a9 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -2466,6 +2466,22 @@ (define-public python-case
some helpful Python 2 compatibility convenience methods.")
(license license:bsd-3)))
+(define-public python-vdf
+ (package
+ (name "python-vdf")
+ (version "3.4")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "vdf" version))
+ (sha256
+ (base32
+ "1bz2gn04pl6rj2mawlzlirz1ygg4rdypq0pxbyg018873vs1jm7x"))))
+ (build-system python-build-system)
+ (home-page "https://github.com/ValvePython/vdf")
+ (synopsis "Library for working with Valve's VDF text format")
+ (description "Library for working with Valve's VDF text format")
+ (license license:expat)))
+
(define-public python-verboselogs
(package
(name "python-verboselogs")
--
2.37.3
M
M
Morgan.J.Smith wrote on 10 Oct 2022 00:24
[PATCH 2/2] gnu: Add sc-controller.
(address . 58403@debbugs.gnu.org)(name . Morgan Smith)(address . Morgan.J.Smith@outlook.com)
DM5PR03MB31630631EDE9FC17D46D576FC5219@DM5PR03MB3163.namprd03.prod.outlook.com
From: Morgan Smith <Morgan.J.Smith@outlook.com>

* gnu/packages/games.scm (sc-controller): New variable.
---
gnu/packages/games.scm | 117 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 117 insertions(+)

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
N
N
nathan wrote on 5 Apr 02:46 +0200
[bug#58403] [PATCH 2/2] gnu: Add sc-controller
d90fbac4-49b4-3352-ec0b-5046f99230b3@nborghese.com
tested the package with my steam controller (wired) and it just works.

i didn't test the udev rules, i guess i already had some on my system
that worked for this.

thanks
F
F
Fredrik Salomonsson wrote on 6 Apr 04:49 +0200
[PATCH 0/2] Add sc-controller (steam controller and steam deck driver)
(address . 58403@debbugs.gnu.org)
87bk6nqk6r.fsf@posteo.net
Hi,

I tested the patches with my steam controller. It is connected wireless
using the usb dongle. And yeah it just works.

I was hoping to test this with my steam deck as well but having issues
booting into my guix partition. If I get that running I'll report back,
but I would expect it to just works for that also.

Thanks

--
s/Fred[re]+i[ck]+/Fredrik/g
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 58403@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 58403
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch