363e9382a5
Patch r2modman to run "steam" instead of trying to directly run "steam.sh" from the user's home directory. This means it uses the NixOS wrapper script, which runs Steam in the necessary FHS environment. Fixes #240369
118 lines
2.9 KiB
Nix
118 lines
2.9 KiB
Nix
{ lib
|
|
, stdenv
|
|
, yarn
|
|
, fetchYarnDeps
|
|
, fixup_yarn_lock
|
|
, nodejs
|
|
, electron
|
|
, fetchFromGitHub
|
|
, gitUpdater
|
|
, makeWrapper
|
|
, makeDesktopItem
|
|
, copyDesktopItems
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "r2modman";
|
|
version = "3.1.43";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "ebkr";
|
|
repo = "r2modmanPlus";
|
|
rev = "v${version}";
|
|
hash = "sha256-qZeBF58VB/wW0N2MZgZfiIJdDqHUdfruAoCuDEFeCPA=";
|
|
};
|
|
|
|
offlineCache = fetchYarnDeps {
|
|
yarnLock = "${src}/yarn.lock";
|
|
hash = "sha256-CXitb/b2tvTfrkFrFv4KP4WdmMg+1sDtC/s2u5ezDfI=";
|
|
};
|
|
|
|
patches = [
|
|
# Make it possible to launch Steam games from r2modman.
|
|
./steam-launch-fix.patch
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
yarn
|
|
fixup_yarn_lock
|
|
nodejs
|
|
makeWrapper
|
|
copyDesktopItems
|
|
];
|
|
|
|
configurePhase = ''
|
|
runHook preConfigure
|
|
|
|
# Workaround for webpack bug
|
|
# https://github.com/webpack/webpack/issues/14532
|
|
export NODE_OPTIONS="--openssl-legacy-provider"
|
|
export HOME=$(mktemp -d)
|
|
yarn config --offline set yarn-offline-mirror $offlineCache
|
|
fixup_yarn_lock yarn.lock
|
|
yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
|
|
patchShebangs node_modules/
|
|
|
|
runHook postConfigure
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
yarn --offline quasar build --mode electron --skip-pkg
|
|
|
|
# Remove dev dependencies.
|
|
yarn install --production --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/share/r2modman
|
|
cp -r dist/electron/UnPackaged/. node_modules $out/share/r2modman
|
|
|
|
(
|
|
cd public/icons
|
|
for img in *png; do
|
|
dimensions=''${img#favicon-}
|
|
dimensions=''${dimensions%.png}
|
|
mkdir -p $out/share/icons/hicolor/$dimensions/apps
|
|
cp $img $out/share/icons/hicolor/$dimensions/apps/${pname}.png
|
|
done
|
|
)
|
|
|
|
makeWrapper '${electron}/bin/electron' "$out/bin/r2modman" \
|
|
--inherit-argv0 \
|
|
--add-flags "$out/share/r2modman" \
|
|
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem {
|
|
name = pname;
|
|
exec = pname;
|
|
icon = pname;
|
|
desktopName = pname;
|
|
comment = meta.description;
|
|
categories = [ "Game" ];
|
|
keywords = [ "launcher" "mod manager" "thunderstore" ];
|
|
})
|
|
];
|
|
|
|
passthru.updateScript = gitUpdater {
|
|
rev-prefix = "v";
|
|
};
|
|
|
|
meta = with lib; {
|
|
description = "Unofficial Thunderstore mod manager";
|
|
homepage = "https://github.com/ebkr/r2modmanPlus";
|
|
changelog = "https://github.com/ebkr/r2modmanPlus/releases/tag/v${version}";
|
|
license = licenses.mit;
|
|
maintainers = with maintainers; [ aidalgol huantian ];
|
|
inherit (electron.meta) platforms;
|
|
};
|
|
}
|