Add Pokemon Infinite Fusion

This commit is contained in:
Peder Bergebakken Sundt 2023-06-15 21:26:19 +02:00
parent ea10793cf3
commit 7ca39f5b56
7 changed files with 161 additions and 5 deletions

2
.envrc
View File

@ -1,2 +1,2 @@
#!/usr/bin/env bash #!/usr/bin/env bash
export NIX_CONFIG='builders = ""' export NIX_CONFIG='builders = '

View File

@ -19,14 +19,14 @@
inherit (callPackage ./pkgs/fetchers.nix { inherit badown mediafire-dl; }) inherit (callPackage ./pkgs/fetchers.nix { inherit badown mediafire-dl; })
fetchFromDrive fetchFromDrive
; fetchFromMediafire;
pokemon = let pokemon = let
callPackage = newScope (erosanix.lib.x86_64-linux // { callPackage = newScope (erosanix.lib.x86_64-linux // {
wine = wineWowPackages.full; wine = wineWowPackages.full;
inherit inherit
fetchFromDrive fetchFromDrive
; fetchFromMediafire;
}); });
in { in {
@ -34,6 +34,8 @@
# - https://github.com/emmanuelrosa/erosanix/tree/master/pkgs/mkwindowsapp # - https://github.com/emmanuelrosa/erosanix/tree/master/pkgs/mkwindowsapp
# - https://github.com/emmanuelrosa/sumatrapdf-nix/blob/master/sumatrapdf.nix # - https://github.com/emmanuelrosa/sumatrapdf-nix/blob/master/sumatrapdf.nix
infinite-fusion = callPackage ./games/infinite-fusion.nix { };
project-untamed = callPackage ./games/project-untamed.nix { }; project-untamed = callPackage ./games/project-untamed.nix { };
}; };
@ -49,7 +51,7 @@
lib.x86_64-linux = { lib.x86_64-linux = {
inherit (self.packages.x86_64-linux) inherit (self.packages.x86_64-linux)
fetchFromDrive fetchFromDrive
; fetchFromMediafire;
}; };
}; };

68
games/infinite-fusion.nix Normal file
View File

@ -0,0 +1,68 @@
{ lib
, fetchFromMega
, fetchFromMediafire
, fetchurl
, mkWindowsApp
, wine
, unzip
, makeDesktopItem
, makeDesktopIcon
, copyDesktopItems
, copyDesktopIcons
}:
let uid = "pkmn-infinite-fusion";
in mkWindowsApp rec {
pname = "Pokemon Infinite Fusion";
version = "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 {
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";
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}"
'';
fileMap."$HOME/.local/share/${uid}/AppData/infinitefusion"
= "drive_c/users/$USER/AppData/Roaming/infinitefusion";
winAppRun = ''
$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=";
};
};
}

View File

@ -38,7 +38,7 @@ in mkWindowsApp rec {
${unzip}/bin/unzip ${src} -d "$WINEPREFIX/drive_c/" ${unzip}/bin/unzip ${src} -d "$WINEPREFIX/drive_c/"
''; '';
fileMap."$HOME/.local/share/${uid}/AppData" fileMap."$HOME/.local/share/${uid}/AppData/project-untamed"
= "drive_c/users/$USER/AppData/Roaming/project-untamed"; = "drive_c/users/$USER/AppData/Roaming/project-untamed";
winAppRun = '' winAppRun = ''

48
pkgs/badown.nix Normal file
View File

@ -0,0 +1,48 @@
{ lib
, fetchFromGitHub
, stdenvNoCC
, wget
, gzip
, gawk
, openssl
, nodejs-slim
, unixtools
, patsh
}:
stdenvNoCC.mkDerivation {
pname = "badown";
version = "unstable-2023-03-05";
src = fetchFromGitHub {
owner = "stck-lzm";
repo = "badown";
rev = "4baf0b841860c246ff1c98d986665e0e00c57a58";
hash = "sha256-A/zeLIiUIWhO2tqsav3SQFzTKLD+eZGYnWMtWUvlOhc=";
};
buildInputs = [
wget
gzip
gawk
openssl
nodejs-slim
unixtools.getopt
];
nativeBuildInputs = [
patsh
];
buildPhase = ''
patsh -f badown -s ${builtins.storeDir}
'';
installPhase = ''
runHook preInstall
install -Dm755 badown $out/bin/badown
runHook postInstall
'';
meta.description = "bash-downloader for mediafire, zippyshare & mega";
}

View File

@ -1,6 +1,8 @@
{ lib { lib
, runCommand , runCommand
, findutils , findutils
, badown
, mediafire-dl
, gdown , gdown
}: }:
let let
@ -40,4 +42,10 @@ in {
"HOME=$(mktemp -d) ${gdown}/bin/gdown ${lib.escapeShellArg url}" "HOME=$(mktemp -d) ${gdown}/bin/gdown ${lib.escapeShellArg url}"
); );
fetchFromMediafire = mkFetcher (url:
# TODO: why doesn't this work inside a FOD?
#"${badown}/bin/badown ${lib.escapeShellArg url}"
"${mediafire-dl}/bin/mediafire-dl ${lib.escapeShellArg url}"
);
} }

30
pkgs/mediafire-dl.nix Normal file
View File

@ -0,0 +1,30 @@
{ lib
, fetchFromGitHub
, buildPythonApplication
, requests
, tqdm
, six
}:
buildPythonApplication {
pname = "mediafire-dl";
version = "unstable-2023-03-05";
src = fetchFromGitHub {
owner = "Juvenal-Yescas";
repo = "mediafire-dl";
rev = "ee057133595bc882bc0ecd2e084e5b09a44b9469";
hash = "sha256-96G2F7+iZOabANICKIJ1BqTNanFyZ7joHQHmU5YNYUY=";
};
propagatedBuildInputs = [
requests
tqdm
six
];
doCheck = false;
meta.homepage = "https://github.com/Juvenal-Yescas/mediafire-dl";
meta.description = "Simple command-line script to download files from mediafire based on gdown";
}