diff --git a/flake.nix b/flake.nix index 970f483..07885c0 100644 --- a/flake.nix +++ b/flake.nix @@ -19,13 +19,16 @@ inherit (callPackage ./pkgs/fetchers.nix { inherit badown mediafire-dl; }) fetchFromDrive + fetchFromMega fetchFromMediafire; pokemon = let callPackage = newScope (erosanix.lib.x86_64-linux // { wine = wineWowPackages.full; + wineArch = "win64"; inherit fetchFromDrive + fetchFromMega fetchFromMediafire; }); in { @@ -34,7 +37,15 @@ # - https://github.com/emmanuelrosa/erosanix/tree/master/pkgs/mkwindowsapp # - https://github.com/emmanuelrosa/sumatrapdf-nix/blob/master/sumatrapdf.nix - infinite-fusion = callPackage ./games/infinite-fusion.nix { }; + infinite-fusion = callPackage ./games/infinite-fusion.nix { + legacy-version = false; + }; + + infinite-fusion-legacy = callPackage ./games/infinite-fusion.nix { + legacy-version = true; + wine = winePackages.full; + wineArch = "win32"; + }; project-untamed = callPackage ./games/project-untamed.nix { }; @@ -51,6 +62,7 @@ lib.x86_64-linux = { inherit (self.packages.x86_64-linux) fetchFromDrive + fetchFromMega fetchFromMediafire; }; diff --git a/games/infinite-fusion.nix b/games/infinite-fusion.nix index 5668200..1eeb4e2 100644 --- a/games/infinite-fusion.nix +++ b/games/infinite-fusion.nix @@ -4,29 +4,39 @@ , 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 = "5.2.1"; + 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 = fetchFromMediafire rec { + 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 = "win64"; + inherit wine wineArch; nativeBuildInputs = [ copyDesktopItems copyDesktopIcons ]; installPhase = '' @@ -37,12 +47,23 @@ in mkWindowsApp rec { 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 = '' + 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" ''; diff --git a/games/project-untamed.nix b/games/project-untamed.nix index 8893715..7f26c32 100644 --- a/games/project-untamed.nix +++ b/games/project-untamed.nix @@ -3,6 +3,7 @@ , fetchurl , mkWindowsApp , wine +, wineArch , unzip , makeDesktopItem , makeDesktopIcon @@ -24,8 +25,7 @@ in mkWindowsApp rec { assert_exists = [ name ]; }; - inherit wine; - wineArch = "win64"; + inherit wine wineArch; nativeBuildInputs = [ copyDesktopItems copyDesktopIcons ]; installPhase = '' diff --git a/pkgs/fetchers.nix b/pkgs/fetchers.nix index 83d8e7a..8b18b59 100644 --- a/pkgs/fetchers.nix +++ b/pkgs/fetchers.nix @@ -1,6 +1,7 @@ { lib , runCommand , findutils +, megatools , badown , mediafire-dl , gdown @@ -42,6 +43,10 @@ in { "HOME=$(mktemp -d) ${gdown}/bin/gdown ${lib.escapeShellArg url}" ); + fetchFromMega = mkFetcher (url: + "${megatools}/bin/megadl ${lib.escapeShellArg url} --disable-resume --no-ask-password" + ); + fetchFromMediafire = mkFetcher (url: # TODO: why doesn't this work inside a FOD? #"${badown}/bin/badown ${lib.escapeShellArg url}"