From dd0df124f90026a02ab1fca0a800f62272d6bb70 Mon Sep 17 00:00:00 2001 From: Ethan Simmons Date: Mon, 24 Feb 2025 15:59:46 -0600 Subject: [PATCH] Add shadps4 package --- flake.nix | 4 +- modules/nix/games.nix | 3 +- modules/options/games.nix | 6 +++ overlays/default.nix | 1 + overlays/shadps4.nix | 15 ++++++ pkgs/shadps4.nix | 109 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 overlays/shadps4.nix create mode 100644 pkgs/shadps4.nix diff --git a/flake.nix b/flake.nix index abb61e2..b8b5931 100644 --- a/flake.nix +++ b/flake.nix @@ -113,6 +113,7 @@ enable = true; lutris.enable = true; minecraft.enable = true; + ps4.enable = true; }; common.nil.enable = true; @@ -228,7 +229,7 @@ pkgs = import nixpkgs { inherit system; - overlays = with overlays; [ printrun citrix ]; + overlays = with overlays; [ printrun citrix shadps4 ]; config = { allowUnfree = true; permittedInsecurePackages = [ @@ -241,6 +242,7 @@ kickoff-dot-desktop = pkgs.callPackage ./pkgs/kickoff-dot-desktop.nix {}; jhelioviewer = pkgs.callPackage ./pkgs/jhelioviewer.nix {}; llama-cpp = llama-cpp.packages.${system}.rocm; + shadps4 = pkgs.callPackage ./pkgs/shadps4.nix {}; } ); diff --git a/modules/nix/games.nix b/modules/nix/games.nix index d91cc9e..70ecf2d 100644 --- a/modules/nix/games.nix +++ b/modules/nix/games.nix @@ -9,11 +9,12 @@ with lib; let in { config = mkIf cfg.enable { - environment.systemPackages = with pkgs; with localPackages.x86_64-linux; [] + environment.systemPackages = with pkgs; [] ++ optional cfg.protonup.enable protonup-qt ++ optional cfg.gamescope.enable gamescope ++ optional cfg.discord.enable vesktop ++ optional cfg.minecraft.enable prismlauncher + ++ optional cfg.ps4.enable localPackages.x86_64-linux.shadps4 ++ optionals cfg.lutris.enable [ lutris wine ]; programs.steam = mkIf cfg.steam.enable { diff --git a/modules/options/games.nix b/modules/options/games.nix index aa9bdb3..ebc78af 100644 --- a/modules/options/games.nix +++ b/modules/options/games.nix @@ -40,6 +40,12 @@ in default = false; }; + ps4.enable = mkOption { + description = "Whether to install ps4 emulator"; + type = types.bool; + default = false; + }; + gamescope.enable = mkOption { description = "Whether to install gamescope"; type = types.bool; diff --git a/overlays/default.nix b/overlays/default.nix index cdedb56..d7d8e5b 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -4,4 +4,5 @@ llama-cpp = import ./llama-cpp.nix { inherit inputs; }; printrun = import ./printrun.nix { inherit inputs; }; citrix = import ./citrix.nix; + shadps4 = import ./shadps4.nix; } diff --git a/overlays/shadps4.nix b/overlays/shadps4.nix new file mode 100644 index 0000000..9451099 --- /dev/null +++ b/overlays/shadps4.nix @@ -0,0 +1,15 @@ +final: prev: { + shadps4 = prev.shadps4.overrideAttrs (old: { + version = "0.6.0"; + + src = prev.fetchFromGitHub { + owner = "shadps4-emu"; + repo = "shadps4"; + rev = "15d10e47ea272b1b4c8bf97f2b3bbb406d34b213"; + fetchSubmodules = true; + hash = "sha256-ksIKmijWcRMhCDEi/dodZHiEoIO3CB0BkGn698J7jxI="; + }; + + patches = []; + }); +} diff --git a/pkgs/shadps4.nix b/pkgs/shadps4.nix new file mode 100644 index 0000000..61409dc --- /dev/null +++ b/pkgs/shadps4.nix @@ -0,0 +1,109 @@ +{ lib +, stdenv +, fetchFromGitHub +, llvmPackages_18 +, cmake +, pkg-config +, git +, qt6 +, alsa-lib +, libpulseaudio +, openal +, openssl +, zlib +, libedit +, udev +, libevdev +, SDL2 +, jack2 +, sndio +, vulkan-headers +, vulkan-utility-libraries +, vulkan-tools +, ffmpeg +, fmt +, glslang +, libxkbcommon +, wayland +, xorg +, sdl3 +, stb +, wayland-protocols +, libpng +}: +stdenv.mkDerivation { + pname = "shadps4"; + version = "0.6.0"; + + src = fetchFromGitHub { + owner = "shadps4-emu"; + repo = "shadPS4"; + rev = "9061028ce588037fa6f467cd2c0740d10ed725ed"; + hash = "sha256-XhfJx1sDFz+RwhwcBA8W6WV6y1rDDvpyQe3v3NaSu2I="; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ + llvmPackages_18.clang + cmake + pkg-config + git + qt6.wrapQtAppsHook + ]; + + buildInputs = [ + alsa-lib + libpulseaudio + openal + openssl + zlib + libedit + udev + libevdev + SDL2 + jack2 + sndio + qt6.qtbase + qt6.qttools + qt6.qtmultimedia + + vulkan-headers + vulkan-utility-libraries + vulkan-tools + + ffmpeg + fmt + glslang + libxkbcommon + wayland + xorg.libxcb + xorg.xcbutil + xorg.xcbutilkeysyms + xorg.xcbutilwm + sdl3 + stb + qt6.qtwayland + wayland-protocols + libpng + ]; + + cmakeFlags = [ + (lib.cmakeBool "ENABLE_QT_GUI" true) + (lib.cmakeBool "ENABLE_UPDATER" false) + ]; + + cmakeBuildType = "RelWithDebugInfo"; + dontStrip = true; + + installPhase = '' + runHook preInstall + + install -D -t $out/bin shadps4 + install -Dm644 $src/.github/shadps4.png $out/share/icons/hicolor/512x512/apps/net.shadps4.shadPS4.png + install -Dm644 -t $out/share/applications $src/dist/net.shadps4.shadPS4.desktop + install -Dm644 -t $out/share/metainfo $src/dist/net.shadps4.shadPS4.metainfo.xml + + runHook postInstall + ''; + +}