[PATCH 0/4] gnu: Add gamescope.

  • Open
  • quality assurance status badge
Details
One participant
  • dan
Owner
unassigned
Submitted by
dan
Severity
normal
D
(address . guix-patches@gnu.org)
cover.1713687359.git.i@dan.games
This patch series added gamescope, the micro-compositor for running games, and
a few its dependencies. Noted that the latest gamescope release is 3.14.4,
but it depends on the latest version of wayland-protocols. Besides, I noticed
that libavif is updated in https://issues.guix.gnu.org/70395,but this is a
patch series trying to update some KDE packages, and since a lot of packages
depends on libavif, it would take some time for this update to landed in
master. In the meantime, i added a new package libavif-1.0.

dan (4):
gnu: Add libliftoff.
gnu: Add vkroots.
gnu: Add libavif-1.0.
gnu: Add gamescope.

gnu/packages/freedesktop.scm | 23 ++++++++
gnu/packages/image.scm | 14 +++++
gnu/packages/vulkan.scm | 36 ++++++++++++
gnu/packages/wm.scm | 110 +++++++++++++++++++++++++++++++++++
4 files changed, 183 insertions(+)


base-commit: 38b88d710ea13ba024aed0543bc2862772cdb645
--
2.41.0
D
[PATCH 1/4] gnu: Add libliftoff.
(address . 70493@debbugs.gnu.org)(address . john.kehayias@protonmail.com)
2625fe976febff8993347418635cf60dc12ab90b.1713687359.git.i@dan.games
* gnu/packages/freedesktop.scm (libliftoff): New variable.

Change-Id: Ia66bb09db6b09c63fbc6223f58d6a0ebf6f4c546
---
gnu/packages/freedesktop.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 339297c087..d0c14e8077 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -35,6 +35,7 @@
;;; Copyright © 2023 Alex Devaure <ajadevaure@gmail.com>
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2024 dan <i@dan.games>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -3234,3 +3235,25 @@ (define-public waypipe
"Waypipe is a proxy for Wayland clients, with the aim of
supporting behavior like @samp{ssh -X}.")
(license license:expat)))
+
+(define-public libliftoff
+ (package
+ (name "libliftoff")
+ (version "0.4.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.freedesktop.org/emersion/libliftoff")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256 (base32 "1ikjp638d655ycaqkdnzhb12d29kkbb3a46lqhbhsfc8vsqj3z1l"))))
+ (build-system meson-build-system)
+ (inputs (list libdrm))
+ (native-inputs (list pkg-config))
+ (home-page "https://gitlab.freedesktop.org/emersion/libliftoff")
+ (synopsis "Lightweight KMS plane library")
+ (description "libliftoff eases the use of KMS planes from userspace
+without standing in your way. Users create \"virtual planes\" called layers,
+set KMS properties on them, and libliftoff will pick hardware planes for these
+layers if possible.")
+ (license license:expat)))
--
2.41.0
D
[PATCH 2/4] gnu: Add vkroots.
(address . 70493@debbugs.gnu.org)(address . john.kehayias@protonmail.com)
232dbbe3210c63a837456952493d54dd0986ce9a.1713687359.git.i@dan.games
* gnu/packages/vulkan.scm (vkroots): New variable.

