GNU bug report logs - #70493
[PATCH 0/4] gnu: Add gamescope.

Previous Next

Package: guix-patches;

Reported by: dan <i <at> dan.games>

Date: Sun, 21 Apr 2024 08:21:03 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 70493 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#70493; Package guix-patches. (Sun, 21 Apr 2024 08:21:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to dan <i <at> dan.games>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sun, 21 Apr 2024 08:21:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: dan <i <at> dan.games>
To: guix-patches <at> gnu.org
Subject: [PATCH 0/4] gnu: Add gamescope.
Date: Sun, 21 Apr 2024 16:19:42 +0800
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





Information forwarded to guix-patches <at> gnu.org:
bug#70493; Package guix-patches. (Sun, 21 Apr 2024 08:31:01 GMT) Full text and rfc822 format available.

Message #8 received at 70493 <at> debbugs.gnu.org (full text, mbox):

From: dan <i <at> dan.games>
To: 70493 <at> debbugs.gnu.org
Cc: john.kehayias <at> protonmail.com
Subject: [PATCH 1/4] gnu: Add libliftoff.
Date: Sun, 21 Apr 2024 16:29:29 +0800
* gnu/packages/freedesktop.scm (libliftoff): New variable.

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

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 <at> gmail.com>
 ;;; Copyright © 2023 Bruno Victal <mirai <at> makinata.eu>
 ;;; Copyright © 2024 Zheng Junjie <873216071 <at> qq.com>
+;;; Copyright © 2024 dan <i <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#70493; Package guix-patches. (Sun, 21 Apr 2024 08:31:02 GMT) Full text and rfc822 format available.

Message #11 received at 70493 <at> debbugs.gnu.org (full text, mbox):

From: dan <i <at> dan.games>
To: 70493 <at> debbugs.gnu.org
Cc: john.kehayias <at> protonmail.com
Subject: [PATCH 2/4] gnu: Add vkroots.
Date: Sun, 21 Apr 2024 16:29:30 +0800
* gnu/packages/vulkan.scm (vkroots): New variable.

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

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





Information forwarded to guix-patches <at> gnu.org:
bug#70493; Package guix-patches. (Sun, 21 Apr 2024 08:31:04 GMT) Full text and rfc822 format available.

Message #14 received at 70493 <at> debbugs.gnu.org (full text, mbox):

From: dan <i <at> dan.games>
To: 70493 <at> debbugs.gnu.org
Cc: john.kehayias <at> protonmail.com
Subject: [PATCH 3/4] gnu: Add libavif-1.0.
Date: Sun, 21 Apr 2024 16:29:31 +0800
* gnu/packages/image.scm (libavif-1.0): New variable.

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

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 <at> nicolasgoaziou.fr>
 ;;; Copyright © 2023 Artyom V. Poptsov <poptsov.artyom <at> gmail.com>
 ;;; Copyright © 2024 chris <chris <at> bumblehead.com>
+;;; Copyright © 2024 dan <i <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#70493; Package guix-patches. (Sun, 21 Apr 2024 08:31:06 GMT) Full text and rfc822 format available.

Message #17 received at 70493 <at> debbugs.gnu.org (full text, mbox):

From: dan <i <at> dan.games>
To: 70493 <at> debbugs.gnu.org
Cc: john.kehayias <at> protonmail.com
Subject: [PATCH 4/4] gnu: Add gamescope.
Date: Sun, 21 Apr 2024 16:29:32 +0800
* 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(+)

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 <at> redscript.org>
 ;;; Copyright © 2024 chris <chris <at> bumblehead.com>
 ;;; Copyright © 2024 Erik Eduardo Alonso Hernández <erik <at> erikeduardo.xyz>
+;;; Copyright © 2024 dan <i <at> 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





Information forwarded to i <at> dan.games, guix-patches <at> gnu.org:
bug#70493; Package guix-patches. (Sun, 11 May 2025 22:48:02 GMT) Full text and rfc822 format available.

Message #20 received at 70493 <at> debbugs.gnu.org (full text, mbox):

From: aurtzy <aurtzy <at> gmail.com>
To: 70493 <at> debbugs.gnu.org
Cc: aurtzy <aurtzy <at> gmail.com>, Demis Balbach <db <at> minikn.xyz>, dan <i <at> dan.games>
Subject: [PATCH v2] gnu: Add gamescope.
Date: Sun, 11 May 2025 18:40:39 -0400
From: dan <i <at> dan.games>

* gnu/packages/wm.scm (%gamescope-version, libliftoff-for-gamescope,
reshade-for-gamescope, vkroots-for-gamescope, wlroots-for-gamescope,
gamescope): New variables.

Change-Id: If86bc6127144854189f8fa66415f32bc80a26d6b
Co-authored-by: aurtzy <aurtzy <at> gmail.com>
Co-authored-by: Demis Balbach <db <at> minikn.xyz>
---

