diff --git a/pkgs/applications/emulators/pcsx2/default.nix b/pkgs/applications/emulators/pcsx2/default.nix index 34eba5ed7819..953fd3a3daa2 100644 --- a/pkgs/applications/emulators/pcsx2/default.nix +++ b/pkgs/applications/emulators/pcsx2/default.nix @@ -1,90 +1,110 @@ -{ alsa-lib -, cmake +{ cmake , fetchFromGitHub +, lib +, stdenv +, curl +, ffmpeg , fmt , gettext -, glib -, gtk3 , harfbuzz -, lib , libaio +, libbacktrace , libpcap -, libpng , libpulseaudio , libsamplerate -, libXdmcp -, openssl -, pcre -, perl +, libXrandr +, libzip , pkg-config -, portaudio +, qtbase +, qtsvg +, qttools +, qttranslations +, qtwayland +, rapidyaml , SDL2 , soundtouch -, stdenv -, udev , vulkan-headers , vulkan-loader -, wrapGAppsHook -, wxGTK -, zlib , wayland +, wrapQtAppsHook +, xz +, zip }: +let + # The pre-zipped files in releases don't have a versioned link, we need to zip them ourselves + pcsx2_patches = fetchFromGitHub { + owner = "PCSX2"; + repo = "pcsx2_patches"; + rev = "8db5ae467a35cc00dc50a65061aa78dc5115e6d1"; + sha256 = "sha256-68kD7IAhBMASFmkGwvyQ7ppO/3B1csAKik+rU792JI4="; + }; +in stdenv.mkDerivation rec { pname = "pcsx2"; - version = "1.7.3331"; - # nixpkgs-update: no auto update + version = "1.7.4554"; src = fetchFromGitHub { owner = "PCSX2"; repo = "pcsx2"; fetchSubmodules = true; rev = "v${version}"; - hash = "sha256-0RcmBMxKj/gnkNEjn2AUSSO1DzyNSf1lOZWPSUq6764="; + sha256 = "sha256-9MRbpm7JdVmZwv8zD4lErzVTm7A4tYM0FgXE9KpX+/8="; }; cmakeFlags = [ "-DDISABLE_ADVANCE_SIMD=TRUE" - "-DDISABLE_PCSX2_WRAPPER=TRUE" - "-DPACKAGE_MODE=TRUE" - "-DWAYLAND_API=TRUE" - "-DXDG_STD=TRUE" - "-DUSE_VULKAN=TRUE" + "-DUSE_SYSTEM_LIBS=ON" + "-DDISABLE_BUILD_DATE=TRUE" ]; - nativeBuildInputs = [ cmake perl pkg-config vulkan-headers wrapGAppsHook ]; + nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook zip ]; buildInputs = [ - alsa-lib + curl + ffmpeg fmt gettext - glib - gtk3 harfbuzz libaio + libbacktrace libpcap - libpng libpulseaudio libsamplerate - libXdmcp - openssl - pcre - portaudio + libXrandr + libzip + qtbase + qtsvg + qttools + qttranslations + qtwayland + rapidyaml SDL2 soundtouch - udev + vulkan-headers vulkan-loader wayland - wxGTK - zlib + xz ]; - preFixup = '' - gappsWrapperArgs+=( - --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ vulkan-loader ]} - ) + installPhase = '' + mkdir -p $out/bin + cp -a bin/pcsx2-qt bin/resources $out/bin/ + + install -Dm644 $src/pcsx2/Resources/AppIcon64.png $out/share/pixmaps/PCSX2.png + install -Dm644 $src/.github/workflows/scripts/linux/pcsx2-qt.desktop $out/share/applications/PCSX2.desktop + + zip -jq $out/bin/resources/patches.zip ${pcsx2_patches}/patches/* ''; + qtWrapperArgs = [ + "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ + ffmpeg # It's loaded with dlopen. They plan to change it https://github.com/PCSX2/pcsx2/issues/8624 + libpulseaudio + vulkan-loader + ]}" + ]; + meta = with lib; { description = "Playstation 2 emulator"; longDescription = '' @@ -95,13 +115,9 @@ stdenv.mkDerivation rec { PC, with many additional features and benefits. ''; homepage = "https://pcsx2.net"; + license = with licenses; [ gpl3 lgpl3 ]; maintainers = with maintainers; [ hrdinka govanify ]; - - # PCSX2's source code is released under LGPLv3+. It However ships - # additional data files and code that are licensed differently. - # This might be solved in future, for now we should stick with - # license.free - license = licenses.free; + mainProgram = "pcsx2-qt"; platforms = platforms.x86_64; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8935f14f8b82..911f5df257b2 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2399,9 +2399,7 @@ with pkgs; pcem = callPackage ../applications/emulators/pcem { }; - pcsx2 = callPackage ../applications/emulators/pcsx2 { - wxGTK = wxGTK32; - }; + pcsx2 = qt6Packages.callPackage ../applications/emulators/pcsx2 { }; pcsxr = callPackage ../applications/emulators/pcsxr { };