Merge branch 'master' into 'master'

nongnu: Add steamos-modeswitch-inhibitor; steamos-compositor-plus.

See merge request nonguix/nonguix!262
This commit is contained in:
Demis Balbach 2023-05-15 14:26:32 +00:00
commit e92b084b2b

View File

@ -44,12 +44,14 @@
#:use-module (guix packages)
#:use-module (guix records)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (guix transformations)
#:use-module (gnu packages)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages certs)
@ -72,12 +74,15 @@
#:use-module (gnu packages logging)
#:use-module (nongnu packages nvidia)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages sdl)
#:use-module (gnu packages toolkits)
#:use-module (gnu packages video)
#:use-module (gnu packages xorg)
#:use-module (nonguix utils))
(define-record-type* <nonguix-container>
@ -736,3 +741,163 @@ all games will be installed."))))
(description "ProtonUp-ng is a CLI program and API to automate the installation
and update of GloriousEggroll's Proton-GE.")
(license license:gpl3)))
(define-public steamos-modeswitch-inhibitor
(package
(name "steamos-modeswitch-inhibitor")
(version "1.10")
(source (origin
(method url-fetch)
(uri
(string-append
"http://repo.steampowered.com/steamos/pool/main/s/steamos-modeswitch-inhibitor/steamos-modeswitch-inhibitor_"
version
".tar.xz"))
(sha256
(base32
"1lskfb4l87s3naz2gmc22q0xzvlhblywf5z8lsiqnkrrxnpbbwj7"))))
(native-inputs
(list autoconf
automake
pkg-config))
(inputs
(list libxxf86vm
libx11
libxrender
libxrandr))
(build-system gnu-build-system)
(home-page "http://repo.steampowered.com/steamos/pool/main/s/steamos-modeswitch-inhibitor/")
(synopsis "SteamOS Mode Switch Inhibitor")
(description "Shared library which fakes any mode switch attempts to prevent full screen apps from changing resolution.")
(license license:gpl3+)))
(define-public steamos-compositor-plus
(let ((commit "e4b99dd5f56a388aa24fe3055d0e983cb3d5d32a")
(revision "0")
(version "1.3.0"))
(package
(name "steamos-compositor-plus")
(version (git-version version revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ChimeraOS/steamos-compositor-plus")
(commit commit)))
(sha256
(base32 "0rqckj05389djc4ahzfy98p3z0p884gbbl94lbm06za72bhnidr5"))
(file-name (git-file-name name version))))
(arguments
(list
#:phases
#~(modify-phases
%standard-phases
(add-after 'patch-source-shebangs 'copy-scripts
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(share (string-append out "/share"))
(src (string-append share "/steamos-compositor-plus/bin"))
(scripts (string-append bin "/scripts")))
(mkdir-p scripts)
(copy-recursively "./usr/share" share)
(copy-recursively "./usr/bin" bin)
(find-files src (lambda (file stat)
(symlink file (string-append scripts "/" (basename file))))))))
(add-after 'copy-scripts 'patch-bin
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(share (string-append out "/share"))
(src (string-append share "/steamos-compositor-plus/bin"))
(bin (string-append out "/bin"))
(aplay (string-append (assoc-ref inputs "alsa-utils") "/bin/aplay"))
(pamixer (string-append (assoc-ref inputs "pamixer") "/bin/pamixer"))
(udevadm (string-append (assoc-ref inputs "eudev") "/bin/udevadm"))
(xset (string-append (assoc-ref inputs "xset") "/bin/xset"))
(xrandr (string-append (assoc-ref inputs "xrandr") "/bin/xrandr"))
(xinput (string-append (assoc-ref inputs "xinput") "/bin/xinput"))
(grep (string-append (assoc-ref inputs "grep") "/bin/grep"))
(steam (string-append (assoc-ref inputs "steam") "/bin/steam"))
(modeswitch-inhibitor (string-append
(assoc-ref inputs "steamos-modeswitch-inhibitor")
"/lib/libmodeswitch_inhibitor.so")))
(substitute* "./usr/bin/steamos-session"
;; No need to export scripts to PATH.
(("export.+\\{PATH\\}" line) (string-append "#" line))
(("\"steam ") (string-append "\"" steam " "))
(("export.+so" line) (string-append "export" " " "LD_PRELOAD=" modeswitch-inhibitor))
(("set_hd_mode.sh") (string-append bin "/scripts/set_hd_mode.sh"))
(("loadargb_cursor") (string-append bin "/loadargb_cursor"))
(("cp") "ln -s")
(("/usr/share/icons/steam/arrow.png")
(string-append share "/icons/steam/arrow.png"))
(("/usr/share/pixmaps/steam-bootstrapper.jpg")
(string-append share "/pixmaps/steam-bootstrapper.jpg"))
(("steamcompmgr") (string-append bin "/steamcompmgr"))
(("steam-browser.desktop") (string-append share "/applications/steam-browser.desktop"))
(("xset") xset))
(substitute* (string-append src "/set_hd_mode.sh")
(("xrandr") xrandr)
(("egrep") "grep -E")
(("grep") grep)
(("xinput") xinput)
(("udevadm") udevadm))
(substitute* (string-append src "/screen_toggle.sh")
(("xrandr") xrandr))
(substitute* (string-append src "/brightness_up.sh")
(("xrandr") xrandr))
(substitute* (string-append src "/brightness_down.sh")
(("xrandr") xrandr))
(substitute* (string-append src "/audio_volup.sh")
(("aplay") aplay)
(("pamixer") pamixer))
(substitute* (string-append src "/audio_voldown.sh")
(("aplay") aplay)
(("pamixer") pamixer))
(substitute* (string-append src "/audio_mute.sh")
(("aplay") aplay)
(("pamixer") pamixer))
(substitute* (string-append share "/xsessions/steamos.desktop")
(("steamos-session") (string-append bin "/steamos-session")))
(substitute* (string-append share "/applications/steam-browser.desktop")
(("steam ") (string-append steam " "))))))
(add-after 'patch-bin 'copy-bin
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(install-file "./usr/bin/steamos-session" bin)
(chmod (string-append bin "/steamos-session") #o555)))))))
(native-inputs
(list autoconf
automake
pkg-config))
(propagated-inputs
(list xinit
xorg-server))
(inputs
(list alsa-utils
eudev
grep
libxxf86vm
libx11
libxrender
libxcomposite
libgudev
glu
pamixer
sdl-image
steam
xinput
xset
xrandr
steamos-modeswitch-inhibitor))
(build-system gnu-build-system)
(home-page "https://github.com/ChimeraOS/steamos-compositor-plus")
(synopsis "Compositor used by SteamOS 2.x with some added tweaks and fixes")
(description "This is a fork of the SteamOS compositor, currently based on
version 1.35. It includes out of the box 4k (3840x2160) support, allows adjusting
resolution/refresh rate through a configuration file, hides the annoying color
flashing on startup of Proton games and adds a fix for games that start in
the background, including Dead Cells, The Count Lucanor, most Feral games
and probably others.")
(license license:gpl3+))))