Hey,

(Coming from: <https://gitlab.com/nonguix/nonguix/-/merge_requests/452>)

Sorry about the long delay!  Finally got around to looking at this again.  I've
attached a v2 with our patches combined in addition to any updates since then,
with all notable changes from v1 listed below.

This depends on a pending patch to add stb-image-resize [1].

Changes from dan's v1:
- Update gamescope version to 3.16.4.
- Drop libavif-1.0 patch; we can use libavif which is updated, now.
- Convert libliftoff and vkroots patches to libliftoff-for-gamescope and
  vkroots-for-gamescope due to upstream relying on unstable features and
  strongly recommending against using different versions [2].  Also subject
  wlroots to this treatment.
- Use origin snippet to add pinned submodule/dependency sources.
- Remove HWDATA_PNP_IDS configure flag, since (IIUC) hwdata outputs have since
  been merged into the default "out" output which made pkgconfig able to
  automatically find hwdata files.
- Add a 'patch-loader-path phase to fix an error when starting gamescope due to
  "Failed to load vulkan module" (related issue [3]).
- Add a 'patch-version phase that patches in version number instead of trying to
  execute git to infer version from tag.
- Opt for patching stb via wrap file instead of meson.build which should
  (probably) be less brittle.
- Drop libdisplay-info patch, since versions up to 0.3.0 are accepted now.
- Use gcc instead of gcc-toolchain (toolchain version doesn't seem to be
  needed?).  Also use newer version (gcc-14) since gamescope 3.16.4 would fail
  to build without at least gcc-13.
- Include various additional inputs that are searched for during the build.


Related side note: I've managed to get gamescope with the "nice" capability
working with the following services (some personal config stuff omitted so it
can work for others; source here [4]), although I'm still trying to figure out
if anything can be done about removing a hack that's currently needed:
#+begin_src scheme
  ;; gamescopereaper needs to be available in PATH.
  (list (simple-service 'name
                        profile-service-type
                        (list gamescope))
        (simple-service 'name
                        privileged-program-service-type
                        (list (privileged-program
                               (program (file-append gamescope "/bin/gamescope"))
                               (capabilities "cap_sys_nice=eip"))))
        ;; HACK: Using privileges causes gamescope to not inherit
        ;; environment, so it fails an attempt to search for needed
        ;; vulkan files.  Conveniently provide them at this location,
        ;; which gamescope searches by default.
        (simple-service 'name
                        etc-service-type
                        `(("vulkan" ,(file-append mesa "/share/vulkan")))))
#+end_src

[1] https://issues.guix.gnu.org/78294

[2] https://github.com/ValveSoftware/gamescope/commit/7741cd587fa2274989f3307a3c6f23ab08e98460

[3] https://issues.guix.gnu.org/71109

[4] https://github.com/aurtzy/guix-config/blob/54eeb0a1587a90b4c59ae88e96c1609ba6cebeba/modules/my-guix/mods/entertainment.scm#L70

Cheers,

aurtzy

 gnu/packages/wm.scm | 182 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 181 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 66dd5f2035..6d01066570 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -81,6 +81,8 @@
 ;;; Copyright © 2025 Tomáš Čech <sleep_walker <at> gnu.org>
 ;;; Copyright © 2025 Ricardo Wurmus <rekado <at> elephly.net>
 ;;; Copyright © 2025 Junker <dk <at> junkeria.club>
+;;; Copyright © 2022 Demis Balbach <db <at> minikn.xyz>
+;;; Copyright © 2025 aurtzy <aurtzy <at> gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -117,6 +119,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)
@@ -179,8 +182,10 @@ (define-module (gnu packages wm)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages regex)
+  #: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)
@@ -189,7 +194,8 @@ (define-module (gnu packages wm)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages xorg))
+  #:use-module (gnu packages xorg)
+  #:use-module (srfi srfi-26))
 
 (define-public bspwm
   (package
@@ -4419,3 +4425,177 @@ (define-public scenefx
      "A drop-in replacement for the wlroots scene API that allows wayland
 compositors to render surfaces with eye-candy effects.")
     (license license:expat)))
+
+;; Upstream strongly recommends using some of its pinned dependencies due to
+;; relying on unstable features; these should be checked when updating
+;; gamescope.  See:
+;; <https://github.com/ValveSoftware/gamescope/commit/7741cd587fa2274989f3307a3c6f23ab08e98460>
+(define %gamescope-version "3.16.4")
+
+(define libliftoff-for-gamescope
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://gitlab.freedesktop.org/emersion/libliftoff.git")
+          (commit "8b08dc1c14fd019cc90ddabe34ad16596b0691f4")))
+    (file-name (git-file-name "libliftoff-for-gamescope" %gamescope-version))
+    (sha256 (base32 "163g8ndsbma7acy2k9mrnvlpb7yi4431hgkx1gygkafgwpq1ii1x"))))
+
+(define reshade-for-gamescope
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/Joshua-Ashton/reshade")
+          (commit "696b14cd6006ae9ca174e6164450619ace043283")))
+    (file-name (git-file-name "reshade-for-gamescope" %gamescope-version))
+    (sha256
+     (base32 "1zvhf3pgd8bhn8bynrsh725xn1dszsf05j8c9g6zabgv7vnz04a5"))))
+
+(define vkroots-for-gamescope
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/Joshua-Ashton/vkroots")
+          (commit "5106d8a0df95de66cc58dc1ea37e69c99afc9540")))
+    (file-name (git-file-name "vkroots-for-gamescope" %gamescope-version))
+    (sha256 (base32 "0hrp0xqq93552ipw2bmryixgm1aywnz49xagsx5rwzg2d0hwa0aa"))))
+
+(define wlroots-for-gamescope
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/Joshua-Ashton/wlroots.git")
+          (commit "4bc5333a2cbba0b0b88559f281dbde04b849e6ef")))
+    (file-name (git-file-name "wlroots-for-gamescope" %gamescope-version))
+    (sha256 (base32 "14m9j9qkaphzm3g36im43b6h92rh3xyjh7j46vw9w2qm602ndwcf"))))
+
+(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 "09h7046vwqn0w3kv1zaij4h3rcrvs1r2qlm0vva3mk3gg44fnhjl"))
+       (modules '((guix build utils)
+                  (ice-9 match)))
+       (snippet
+        #~(begin
+            ;; Add some dependencies to source tree where they're expected.
+            (for-each (match-lambda
+                        ((source dest)
+                         (copy-recursively source dest)))
+                      '((#$libliftoff-for-gamescope "subprojects/libliftoff")
+                        (#$reshade-for-gamescope "src/reshade")
+                        (#$vkroots-for-gamescope "subprojects/vkroots")
+                        (#$wlroots-for-gamescope "subprojects/wlroots")))))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:configure-flags #~(list "-Dpipewire=enabled"
+                                "-Denable_openvr_support=false")
+      #:modules '((guix build meson-build-system)
+                  (guix build utils)
+                  (srfi srfi-26))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-usr-dir
+            (lambda _
+              (substitute* "src/reshade_effect_manager.cpp"
+                (("/usr") #$output))))
+          (add-after 'unpack 'patch-loader-path
+            ;; "Failed to load vulkan module" error occurs without this patch.
+            ;; Related issue: https://issues.guix.gnu.org/71109
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "src/rendervulkan.cpp"
+                (("dlopen\\( \"libvulkan\\.so")
+                 (string-append "dlopen( \""
+                                (search-input-file
+                                 inputs "/lib/libvulkan.so"))))))
+          (add-after 'unpack 'patch-version
+            (lambda _
+              (substitute* "src/meson.build"
+                (("^vcs_tag = .*$")
+                 (string-append
+                  "vcs_tag = '" #$(package-version this-package) "'\n")))))
+          (add-after 'unpack 'patch-stb
+            (lambda _
+              (let ((stb-files-dir #+(directory-union
+                                      "stb"
+                                      (map (cut this-package-native-input <>)
+                                           (list "stb-image"
+                                                 "stb-image-write"
+                                                 "stb-image-resize")))))
+                (copy-recursively (string-append stb-files-dir "/include")
+                                  "subprojects/stb"))
+              (copy-recursively "subprojects/packagefiles/stb"
+                                "subprojects/stb")
+              (call-with-output-file "subprojects/stb.wrap"
+                (cut format <> "\
+[wrap-file]
+directory = stb
+"))))
+          (add-after 'unpack 'patch-spirv-headers
+            (lambda _
+              (substitute* "src/meson.build"
+                (("../thirdparty/SPIRV-Headers")
+                 #$(this-package-native-input "spirv-headers"))))))))
+    (native-inputs (list gcc-14
+                         glslang
+                         pkg-config
+                         python-3
+                         spirv-headers
+                         stb-image
+                         stb-image-write
+                         stb-image-resize
+                         vulkan-headers))
+    (inputs (list benchmark
+                  glm
+                  hwdata
+                  lcms
+                  libavif
+                  libdecor
+                  libdisplay-info
+                  libdrm
+                  libei
+                  libinput
+                  libseat
+                  libx11
+                  libxcomposite
+                  libxcursor
+                  libxdamage
+                  libxext
+                  libxkbcommon
+                  libxmu
+                  libxrender
+                  libxres
+                  libxt
+                  libxtst
+                  libxxf86vm
+                  luajit
+                  pipewire
+                  pixman
+                  sdl2
+                  vulkan-loader
+                  xcb-util-wm
+                  xcb-util-errors
+                  xorg-server-xwayland
+                  wayland
+                  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)))

base-commit: 8635dad843d299497bd46e036266a8b2a2abff11
-- 
2.49.0





This bug report was last modified 12 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.