channel

The Guix channel used by MonasTech systems
Log | Files | Refs | README

commit 198d93f635bc4f6431ce869303ad336aeb147922
parent 73a540e093edc74074a6bc368f549aab3db17618
Author: Luke Willis <lukejw@loquat.dev>
Date:   Wed, 17 Dec 2025 15:36:49 -0500

Add prismlauncher package

Diffstat:
Amt/packages/games.scm | 134+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 134 insertions(+), 0 deletions(-)

diff --git a/mt/packages/games.scm b/mt/packages/games.scm @@ -0,0 +1,134 @@ +(define-module (mt packages games) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module (gnu packages audio) + #:use-module (gnu packages compression) + #:use-module (gnu packages elf) + #:use-module (gnu packages gl) + #:use-module (gnu packages image) + #:use-module (gnu packages java) + #:use-module (gnu packages kde-frameworks) + #:use-module (gnu packages libedit) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages qt) + #:use-module (gnu packages speech) + #:use-module (gnu packages sqlite) + #:use-module (gnu packages video) + #:use-module (guix build-system cmake) + #:use-module (guix build-system qt) + #:use-module (guix download) + #:use-module (guix gexp)) + +;; Controller patches for GLFW 3.4 +;; Pulled from https://github.com/mdqinc/SDL_GameControllerDB + +;; Mappings for the 8BitDo Ultimate 2C controller. +(define 8bitdo-ultimate-2c-patch + (plain-file "8bitdo-ultimate-2c-glfw-3.4.patch" "\ +--- a/src/mappings.h 2025-10-23 11:33:49.165631631 -0400 ++++ b/src/mappings.h 2025-10-23 11:35:10.850409920 -0400 +@@ -996,6 +996,9 @@ + \"03000000c0160000e105000001010000,Xin-Mo Xin-Mo Dual Arcade,a:b4,b:b3,back:b6,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b9,leftshoulder:b2,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b1,y:b0,platform:Linux,\", + \"03000000120c0000100e000011010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,\", + \"03000000120c0000101e000011010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux,\", ++\"03000000c82d00000a31000014010000,8BitDo Ultimate 2C,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,\", ++\"03000000c82d00001d30000011010000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,\", ++\"05000000c82d00001b30000001000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux,\" + #endif // GLFW_BUILD_LINUX_JOYSTICK + };")) + +(define-public glfw-mc + (package + (inherit glfw-3.4) + (name "glfw-mc") + (version "3.4") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/glfw/glfw" + "/releases/download/" version + "/glfw-" version ".zip")) + (sha256 + (base32 + "1sd396kkn53myp61kxrd18h7b1q4ix173hhxhvl0iz8j4x5h1v5m")) + (patches (list 8bitdo-ultimate-2c-patch)))) + (synopsis "A patched version of GLFW 3.4 that works better with Minecraft +out of the box. Intended to replace the bundled version."))) + +;; For playing Minecraft. Setup to run on Wayland by default. +;; TODO: Support X11 +(define-public prismlauncher + (package + (name "prismlauncher") + (version "9.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/PrismLauncher/PrismLauncher") + (recursive? #t) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1xxgyx0z5r3hk3yk4gglbfwvq2qk1j9a0dkrv55j4vrlkni79nrm")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Patch default settings to use native libraries + (add-after 'unpack 'change-default-settings + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "launcher/Application.cpp" + (("\"UseNativeGLFW\", false") + "\"UseNativeGLFW\", true") + (("\"UseNativeOpenAL\", false") + "\"UseNativeOpenAL\", true")))) + ;; Add required environment variables + (add-after 'install 'patch-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin/prismlauncher")) + (jdk21 (assoc-ref inputs "jdk21")) + (jdk17 (assoc-ref inputs "jdk17")) + (qtwayland (assoc-ref inputs "qtwayland")) + (qtsvg (assoc-ref inputs "qtsvg"))) + (wrap-program bin + ;; Add all the OpenJDK versions for Minecraft as needed + `("PRISMLAUNCHER_JAVA_PATHS" ":" suffix (,(string-append jdk21 "/bin/java") + ,(string-append jdk17 "/bin/java"))) + ;; Fix QT plugins (primarily for wayland support) + `("QT_PLUGIN_PATH" ":" prefix ,(map (lambda (package) + (string-append package "/lib/qt6/plugins")) + (list qtwayland qtsvg))) + ;; Add runtime libraries for MC + ;; TODO: Provide these via PrismLauncher wrapper + `("LD_LIBRARY_PATH" ":" prefix + (,@(map (lambda (dep) + (string-append (assoc-ref inputs dep) + "/lib")) + '("glfw" "mesa" "pulseaudio" "openal" "flite"))))) + #t)))))) + (native-inputs (list pkg-config extra-cmake-modules)) + (inputs + `(("zlib" ,zlib) + ("qtbase" ,qtbase) + ("qt5compat" ,qt5compat) + ("qtnetworkauth" ,qtnetworkauth) + ("qtwayland" ,qtwayland) + ("qtsvg" ,qtsvg) + ;; Java versions to include + ("jdk17" ,openjdk17 "jdk") + ("jdk21" ,openjdk21 "jdk") + ;; Runtime deps for MC itself + ("glfw" ,glfw-mc) + ("mesa" ,mesa) + ("flite" ,flite) + ("openal" ,openal) + ("pulseaudio" ,pulseaudio))) + (home-page "https://prismlauncher.org/") + (synopsis #f) + (description #f) + (license gpl3)))