summary refs log tree commit diff
path: root/pkgs/games/heroic
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/heroic')
-rw-r--r--pkgs/games/heroic/default.nix16
-rw-r--r--pkgs/games/heroic/fhsenv.nix2
-rw-r--r--pkgs/games/heroic/fix-infinite-loop.patch23
-rw-r--r--pkgs/games/heroic/remove-drm-support.patch24
4 files changed, 52 insertions, 13 deletions
diff --git a/pkgs/games/heroic/default.nix b/pkgs/games/heroic/default.nix
index eca08602070..65ff3b90403 100644
--- a/pkgs/games/heroic/default.nix
+++ b/pkgs/games/heroic/default.nix
@@ -17,18 +17,18 @@
 let appName = "heroic";
 in stdenv.mkDerivation rec {
   pname = "heroic-unwrapped";
-  version = "2.9.2";
+  version = "2.10.0";
 
   src = fetchFromGitHub {
     owner = "Heroic-Games-Launcher";
     repo = "HeroicGamesLauncher";
     rev = "v${version}";
-    hash = "sha256-kCvMUhN1kjGb5rV+lkKm1FFYBJUSQGOKTY1DQdiAWLU=";
+    hash = "sha256-umPQIxwIahjbO4QbkKEoeSSeYT2UatsTGRPrLgw5KW8=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
-    hash = "sha256-kHZL7TENVK58dvr8PBFtWYZ2PSKEYESX4e1xYmMA5+Y=";
+    hash = "sha256-o5ztk4okH21Op1jqHZfranR12M8B1Y/K95aWb10tf5o=";
   };
 
   nativeBuildInputs = [
@@ -45,8 +45,18 @@ in stdenv.mkDerivation rec {
     ./remove-drm-support.patch
     # Make Heroic create Steam shortcuts (to non-steam games) with the correct path to heroic.
     ./fix-non-steam-shortcuts.patch
+    # Fix reg add infinite loop
+    # Submitted upstream: https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/pull/3210
+    ./fix-infinite-loop.patch
   ];
 
+  postPatch = ''
+    # We are not packaging this as an Electron application bundle, so Electron
+    # reports to the application that is is not "packaged", which causes Heroic
+    # to take some incorrect codepaths meant for development environments.
+    substituteInPlace src/**/*.ts --replace 'app.isPackaged' 'true'
+  '';
+
   configurePhase = ''
     runHook preConfigure
 
diff --git a/pkgs/games/heroic/fhsenv.nix b/pkgs/games/heroic/fhsenv.nix
index 19b44b280f8..24f7c96bc9f 100644
--- a/pkgs/games/heroic/fhsenv.nix
+++ b/pkgs/games/heroic/fhsenv.nix
@@ -29,6 +29,7 @@ buildFHSEnv {
     perl
     psmisc
     python3
+    unzip
     which
     xorg.xrandr
     zstd
@@ -96,6 +97,7 @@ buildFHSEnv {
     libsoup
     libtheora
     libtiff
+    libunwind
     libusb1
     libv4l
     libva
diff --git a/pkgs/games/heroic/fix-infinite-loop.patch b/pkgs/games/heroic/fix-infinite-loop.patch
new file mode 100644
index 00000000000..99aae02c3a1
--- /dev/null
+++ b/pkgs/games/heroic/fix-infinite-loop.patch
@@ -0,0 +1,23 @@
+From b698779053b7ba31bd8e69b230e86515e3019bf6 Mon Sep 17 00:00:00 2001
+From: K900 <me@0upti.me>
+Date: Sun, 5 Nov 2023 22:04:32 +0300
+Subject: [PATCH] Force add the registry entry
+
+Otherwise, newer Wine versions will prompt to overwrite it and loop there forever.
+---
+ src/backend/storeManagers/legendary/setup.ts | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/backend/storeManagers/legendary/setup.ts b/src/backend/storeManagers/legendary/setup.ts
+index 1837106621..b5c2432435 100644
+--- a/src/backend/storeManagers/legendary/setup.ts
++++ b/src/backend/storeManagers/legendary/setup.ts
+@@ -20,7 +20,7 @@ export const legendarySetup = async (appName: string) => {
+ 
+   // Fixes games like Fallout New Vegas and Dishonored: Death of the Outsider
+   await runWineCommandOnGame(appName, {
+-    commandParts: ['reg', 'add', 'HKEY_CLASSES_ROOT\\com.epicgames.launcher'],
++    commandParts: ['reg', 'add', 'HKEY_CLASSES_ROOT\\com.epicgames.launcher', '/f'],
+     wait: true,
+     protonVerb: 'waitforexitandrun'
+   })
diff --git a/pkgs/games/heroic/remove-drm-support.patch b/pkgs/games/heroic/remove-drm-support.patch
index f3cd80f003f..44045bef2bf 100644
--- a/pkgs/games/heroic/remove-drm-support.patch
+++ b/pkgs/games/heroic/remove-drm-support.patch
@@ -1,22 +1,26 @@
 diff --git a/src/backend/main.ts b/src/backend/main.ts
-index 2cd1a28f..a60e04d0 100644
+index 83b58bb2..f61656fa 100644
 --- a/src/backend/main.ts
 +++ b/src/backend/main.ts
-@@ -19,8 +19,7 @@ import {
-   powerSaveBlocker,
+@@ -19,7 +19,6 @@ import {
    protocol,
    screen,
--  clipboard,
--  components
-+  clipboard
+   clipboard,
+-  components,
+   session
  } from 'electron'
  import 'backend/updater'
- import { autoUpdater } from 'electron-updater'
-@@ -286,8 +285,7 @@ if (!gotTheLock) {
-     initImagesCache()
+@@ -310,14 +309,7 @@ if (!gotTheLock) {
+     }
  
      if (!process.env.CI) {
--      await components.whenReady()
+-      await components.whenReady().catch((e) => {
+-        logError([
+-          'Failed to download / update DRM components.',
+-          'Make sure you do not block update.googleapis.com domain if you want to use WideVine in Browser sideloaded apps',
+-          e
+-        ])
+-      })
 -      logInfo(['DRM module staus', components.status()])
 +      logInfo('DRM modules disabled for nixpkgs')
      }