Files
2026-08-08 18:00:34 +02:00

61 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# About me: Installs the built extension into the Vortex Wine prefix and repairs
# the prefix's missing Steam libraryfolders.vdf. Vortex loads user extensions from
# AppData/Roaming/Vortex/plugins inside the prefix, so installing is a copy plus
# a restart of Vortex.
#
# Usage: tools/install-extension.sh [--prefix <pfx>] [--force-shim] [--disable-bundled]
set -euo pipefail
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PREFIX="${VORTEX_PREFIX:-$HOME/.config/steamtinkerlaunch/vortex/compatdata/pfx}"
EXTENSION_NAME="game-cyberpunk2077-linux"
FORCE_SHIM=""
DISABLE_BUNDLED="no"
while [[ $# -gt 0 ]]; do
case "$1" in
--prefix) PREFIX="$2"; shift 2 ;;
--force-shim) FORCE_SHIM="--force"; shift ;;
--disable-bundled) DISABLE_BUNDLED="yes"; shift ;;
*) echo "unknown argument: $1" >&2; exit 1 ;;
esac
done
if [[ ! -d "$PREFIX" ]]; then
echo "prefix not found: $PREFIX" >&2
exit 1
fi
PLUGINS_DIR="$PREFIX/drive_c/users/steamuser/AppData/Roaming/Vortex/plugins"
if [[ ! -d "$PLUGINS_DIR" ]]; then
echo "Vortex plugins directory not found: $PLUGINS_DIR" >&2
echo "start Vortex once in this prefix, then run this script again" >&2
exit 1
fi
echo "==> building"
(cd "$PROJECT_ROOT" && npm run --silent build)
TARGET="$PLUGINS_DIR/$EXTENSION_NAME"
echo "==> installing to $TARGET"
rm -rf "$TARGET"
mkdir -p "$TARGET"
cp "$PROJECT_ROOT/dist/index.js" "$PROJECT_ROOT/dist/info.json" "$PROJECT_ROOT/dist/package.json" "$TARGET/"
cp "$PROJECT_ROOT/dist/gameart.png" "$TARGET/"
echo "==> repairing the prefix's Steam libraryfolders.vdf"
(cd "$PROJECT_ROOT" && node --experimental-strip-types scripts/repair-prefix.mjs --prefix "$PREFIX" ${FORCE_SHIM:+$FORCE_SHIM})
if [[ "$DISABLE_BUNDLED" == "yes" ]]; then
BUNDLED="$PREFIX/drive_c/Program Files/Black Tree Gaming Ltd/Vortex/resources/app.asar.unpacked/bundledPlugins/game-cyberpunk2077"
if [[ -d "$BUNDLED" ]]; then
echo "==> disabling the bundled Cyberpunk stub: $BUNDLED -> $BUNDLED.disabled"
mv "$BUNDLED" "$BUNDLED.disabled"
else
echo "==> bundled Cyberpunk stub not present, nothing to disable"
fi
fi
echo "==> done. Restart Vortex, then manage 'Cyberpunk 2077 (Linux/Proton)'."