Change-Id: I57dfea58254c9bcf001d2052156f2c17dde109c4
---
gnu/packages/vulkan.scm | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 23d0c72ee3..f3c6e619a8 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -32,6 +32,7 @@ (define-module (gnu packages vulkan)
#:use-module (guix gexp)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages bison)
@@ -634,3 +635,38 @@ (define-public vulkan-utility-libraries
(synopsis "Utility libraries for Vulkan developers")
(description "Utility libraries for Vulkan developers.")
(license license:asl2.0)))
+
+(define-public vkroots
+ (let ((commit "d5ef31abc7cb5c69aee4bcb67b10dd543c1ff7ac")
+ (revision "0"))
+ (package
+ (name "vkroots")
+ (version (git-version "0.0.0" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Joshua-Ashton/vkroots")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0g2mh8l0xzxzr4yjyafzv76n7jk9043dcbf5mpqwpwmjx88m5nc0"))))
+ (build-system meson-build-system)
+ (arguments (list #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-vulkan
+ (lambda _
+ (substitute* "gen/make_vkroots"
+ (("\\.\\.") (getcwd)))))
+ (add-before 'install 'gen-vkroots
+ (lambda _
+ (invoke "python3"
+ "../source/gen/make_vkroots"
+ "-x"
+ (string-append
+ #$(this-package-native-input "vulkan-headers")
+ "/share/vulkan/registry/vk.xml")))))))
+ (native-inputs (list python vulkan-headers))
+ (home-page "https://github.com/Joshua-Ashton/vkroots")
+ (synopsis "Simple method of making Vulkan layers")
+ (description "vkroots is a framework for writing Vulkan layers that
+takes all the complexity away from you.")
+ (license license:expat))))
--
2.41.0
D
[PATCH 3/4] gnu: Add libavif-1.0.
(address . 70493@debbugs.gnu.org)(address . john.kehayias@protonmail.com)
97e94aa7938b7108c0b2e09e4664c831fb91fe57.1713687359.git.i@dan.games
* gnu/packages/image.scm (libavif-1.0): New variable.

