From 6eec4125d6375fbed1baf32972689cd43f1505a3 Mon Sep 17 00:00:00 2001 From: WheelsForReals Date: Wed, 12 Nov 2025 20:22:57 -0600 Subject: [PATCH 1/2] parallel-launcher.parallel-n64-core: 2.24.1 -> 2.27.1 --- pkgs/by-name/pa/parallel-launcher/parallel-n64-next.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/pa/parallel-launcher/parallel-n64-next.nix b/pkgs/by-name/pa/parallel-launcher/parallel-n64-next.nix index 1bcae54e051a..f81dfd342310 100644 --- a/pkgs/by-name/pa/parallel-launcher/parallel-n64-next.nix +++ b/pkgs/by-name/pa/parallel-launcher/parallel-n64-next.nix @@ -15,13 +15,13 @@ in # Based on the libretro parallel-n64 derivation with slight tweaks libretro.mkLibretroCore (finalAttrs: { core = "parallel-n64-next"; - version = "2.24.1"; + version = "2.27.1"; src = fetchFromGitLab { owner = "parallel-launcher"; repo = "parallel-n64"; tag = reformatVersion finalAttrs.version; - hash = "sha256-BeeKX78zozxx72cmJ3HI0nH/STvkltMBZs2+mb4ukM0="; + hash = "sha256-u4F6CbC1NEU3OWtcqMIi/teX+SS4Jq9v5M2qc9z5bXg="; }; extraNativeBuildInputs = [ From c97bbf81799528429cf3c66f8be245fad3643751 Mon Sep 17 00:00:00 2001 From: WheelsForReals Date: Wed, 12 Nov 2025 20:23:33 -0600 Subject: [PATCH 2/2] parallel-launcher: 8.3.0 -> 9.0.2 --- .../pa/parallel-launcher/fix-paths.patch | 38 ++++++--- .../fix-version-checks.patch | 18 ++-- pkgs/by-name/pa/parallel-launcher/package.nix | 82 ++++++++++++------- pkgs/by-name/pa/parallel-launcher/update.sh | 2 +- 4 files changed, 88 insertions(+), 52 deletions(-) diff --git a/pkgs/by-name/pa/parallel-launcher/fix-paths.patch b/pkgs/by-name/pa/parallel-launcher/fix-paths.patch index 26dc04767845..c78ff7c6182a 100644 --- a/pkgs/by-name/pa/parallel-launcher/fix-paths.patch +++ b/pkgs/by-name/pa/parallel-launcher/fix-paths.patch @@ -1,8 +1,8 @@ diff --git a/src/core/retroarch.cpp b/src/core/retroarch.cpp -index c2a2c47..97fa782 100644 +index 7502922..c6a572b 100644 --- a/src/core/retroarch.cpp +++ b/src/core/retroarch.cpp -@@ -102,7 +102,7 @@ static void loadConfig( std::map &configs ) { +@@ -103,7 +103,7 @@ static void loadConfig( std::map &configs ) { const fs::path basePath = RetroArch::getBasePath(); configs["system_directory"] = (basePath / _NFS("system")).u8string(); @@ -11,7 +11,7 @@ index c2a2c47..97fa782 100644 configs["savefile_directory"] = (basePath / _NFS("saves")).u8string(); configs["savestate_directory"] = (basePath / _NFS("states")).u8string(); configs["libretro_info_path"] = (basePath / _NFS("info")).u8string(); -@@ -110,7 +110,7 @@ static void loadConfig( std::map &configs ) { +@@ -111,7 +111,7 @@ static void loadConfig( std::map &configs ) { #if defined(FLATPAK_VERSION) configs["assets_directory"] = "/app/share/libretro/assets/"; #elif defined(__linux__) @@ -20,7 +20,7 @@ index c2a2c47..97fa782 100644 configs["osk_overlay_directory"] = (BaseDir::data() / "retro-data" / "overlays" / "keyboards").u8string(); configs["overlay_directory"] = (BaseDir::data() / "retro-data" / "overlays").u8string(); configs["audio_filter_dir"] = (BaseDir::data() / "retro-data" / "filters" / "audio").u8string(); -@@ -845,13 +845,7 @@ fs::path RetroArch::getBasePath() { +@@ -866,13 +866,7 @@ fs::path RetroArch::getBasePath() { } fs::path RetroArch::getCorePath() { @@ -35,7 +35,7 @@ index c2a2c47..97fa782 100644 } fs::path RetroArch::getConfigPath() { -@@ -866,7 +860,7 @@ fs::path RetroArch::getExePath() { +@@ -887,7 +881,7 @@ fs::path RetroArch::getExePath() { #elif defined(FLATPAK_VERSION) return BaseDir::program() / "retroarch"; #else @@ -45,27 +45,41 @@ index c2a2c47..97fa782 100644 } diff --git a/src/main.cpp b/src/main.cpp -index 3ca39b2..f3c14ba 100644 +index fbd4c92..91ef84e 100644 --- a/src/main.cpp +++ b/src/main.cpp -@@ -200,6 +200,7 @@ int main( int argc, char **argv ) { +@@ -209,7 +209,7 @@ int main( int argc, char **argv ) { fs::path( "/usr/local/share/parallel-launcher/translations/" ), fs::path( "/usr/share/parallel-launcher/translations/" ) #else -+ fs::read_symlink( "/proc/self/exe" ).parent_path().parent_path() / "share/parallel-launcher/translations/", - fs::path( "/usr/share/parallel-launcher/translations/" ), +- fs::path( "/usr/share/parallel-launcher/translations/" ), ++ fs::path( "@sharePath@/translations/" ), fs::path( "/usr/local/share/parallel-launcher/translations/" ), BaseDir::program() / "lang" + #endif +diff --git a/src/plugins/discord-plugin.cpp b/src/plugins/discord-plugin.cpp +index 055c0ee..7ce44fb 100644 +--- a/src/plugins/discord-plugin.cpp ++++ b/src/plugins/discord-plugin.cpp +@@ -38,7 +38,7 @@ const DiscordPlugin &DiscordPlugin::tryLoad( bool *success ) noexcept { + return s_abi; + } + +- void *handle = dlopen( (BaseDir::data() / "plugins" / "libdiscord-rpc.so").u8string().c_str(), RTLD_NOW ); ++ void *handle = dlopen( "libdiscord-rpc.so", RTLD_NOW ); + if( !handle ) { + if( success != nullptr ) *success = false; + return s_stub; diff --git a/src/polyfill/base-directory.cpp b/src/polyfill/base-directory.cpp -index 720a754..db607ca 100644 +index 2dcc704..45970a4 100644 --- a/src/polyfill/base-directory.cpp +++ b/src/polyfill/base-directory.cpp -@@ -134,7 +134,7 @@ static Locations getLocations() { +@@ -146,7 +146,7 @@ static Locations getLocations() { #if defined(FLATPAK_VERSION) fs::path( "/app/share/parallel-launcher" ) #elif defined(__linux__) - fs::path( "/usr/share/parallel-launcher" ) -+ fs::read_symlink( "/proc/self/exe" ).parent_path().parent_path() / "share/parallel-launcher" ++ fs::path( "@sharePath@" ) #endif }; } diff --git a/pkgs/by-name/pa/parallel-launcher/fix-version-checks.patch b/pkgs/by-name/pa/parallel-launcher/fix-version-checks.patch index 92c9974a27dc..d7c793a2fcdd 100644 --- a/pkgs/by-name/pa/parallel-launcher/fix-version-checks.patch +++ b/pkgs/by-name/pa/parallel-launcher/fix-version-checks.patch @@ -1,8 +1,8 @@ diff --git a/src/core/updates.cpp b/src/core/updates.cpp -index 403290b..f7d6547 100644 +index cb9ca39..4dc5dfb 100644 --- a/src/core/updates.cpp +++ b/src/core/updates.cpp -@@ -30,8 +30,8 @@ +@@ -24,8 +24,8 @@ #endif const InstalledVersionsInfo InstalledVersionsInfo::Default { @@ -13,7 +13,7 @@ index 403290b..f7d6547 100644 /* lastUpdateCheck */ 0 }; -@@ -47,15 +47,7 @@ template<> void JsonSerializer::serialize( JsonWriter &jw, con +@@ -41,15 +41,7 @@ template<> void JsonSerializer::serialize( JsonWriter &jw, con } template<> RetroArchVersion JsonSerializer::parse( const Json &json ) { @@ -30,7 +30,7 @@ index 403290b..f7d6547 100644 } static constexpr char P_RETROARCH[] = "retroarch"; -@@ -73,47 +65,14 @@ template<> void JsonSerializer::serialize( JsonWriter &jw +@@ -67,44 +59,15 @@ template<> void JsonSerializer::serialize( JsonWriter &jw } template<> InstalledVersionsInfo JsonSerializer::parse( const Json &json ) { @@ -60,11 +60,7 @@ index 403290b..f7d6547 100644 -#if defined(__linux__) - const Json &vjson = json["linux_x64"]; -#elif defined(_WIN32) -- #ifdef _WIN64 -- const Json &vjson = json["windows_x64"]; -- #else -- const Json &vjson = json["windows_x86"]; -- #endif +- const Json &vjson = json["windows_x64"]; -#elif defined(__APPLE__) - const Json &vjson = AppleUtil::shouldUseArmCore() ? json["macos_arm64"] : json["macos_x64"]; -#else @@ -75,14 +71,16 @@ index 403290b..f7d6547 100644 return ParallelCoreVersion{ - JsonSerializer::parse( vjson["version"] ), - vjson["sha1"].get(), +- vjson["zipSignature"].get(), - vjson["url"].get() + InstalledVersionsInfo::Default.parallelVersion, + "", ++ "", + "" }; } -@@ -178,6 +137,7 @@ void RetroUpdater::checkForUpdates( +@@ -169,6 +132,7 @@ void RetroUpdater::checkForUpdates( bool waitForCoreUpdates, bool forceUpdate ) { diff --git a/pkgs/by-name/pa/parallel-launcher/package.nix b/pkgs/by-name/pa/parallel-launcher/package.nix index 9da8b75c3b34..c573e2906ee6 100644 --- a/pkgs/by-name/pa/parallel-launcher/package.nix +++ b/pkgs/by-name/pa/parallel-launcher/package.nix @@ -1,25 +1,27 @@ { - lib, - stdenv, callPackage, - fetchFromGitLab, - replaceVars, - qt5, - SDL2, - discord-rpc, - libgcrypt, - sqlite, - findutils, - xdg-utils, coreutils, + discord-rpc, dosfstools, + fetchFromGitLab, + findutils, + lib, + libgcrypt, + libgpg-error, + parallel-launcher, + qt6, + replaceVars, + retroarch-assets, + SDL2, + sqlite, + stdenv, vulkan-loader, wrapRetroArch, - retroarch-assets, - parallel-launcher, + xdg-utils, + zlib, # Allow overrides for the RetroArch core and declarative settings - parallel-n64-core ? parallel-launcher.passthru.parallel-n64-core, extraRetroArchSettings ? { }, + parallel-n64-core ? parallel-launcher.passthru.parallel-n64-core, withDiscordRpc ? false, }: let @@ -53,13 +55,13 @@ stdenv.mkDerivation ( in { pname = "parallel-launcher"; - version = "8.3.0"; # Check ./parallel-n64-next.nix for updates when updating, too + version = "9.0.2"; # Check ./parallel-n64-next.nix for updates when updating, too src = fetchFromGitLab { owner = "parallel-launcher"; repo = "parallel-launcher"; tag = reformatVersion finalAttrs.version; - hash = "sha256-Zp/QTPREfpOG0zgnP1Lg5FgT9u+OEhoqBgnxWMu451A="; + hash = "sha256-JrZy60xWgrUlFcyGNVBUfHg/diM5TG5mIbbOXpee/2U="; }; patches = @@ -73,6 +75,8 @@ stdenv.mkDerivation ( inherit retroArchAssetsPath retroArchCoresPath; retroArchExePath = lib.getExe retroarch'; parallelN64CorePath = "${retroArchCoresPath}/parallel_n64_next_libretro${suffix}"; + # Manually substituted later since we need to reference PL's $out + sharePath = null; }) # Bypass update checks and hardcode internal version checks to ours (replaceVars ./fix-version-checks.patch { @@ -82,40 +86,60 @@ stdenv.mkDerivation ( ]; nativeBuildInputs = [ - qt5.wrapQtAppsHook - qt5.qttools - qt5.qmake + qt6.wrapQtAppsHook + qt6.qttools + qt6.qmake ]; buildInputs = [ - SDL2 libgcrypt + libgpg-error + qt6.qtbase + qt6.qtsvg + SDL2 sqlite - qt5.qtbase - qt5.qtsvg - ] - ++ lib.optional withDiscordRpc discord-rpc; + zlib + ]; qtWrapperArgs = [ "--prefix PATH : ${ lib.makeBinPath [ - findutils - xdg-utils coreutils dosfstools + findutils + xdg-utils ] }" "--prefix LD_LIBRARY_PATH : ${ - lib.makeLibraryPath [ - vulkan-loader - ] + lib.makeLibraryPath ( + [ + vulkan-loader + ] + ++ lib.optional withDiscordRpc discord-rpc + ) }" ]; + qmakeFlags = [ + "DEFINES+=RETROARCH_XWAYLAND" + ]; + # Our patches result in unused params. # Ignoring the warning is easier to maintain than more invasive patching. env.NIX_CFLAGS_COMPILE = "-Wno-error=unused-parameter"; + postPatch = + let + sharePath = "${placeholder "out"}/share/parallel-launcher"; + in + '' + substituteInPlace src/main.cpp \ + --replace-fail '@sharePath@' '${sharePath}' + + substituteInPlace src/polyfill/base-directory.cpp \ + --replace-fail '@sharePath@' '${sharePath}' + ''; + preConfigure = '' lrelease app.pro ''; diff --git a/pkgs/by-name/pa/parallel-launcher/update.sh b/pkgs/by-name/pa/parallel-launcher/update.sh index 0821a87454a7..588888a83287 100755 --- a/pkgs/by-name/pa/parallel-launcher/update.sh +++ b/pkgs/by-name/pa/parallel-launcher/update.sh @@ -8,7 +8,7 @@ packageDir="$nixpkgs/pkgs/by-name/pa/parallel-launcher" getLatestVersion() { curl -s "https://gitlab.com/api/v4/projects/parallel-launcher%2F$1/repository/tags" \ - | jq -r '.[0] | select(.) | .name' \ + | jq -r '.[0].name' \ | sed 's|v||' \ | sed 's|-|.|' }