diff options
Diffstat (limited to 'pkgs/games/heroic/default.nix')
-rw-r--r-- | pkgs/games/heroic/default.nix | 79 |
1 files changed, 55 insertions, 24 deletions
diff --git a/pkgs/games/heroic/default.nix b/pkgs/games/heroic/default.nix index 044d159cde1d1..ebf56a21daad5 100644 --- a/pkgs/games/heroic/default.nix +++ b/pkgs/games/heroic/default.nix @@ -1,39 +1,70 @@ -{ lib, fetchurl, appimageTools }: - -let - pname = "heroic"; - version = "2.2.6"; - name = "${pname}-${version}"; - src = fetchurl { - url = "https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/releases/download/v${version}/Heroic-${version}.AppImage"; - sha256 = "sha256-kL30/G4DpDPwGN7PvbWest7TcgL4Rd1c2OM4nRCT3bg="; +{ lib +, mkYarnPackage +, fetchFromGitHub +, makeWrapper +, electron +, gogdl +, legendary-gl +}: + +mkYarnPackage rec { + pname = "heroic-unwrapped"; + version = "2.4.3"; + + src = fetchFromGitHub { + owner = "Heroic-Games-Launcher"; + repo = "HeroicGamesLauncher"; + rev = "v${version}"; + sha256 = "sha256-x9zIM2kKi+JgIGIidQYjyjqVGweFJ8DE7IX9gYULQuQ="; }; - appimageContents = appimageTools.extractType2 { inherit name src; }; -in -appimageTools.wrapType2 { - inherit name src; + packageJSON = ./package.json; + yarnLock = ./yarn.lock; + yarnNix = ./yarn.nix; + + nativeBuildInputs = [ + makeWrapper + ]; - extraInstallCommands = '' - mv $out/bin/${name} $out/bin/${pname} + DISABLE_ESLINT_PLUGIN = "true"; + + postBuild = let + yarnCmd = "yarn --production --offline --frozen-lockfile --ignore-engines --ignore-scripts --lockfile ${yarnLock}"; + in '' + ${yarnCmd} build-electron + ${yarnCmd} build + ''; - mkdir -p $out/share/${pname} - cp -a ${appimageContents}/locales $out/share/${pname} - cp -a ${appimageContents}/resources $out/share/${pname} + # Disable bundling into a tar archive. + doDist = false; - install -m 444 -D ${appimageContents}/heroic.desktop -t $out/share/applications + # --disable-gpu-compositing is to work around upstream bug + # https://github.com/electron/electron/issues/32317 + postInstall = let + deps = "$out/libexec/heroic/deps/heroic"; + in '' + rm -rf "${deps}/public/bin" "${deps}/build/bin" + mkdir -p "${deps}/public/bin/linux" + ln -s "${gogdl}/bin/gogdl" "${legendary-gl}/bin/legendary" "${deps}/public/bin/linux" - cp -a ${appimageContents}/usr/share/icons $out/share/ + makeWrapper "${electron}/bin/electron" "$out/bin/heroic" \ + --inherit-argv0 \ + --add-flags --disable-gpu-compositing \ + --add-flags "${deps}" - substituteInPlace $out/share/applications/heroic.desktop \ - --replace 'Exec=AppRun' 'Exec=heroic' + substituteInPlace "${deps}/flatpak/com.heroicgameslauncher.hgl.desktop" \ + --replace "Exec=heroic-run" "Exec=heroic" + mkdir -p "$out/share/applications" "$out/share/icons/hicolor/512x512/apps" + ln -s "${deps}/flatpak/com.heroicgameslauncher.hgl.desktop" "$out/share/applications" + ln -s "${deps}/flatpak/com.heroicgameslauncher.hgl.png" "$out/share/icons/hicolor/512x512/apps" ''; meta = with lib; { - description = "A Native GUI Epic Games Launcher for Linux, Windows and Mac"; + description = "A Native GOG and Epic Games Launcher for Linux, Windows and Mac"; homepage = "https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher"; license = licenses.gpl3Only; - maintainers = with maintainers; [ wolfangaukang ]; + maintainers = with maintainers; [ aidalgol ]; platforms = [ "x86_64-linux" ]; + mainProgram = "heroic"; }; } |