all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Morgan.J.Smith@outlook.com
To: 58403@debbugs.gnu.org
Cc: Morgan Smith <Morgan.J.Smith@outlook.com>
Subject: [bug#58403] [PATCH 2/2] gnu: Add sc-controller.
Date: Sun,  9 Oct 2022 18:24:32 -0400	[thread overview]
Message-ID: <DM5PR03MB31630631EDE9FC17D46D576FC5219@DM5PR03MB3163.namprd03.prod.outlook.com> (raw)
In-Reply-To: <20221009222430.21477-1-Morgan.J.Smith@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(+)

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





       reply	other threads:[~2022-10-09 22:26 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20221009222430.21477-1-Morgan.J.Smith@outlook.com>
2022-10-09 22:24 ` Morgan.J.Smith [this message]
2022-10-09 22:13 [bug#58403] [PATCH 0/2] Add sc-controller (steam controller and steam deck driver) Morgan.J.Smith
2024-04-05  0:46 ` [bug#58403] [PATCH 2/2] gnu: Add sc-controller nathan via Guix-patches via

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM5PR03MB31630631EDE9FC17D46D576FC5219@DM5PR03MB3163.namprd03.prod.outlook.com \
    --to=morgan.j.smith@outlook.com \
    --cc=58403@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.