[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
?