Change-Id: Ie3c9dc1964ea0d0a97cde4e8802f8dd1308f0e0b
---
gnu/packages/image.scm | 14 ++++++++++++++
1 file changed, 14 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index fae45363ad..5ed2acda8c 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -39,6 +39,7 @@
;;; Copyright © 2023-2024 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2023 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2024 chris <chris@bumblehead.com>
+;;; Copyright © 2024 dan <i@dan.games>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -2544,6 +2545,19 @@ (define-public libavif
(home-page "https://github.com/AOMediaCodec/libavif")
(license (list license:bsd-2))))
+(define-public libavif-1.0
+ (package
+ (inherit libavif)
+ (version "1.0.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/AOMediaCodec/libavif")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name (package-name libavif) version))
+ (sha256
+ (base32 "0k72q7yvfdn92wkslyifw14319nm981a8r3kd84i4ylxmrkgi0zm"))))))
+
(define-public libheif
(package
(name "libheif")
--
2.41.0
D
[PATCH 4/4] gnu: Add gamescope.
(address . 70493@debbugs.gnu.org)(address . john.kehayias@protonmail.com)
0ca550e23940a3918fd7f42e9383ee188cbea9b5.1713687359.git.i@dan.games
* gnu/packages/wm.scm (%gamescope-version): New variable.
(reshade-for-gamescope): New variable.
(gamescope): New variable.

Change-Id: If86bc6127144854189f8fa66415f32bc80a26d6b
---
gnu/packages/wm.scm | 110 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 110 insertions(+)

Toggle diff (154 lines)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 2eecc0ed2a..8d816e2e28 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -70,6 +70,7 @@
;;; Copyright © 2024 Ahmad Draidi <a.r.draidi@redscript.org>
;;; Copyright © 2024 chris <chris@bumblehead.com>
;;; Copyright © 2024 Erik Eduardo Alonso Hernández <erik@erikeduardo.xyz>
+;;; Copyright © 2024 dan <i@dan.games>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -105,6 +106,7 @@ (define-module (gnu packages wm)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages benchmark)
#:use-module (gnu packages admin)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
@@ -142,6 +144,7 @@ (define-module (gnu packages wm)
#:use-module (gnu packages logging)
#:use-module (gnu packages lua)
#:use-module (gnu packages man)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages mpd)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages music)
@@ -155,12 +158,15 @@ (define-module (gnu packages wm)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
+ #:use-module (gnu packages sdl)
#:use-module (gnu packages serialization)
#:use-module (gnu packages sphinx)
+ #:use-module (gnu packages stb)
#:use-module (gnu packages suckless)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils)
#:use-module (gnu packages time)
+ #:use-module (gnu packages vulkan)
#:use-module (gnu packages web)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
@@ -3856,3 +3862,107 @@ (define-public yambar-wayland
for short) for X11 and Wayland, that goes to great lengths to be both CPU and
battery efficient---polling is only done when absolutely necessary.")
(license license:expat)))
+
+(define %gamescope-version "3.14.2")
+
+(define reshade-for-gamescope
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Joshua-Ashton/reshade")
+ (commit "9fdbea6892f9959fdc18095d035976c574b268b7")))
+ (file-name (git-file-name "reshade-for-gamescope" %gamescope-version))
+ (sha256
+ (base32 "1par0ay973l0bvlz0fsg3v1fxgrnn888yc0hx3ikkyc0jbbf59bg"))))
+
+(define-public gamescope
+ (package
+ (name "gamescope")
+ (version %gamescope-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ValveSoftware/gamescope")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0x7gh1rr2ismqfkaa4wm7025acjpgmims41iwzdcps5pg8nxmmhh"))))
+ (build-system meson-build-system)
+ (arguments
+ (list #:configure-flags #~(list "-Dpipewire=enabled"
+ "-Denable_openvr_support=false"
+ "-Dforce_fallback_for=[]"
+ (string-append "-Dc_args=-DHWDATA_PNP_IDS=\""
+ #$(this-package-native-input "hwdata")
+ "/share/hwdata/pnp.ids\""))
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-deps
+ (lambda _
+ (substitute* "src/reshade_effect_manager.cpp"
+ (("/usr") #$output))
+ (substitute* "src/meson.build"
+ ;; patch stb
+ (("dependency\\('stb'\\)")
+ (format #f "declare_dependency(include_directories: ['~a'])"
+ (string-join
+ '#$(map (lambda (label) (this-package-native-input label))
+ (list "stb-image"
+ "stb-image-resize"
+ "stb-image-write"))
+ "','")))
+ ;; patch libdisplay-info
+ (("< 0.2.0")
+ (string-append "<= " #$(package-version (this-package-input "libdisplay-info"))))
+ (("reshade/") (string-append #$reshade-for-gamescope "/"))
+ (("../thirdparty/SPIRV-Headers") #$(this-package-native-input "spirv-headers"))))))))
+ (inputs
+ (list glm
+ libavif-1.0
+ libcap
+ libdisplay-info
+ libdrm
+ libinput
+ libliftoff
+ libx11
+ libxcomposite
+ libxcursor
+ libxdamage
+ libxext
+ libxkbcommon
+ libxmu
+ libxrender
+ libxres
+ libxt
+ libxtst
+ pipewire
+ sdl2
+ vulkan-loader
+ wayland
+ wlroots))
+ (native-inputs
+ (list benchmark
+ ;; Lazily resolve the gcc-toolchain-12 to avoid a circular dependency.
+ (module-ref (resolve-interface '(gnu packages commencement))
+ 'gcc-toolchain-12)
+ glslang
+ `(,hwdata "pnp")
+ pkg-config
+ stb-image
+ stb-image-resize
+ stb-image-write
+ spirv-headers
+ vkroots
+ vulkan-headers
+ wayland-protocols))
+ (home-page "https://github.com/ValveSoftware/gamescope")
+ (synopsis "Micro-compositor for running games")
+ (description
+ "gamescope is a micro-compositor for running games. Its goal is to
+provide an isolated compositor that is tailored towards gaming and supports
+many gaming-centric features such as:
+@itemize
+@item Spoofing resolutions.
+@item Upscaling.
+@item Limiting framerates.
+@end itemize")
+ (license license:bsd-2)))
--
2.41.0
?
Your comment

Commenting via the web interface is currently disabled.

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

To respond to this issue using the mumi CLI, first switch to it
mumi current 70493
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