90 lines
2.5 KiB
Nix
90 lines
2.5 KiB
Nix
{ lib
|
|
, fetchFromMega
|
|
, fetchFromMediafire
|
|
, fetchurl
|
|
, mkWindowsApp
|
|
, wine
|
|
, wineArch
|
|
, unzip
|
|
, makeDesktopItem
|
|
, makeDesktopIcon
|
|
, copyDesktopItems
|
|
, copyDesktopIcons
|
|
, legacy-version ? false
|
|
}:
|
|
let uid = "pkmn-infinite-fusion";
|
|
in mkWindowsApp rec {
|
|
pname = "Pokemon Infinite Fusion";
|
|
version = if legacy-version
|
|
then "4.9.2"
|
|
else "5.2.1";
|
|
meta.homepage = "https://www.pokecommunity.com/showthread.php?t=347883";
|
|
meta.description = "This game re-introduces the DNA Splicers from Black and White 2... Except this time, you can use it on EVERY Pokémon!";
|
|
|
|
dontUnpack = true;
|
|
src = if legacy-version
|
|
then fetchFromMega rec {
|
|
name = "infinitefusion_${version}-full.zip";
|
|
url = "https://mega.nz/file/kg9UxbAI#G-bG8rv1HkOqTkza4R1TCcNFihc0C9ir21GtcMD6FPo";
|
|
hash = "sha256-YTEVoQ6Dml5XBb9jSkzKHCWs4MAtdULSsnkJHp7uUCY=";
|
|
assert_exists = [ name ];
|
|
}
|
|
else fetchFromMediafire rec {
|
|
name = "infinitefusion_preloaded_${version}_full.zip";
|
|
url = "https://www.mediafire.com/file/2eqpi1qq74yl1gb/infinitefusion_preloaded_5.2.1_full.zip/file";
|
|
hash = "sha256-JyalBh2ikwAbNm1SUg2oYXnLKbg2jG0ZmBUjoFOhGuk=";
|
|
assert_exists = [ name ];
|
|
};
|
|
|
|
inherit wine wineArch;
|
|
nativeBuildInputs = [ copyDesktopItems copyDesktopIcons ];
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
ln -s $out/bin/.launcher $out/bin/${lib.escapeShellArg pname}
|
|
runHook postInstall
|
|
'';
|
|
|
|
winAppInstall = ''
|
|
${unzip}/bin/unzip ${src} -d "$WINEPREFIX/drive_c/${uid}"
|
|
'' + lib.optionalString legacy-version ''
|
|
mkdir -vp "$WINEPREFIX/drive_c/windows/fonts"
|
|
cp -v "$WINEPREFIX/drive_c/${uid}/Fonts/"* "$WINEPREFIX/drive_c/windows/fonts/"
|
|
'';
|
|
|
|
# v5+
|
|
fileMap."$HOME/.local/share/${uid}/AppData/infinitefusion"
|
|
= "drive_c/users/$USER/AppData/Roaming/infinitefusion";
|
|
# legacy
|
|
fileMap."$HOME/.local/share/${uid}/Saved Games"
|
|
= "drive_c/users/$USER/Saved Games";
|
|
|
|
winAppRun = if legacy-version
|
|
then ''
|
|
$WINE start /unix "$WINEPREFIX"/drive_c/${uid}/Game.exe "$ARGS"
|
|
''
|
|
else ''
|
|
$WINE start /unix "$WINEPREFIX"/drive_c/${uid}/"Pokemon Infinite Fusion".exe "$ARGS"
|
|
'';
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem {
|
|
name = pname;
|
|
exec = pname;
|
|
icon = uid;
|
|
desktopName = pname;
|
|
categories = ["Game"];
|
|
})
|
|
];
|
|
|
|
desktopIcon = makeDesktopIcon {
|
|
name = uid;
|
|
icoIndex = 0;
|
|
src = fetchurl {
|
|
url = "https://static.wikia.nocookie.net/infinitefusion/images/e/e6/Site-logo.png";
|
|
hash = "sha256-TupD2OHsJnH/SntZUqvjoBvIZziRN+Wv8S0nMLQ7UQE=";
|
|
};
|
|
};
|
|
|
|
}
|