nixos/modules/home/tibia.nix
Sasza Stanczew 57112d33a2 Cleanup: remove stale modules, improve libxml2 package, add wget dependency
- Remove old system-wide modules: modules/tibia.nix, modules/multimedia.nix
- libxml2-2.9: rename pname to libxml2-2-9 (avoid conflict), add meta
- Tibia module: add wget to home.packages (required for tibia-install)
- tibia-install: use wget directly (no fallback), since wget is now a dependency
2026-05-30 23:28:46 +02:00

147 lines
3.7 KiB
Nix

{ config, pkgs, lib, ... }:
let
cfg = config.programs.tibia;
# Legacy libxml2 (2.9.x) — wymagany przez Tibię, usunięty z nixpkgs-unstable
libxml2_2_9 = pkgs.callPackage ../../packages/libxml2-2.9 { };
# Wspólne ścieżki bibliotek
tibiaLibPath = lib.makeLibraryPath [
pkgs.nss
pkgs.nspr
pkgs.libxkbfile
libxml2_2_9
];
# Helper: eksport LD_LIBRARY_PATH
exportLibs = ''
export LD_LIBRARY_PATH="${tibiaLibPath}:$LD_LIBRARY_PATH"
'';
# Wrapper dla właściwego clienta (uruchamiany przez Tibia package.json)
tibiaClientWrapper = pkgs.writeShellScriptBin "tibia-client" ''
#!/usr/bin/env bash
${exportLibs}
exec steam-run "$HOME/.local/share/CipSoft GmbH/Tibia/packages/Tibia/bin/client" "$@"
'';
# Patchuje package.json Tibii żeby używała wrappera zamiast surowego binary
tibiaPatcher = pkgs.writeShellScriptBin "tibia-patch" ''
#!/usr/bin/env bash
set -e
PKGDIR="$HOME/.local/share/CipSoft GmbH/Tibia/packages/Tibia"
PKGJSON="$PKGDIR/package.json"
LOCALWRAPPER="$PKGDIR/tibia-client-wrapper"
if [ ! -f "$PKGJSON" ]; then
echo "package.json not found run the launcher once first."
exit 0
fi
if grep -q "tibia-client-wrapper" "$PKGJSON" 2>/dev/null; then
echo "Already patched."
exit 0
fi
cat > "$LOCALWRAPPER" <<'TIBIA_WRAPPER'
#!/usr/bin/env bash
${exportLibs}
exec ${tibiaClientWrapper}/bin/tibia-client "$@"
TIBIA_WRAPPER
chmod +x "$LOCALWRAPPER"
sed -i 's#"executable": "bin/client"#"executable": "tibia-client-wrapper"#' "$PKGJSON"
echo "Tibia client patched to use tibia-client-wrapper."
'';
# Uruchamia launcher Tibii (pobrany ręcznie przez tibia-install)
tibiaLauncherWrapper = pkgs.writeShellScriptBin "tibia" ''
#!/usr/bin/env bash
set -e
LAUNCHER="$HOME/Gry/Tibia/Tibia"
if [ ! -x "$LAUNCHER" ]; then
echo "Tibia launcher not found at:"
echo " $LAUNCHER"
echo ""
echo "Run 'tibia-install' first, or download manually from:"
echo " https://www.tibia.com/download/"
exit 1
fi
tibia-patch
${exportLibs}
exec steam-run "$LAUNCHER"
'';
# Pomija launcher, odpala clienta bezpośrednio
tibiaDirect = pkgs.writeShellScriptBin "tibia-direct" ''
#!/usr/bin/env bash
CLIENT="$HOME/.local/share/CipSoft GmbH/Tibia/packages/Tibia/bin/client"
if [ ! -x "$CLIENT" ]; then
echo "Tibia client not found."
echo "Run 'tibia' once so the launcher downloads the client."
exit 1
fi
${exportLibs}
exec steam-run "$CLIENT"
'';
# Instaluje launcher Tibii na nowym systemie
tibiaInstall = pkgs.writeShellScriptBin "tibia-install" ''
#!/usr/bin/env bash
set -e
URL="https://static.tibia.com/download/tibia.x64.tar.gz"
DEST="$HOME/Gry/Tibia"
TMPDIR=$(mktemp -d)
trap "rm -rf $TMPDIR" EXIT
echo "Downloading Tibia launcher from $URL ..."
wget -q --show-progress -O "$TMPDIR/tibia.tar.gz" "$URL"
mkdir -p "$DEST"
tar xzf "$TMPDIR/tibia.tar.gz" -C "$DEST"
chmod +x "$DEST/Tibia"
echo ""
echo "Tibia launcher installed to: $DEST/Tibia"
echo "Run 'tibia' to start."
'';
# .desktop entry
tibiaDesktop = pkgs.makeDesktopItem {
name = "tibia";
exec = "tibia-direct";
desktopName = "Tibia";
comment = "Tibia MMORPG Client";
categories = [ "Game" ];
};
in {
options.programs.tibia = {
enable = lib.mkEnableOption "Tibia game client support";
};
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
steam-run
libxml2_2_9
wget
tibiaClientWrapper
tibiaPatcher
tibiaLauncherWrapper
tibiaDirect
tibiaInstall
tibiaDesktop
];
};
}