diff options
author | Sefa Eyeoglu <contact@scrumplex.net> | 2024-04-08 09:59:47 +0200 |
---|---|---|
committer | Sefa Eyeoglu <contact@scrumplex.net> | 2024-04-08 09:59:47 +0200 |
commit | aa71ddadfa6158532d5267dda4d6db01237db5bd (patch) | |
tree | 3a00b2ab65eb5c7c730b93936b301a0b5cdd469d /pkgs/by-name/ga/gamescope/package.nix | |
parent | 285085fa62e3cbaea238e1474ad5897897c7304b (diff) |
gamescope: move to by-name
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
Diffstat (limited to 'pkgs/by-name/ga/gamescope/package.nix')
-rw-r--r-- | pkgs/by-name/ga/gamescope/package.nix | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/pkgs/by-name/ga/gamescope/package.nix b/pkgs/by-name/ga/gamescope/package.nix new file mode 100644 index 0000000000000..a0dd62ab94941 --- /dev/null +++ b/pkgs/by-name/ga/gamescope/package.nix @@ -0,0 +1,147 @@ +{ stdenv +, fetchFromGitHub +, meson +, pkg-config +, ninja +, xorg +, libdrm +, vulkan-loader +, vulkan-headers +, wayland +, wayland-protocols +, libxkbcommon +, glm +, gbenchmark +, libcap +, libavif +, SDL2 +, pipewire +, pixman +, libinput +, glslang +, hwdata +, openvr +, stb +, wlroots +, libliftoff +, libdisplay-info +, lib +, makeBinaryWrapper +, nix-update-script +, enableExecutable ? true +, enableWsi ? true +}: +let + joshShaders = fetchFromGitHub { + owner = "Joshua-Ashton"; + repo = "GamescopeShaders"; + rev = "v0.1"; + hash = "sha256-gR1AeAHV/Kn4ntiEDUSPxASLMFusV6hgSGrTbMCBUZA="; + }; +in +stdenv.mkDerivation (finalAttrs: { + pname = "gamescope"; + version = "3.14.2"; + + src = fetchFromGitHub { + owner = "ValveSoftware"; + repo = "gamescope"; + rev = "refs/tags/${finalAttrs.version}"; + fetchSubmodules = true; + hash = "sha256-Ym1kl9naAm1MGlxCk32ssvfiOlstHiZPy7Ga8EZegus="; + }; + + patches = [ + # Unvendor dependencies + ./use-pkgconfig.patch + + # Make it look for shaders in the right place + ./shaders-path.patch + ]; + + # We can't substitute the patch itself because substituteAll is itself a derivation, + # so `placeholder "out"` ends up pointing to the wrong place + postPatch = '' + substituteInPlace src/reshade_effect_manager.cpp --replace "@out@" "$out" + ''; + + mesonFlags = [ + (lib.mesonBool "enable_gamescope" enableExecutable) + (lib.mesonBool "enable_gamescope_wsi_layer" enableWsi) + ]; + + # don't install vendored vkroots etc + mesonInstallFlags = ["--skip-subprojects"]; + + strictDeps = true; + + depsBuildBuild = [ + pkg-config + ]; + + nativeBuildInputs = [ + meson + pkg-config + ninja + ] ++ lib.optionals enableExecutable [ + makeBinaryWrapper + glslang + ]; + + buildInputs = [ + pipewire + hwdata + xorg.libX11 + wayland + wayland-protocols + vulkan-loader + openvr + glm + ] ++ lib.optionals enableWsi [ + vulkan-headers + ] ++ lib.optionals enableExecutable [ + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXi + xorg.libXmu + xorg.libXrender + xorg.libXres + xorg.libXtst + xorg.libXxf86vm + libavif + libdrm + libliftoff + SDL2 + wlroots + libinput + libxkbcommon + gbenchmark + pixman + libcap + stb + libdisplay-info + ]; + + postInstall = lib.optionalString enableExecutable '' + # --debug-layers flag expects these in the path + wrapProgram "$out/bin/gamescope" \ + --prefix PATH : ${with xorg; lib.makeBinPath [xprop xwininfo]} + + # Install ReShade shaders + mkdir -p $out/share/gamescope/reshade + cp -r ${joshShaders}/* $out/share/gamescope/reshade/ + ''; + + passthru.updateScript = nix-update-script {}; + + meta = with lib; { + description = "SteamOS session compositing window manager"; + homepage = "https://github.com/ValveSoftware/gamescope"; + license = licenses.bsd2; + maintainers = with maintainers; [ nrdxp pedrohlc Scrumplex zhaofengli k900 ]; + platforms = platforms.linux; + mainProgram = "gamescope"; + }; +}) |