From 85c3c570ddd1c78cd64e50c902d2e2f4ab75aa78 Mon Sep 17 00:00:00 2001 From: Toast Date: Sun, 27 Apr 2025 00:23:28 +0200 Subject: [PATCH] Flake: add nixpkgs patches Update and fix rpcs3 package --- flake.nix | 2 + nixpkgs-patches/pr386360.patch | 71 +++++++++++++++++++++++ nixpkgs-patches/pr400900.patch | 101 +++++++++++++++++++++++++++++++++ 3 files changed, 174 insertions(+) create mode 100644 nixpkgs-patches/pr386360.patch create mode 100644 nixpkgs-patches/pr400900.patch diff --git a/flake.nix b/flake.nix index 4a27077..ae0560c 100644 --- a/flake.nix +++ b/flake.nix @@ -97,6 +97,8 @@ name = "patched-nixpkgs-unstable"; src = nixpkgs-unstable-raw; patches = [ + ./nixpkgs-patches/pr400900.patch + ./nixpkgs-patches/pr386360.patch ]; }; nixpkgs-patched = nixpkgs-raw.legacyPackages.x86_64-linux.applyPatches { diff --git a/nixpkgs-patches/pr386360.patch b/nixpkgs-patches/pr386360.patch new file mode 100644 index 0000000..9733a0a --- /dev/null +++ b/nixpkgs-patches/pr386360.patch @@ -0,0 +1,71 @@ +From ec004ef5f30f4ea66ce0b77bab5ce778883aff5d Mon Sep 17 00:00:00 2001 +From: Zane van Iperen +Date: Tue, 1 Apr 2025 20:23:42 +0900 +Subject: [PATCH] rpcs3: 0.0.34-17323-92d070729 -> 0.0.36-17736-c86a25079 + +--- + pkgs/by-name/rp/rpcs3/package.nix | 20 +++++++++++++------- + 1 file changed, 13 insertions(+), 7 deletions(-) + +diff --git a/pkgs/by-name/rp/rpcs3/package.nix b/pkgs/by-name/rp/rpcs3/package.nix +index 779d9048ca0ea0..dc39a9bc61e384 100644 +--- a/pkgs/by-name/rp/rpcs3/package.nix ++++ b/pkgs/by-name/rp/rpcs3/package.nix +@@ -21,12 +21,14 @@ + python3, + pugixml, + flatbuffers, +- llvm_16, ++ llvm_18, + cubeb, ++ opencv, + enableDiscordRpc ? false, + faudioSupport ? true, + faudio, + SDL2, ++ sdl3, + waylandSupport ? true, + wayland, + wrapGAppsHook3, +@@ -34,10 +36,10 @@ + + let + # Keep these separate so the update script can regex them +- rpcs3GitVersion = "17323-92d070729"; +- rpcs3Version = "0.0.34-17323-92d070729"; +- rpcs3Revision = "92d07072915b99917892dd7833c06eb44a09e234"; +- rpcs3Hash = "sha256-GH2sXw1AYdqwzxucXFhVS0nM0eRhC+XDHS6RTZY8pYY="; ++ rpcs3GitVersion = "17736-c86a25079"; ++ rpcs3Version = "0.0.36-17736-c86a25079"; ++ rpcs3Revision = "c86a25079518032d73395a79979970acb2581a91"; ++ rpcs3Hash = "sha256-e+mT3qn1oz1fh2bqu5YM+m774Can34If57Kd1T1EGbk="; + + inherit (qt6Packages) + qtbase +@@ -77,9 +79,11 @@ stdenv.mkDerivation { + (lib.cmakeBool "USE_SYSTEM_CURL" true) + (lib.cmakeBool "USE_SYSTEM_WOLFSSL" true) + (lib.cmakeBool "USE_SYSTEM_FAUDIO" true) ++ (lib.cmakeBool "USE_SYSTEM_OPENAL" true) + (lib.cmakeBool "USE_SYSTEM_PUGIXML" true) + (lib.cmakeBool "USE_SYSTEM_FLATBUFFERS" true) + (lib.cmakeBool "USE_SYSTEM_SDL" true) ++ (lib.cmakeBool "USE_SYSTEM_OPENCV" true) + (lib.cmakeBool "USE_SDL" true) + (lib.cmakeBool "WITH_LLVM" true) + (lib.cmakeBool "BUILD_LLVM" false) +@@ -115,10 +119,12 @@ stdenv.mkDerivation { + wolfssl + python3 + pugixml +- SDL2 ++ SDL2 # Still needed by FAudio's CMake ++ sdl3 + flatbuffers +- llvm_16 ++ llvm_18 + libSM ++ opencv + ] + ++ cubeb.passthru.backendLibs + ++ lib.optional faudioSupport faudio diff --git a/nixpkgs-patches/pr400900.patch b/nixpkgs-patches/pr400900.patch new file mode 100644 index 0000000..457acfc --- /dev/null +++ b/nixpkgs-patches/pr400900.patch @@ -0,0 +1,101 @@ +From 66e2bdbc88f1985c0960c29e991ffcbb8b180cc0 Mon Sep 17 00:00:00 2001 +From: Marcin Serwin +Date: Tue, 22 Apr 2025 20:04:11 +0200 +Subject: [PATCH] rpcs3: unbreak + +--- + .../rp/rpcs3/fix-qt6.9-compilation.patch | 68 +++++++++++++++++++ + pkgs/by-name/rp/rpcs3/package.nix | 5 ++ + 2 files changed, 73 insertions(+) + create mode 100644 pkgs/by-name/rp/rpcs3/fix-qt6.9-compilation.patch + +diff --git a/pkgs/by-name/rp/rpcs3/fix-qt6.9-compilation.patch b/pkgs/by-name/rp/rpcs3/fix-qt6.9-compilation.patch +new file mode 100644 +index 00000000000000..13ca314d3022ba +--- /dev/null ++++ b/pkgs/by-name/rp/rpcs3/fix-qt6.9-compilation.patch +@@ -0,0 +1,68 @@ ++From 600e4604169464c64cbf548e7629e483ad2aad1e Mon Sep 17 00:00:00 2001 ++From: Megamouse ++Date: Mon, 7 Apr 2025 20:49:15 +0200 ++Subject: [PATCH] Fix compilation with newer Qt ++ ++--- ++ rpcs3/rpcs3qt/game_list_base.cpp | 2 +- ++ rpcs3/rpcs3qt/game_list_frame.cpp | 4 ++-- ++ rpcs3/rpcs3qt/ps_move_tracker_dialog.cpp | 4 ++-- ++ 3 files changed, 5 insertions(+), 5 deletions(-) ++ ++diff --git a/rpcs3/rpcs3qt/game_list_base.cpp b/rpcs3/rpcs3qt/game_list_base.cpp ++index 72b45d33bfbb..21640906ee7e 100644 ++--- a/rpcs3/rpcs3qt/game_list_base.cpp +++++ b/rpcs3/rpcs3qt/game_list_base.cpp ++@@ -25,7 +25,7 @@ void game_list_base::repaint_icons(std::vector& game_data, const QCol ++ for (game_info& game : game_data) ++ { ++ game->pxmap = placeholder; ++- +++ ++ if (movie_item_base* item = game->item) ++ { ++ item->set_icon_load_func([this, game, device_pixel_ratio, cancel = item->icon_loading_aborted()](int) ++diff --git a/rpcs3/rpcs3qt/game_list_frame.cpp b/rpcs3/rpcs3qt/game_list_frame.cpp ++index a294d69cc68e..439913760053 100644 ++--- a/rpcs3/rpcs3qt/game_list_frame.cpp +++++ b/rpcs3/rpcs3qt/game_list_frame.cpp ++@@ -2363,7 +2363,7 @@ void game_list_frame::BatchActionBySerials(progress_dialog* pdlg, const std::set ++ ++ connect(future_watcher, &QFutureWatcher::finished, this, [=, this]() ++ { ++- pdlg->setLabelText(progressLabel.arg(*index).arg(serials_size)); +++ pdlg->setLabelText(progressLabel.arg(index->load()).arg(serials_size)); ++ pdlg->setCancelButtonText(tr("OK")); ++ QApplication::beep(); ++ ++@@ -2396,7 +2396,7 @@ void game_list_frame::BatchActionBySerials(progress_dialog* pdlg, const std::set ++ return; ++ } ++ ++- pdlg->setLabelText(progressLabel.arg(*index).arg(serials_size)); +++ pdlg->setLabelText(progressLabel.arg(index->load()).arg(serials_size)); ++ pdlg->setCancelButtonText(tr("OK")); ++ connect(pdlg, &progress_dialog::canceled, this, [pdlg](){ pdlg->deleteLater(); }); ++ QApplication::beep(); ++diff --git a/rpcs3/rpcs3qt/ps_move_tracker_dialog.cpp b/rpcs3/rpcs3qt/ps_move_tracker_dialog.cpp ++index 45fbe6f59e7d..4b9bc5dd6e4f 100644 ++--- a/rpcs3/rpcs3qt/ps_move_tracker_dialog.cpp +++++ b/rpcs3/rpcs3qt/ps_move_tracker_dialog.cpp ++@@ -362,7 +362,7 @@ void ps_move_tracker_dialog::update_saturation_threshold(bool update_slider) ++ } ++ void ps_move_tracker_dialog::update_min_radius(bool update_slider) ++ { ++- ui->minRadiusGb->setTitle(tr("Min Radius: %0 %").arg(g_cfg_move.min_radius)); +++ ui->minRadiusGb->setTitle(tr("Min Radius: %0 %").arg(g_cfg_move.min_radius.get())); ++ ++ if (update_slider) ++ { ++@@ -372,7 +372,7 @@ void ps_move_tracker_dialog::update_min_radius(bool update_slider) ++ ++ void ps_move_tracker_dialog::update_max_radius(bool update_slider) ++ { ++- ui->maxRadiusGb->setTitle(tr("Max Radius: %0 %").arg(g_cfg_move.max_radius)); +++ ui->maxRadiusGb->setTitle(tr("Max Radius: %0 %").arg(g_cfg_move.max_radius.get())); ++ ++ if (update_slider) ++ { +diff --git a/pkgs/by-name/rp/rpcs3/package.nix b/pkgs/by-name/rp/rpcs3/package.nix +index 779d9048ca0ea0..b633453a77e61d 100644 +--- a/pkgs/by-name/rp/rpcs3/package.nix ++++ b/pkgs/by-name/rp/rpcs3/package.nix +@@ -58,6 +58,11 @@ stdenv.mkDerivation { + hash = rpcs3Hash; + }; + ++ patches = [ ++ # Modified from https://github.com/RPCS3/rpcs3/pull/17009; doesn't apply cleanly due to intermediate commits ++ ./fix-qt6.9-compilation.patch ++ ]; ++ + passthru.updateScript = ./update.sh; + + preConfigure = ''