aboutsummaryrefslogtreecommitdiff
path: root/modules/pkgs/fluffy-mod-manager.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/pkgs/fluffy-mod-manager.nix')
-rw-r--r--modules/pkgs/fluffy-mod-manager.nix86
1 files changed, 86 insertions, 0 deletions
diff --git a/modules/pkgs/fluffy-mod-manager.nix b/modules/pkgs/fluffy-mod-manager.nix
new file mode 100644
index 0000000..d1dfe83
--- /dev/null
+++ b/modules/pkgs/fluffy-mod-manager.nix
@@ -0,0 +1,86 @@
+{ ... }:
+{
+ flake.overlays.fluffy-mod-manager = final: prev: {
+ fluffy-mod-manager = final.callPackage (
+ {
+ lib,
+ stdenv,
+ makeWrapper,
+ wine,
+ requireFile,
+ copyDesktopItems,
+ makeDesktopItem,
+ icoutils,
+ imagemagick,
+ unzip,
+ }:
+ stdenv.mkDerivation rec {
+ pname = "fluffy-mod-manager";
+ version = "3.016";
+
+ src = requireFile {
+ name = "fluffy-mod-manager.zip";
+ url = "https://www.nexusmods.com/residentevil32020/mods/8";
+ sha256 = "071sa9a8dw2zzk3pamhalfn8whzjp8ch3a6wjx6jqgp1g60k6ai6";
+ };
+
+ nativeBuildInputs = [ makeWrapper copyDesktopItems icoutils imagemagick unzip ];
+
+ sourceRoot = ".";
+
+ desktopItems = [
+ (makeDesktopItem {
+ name = "fluffy-mod-manager";
+ exec = "fluffy-mod-manager";
+ icon = "fluffy-mod-manager";
+ desktopName = "Fluffy Mod Manager";
+ categories = [ "Game" ];
+ startupWMClass = "modmanager.exe";
+ })
+ ];
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/share/fluffy-mod-manager
+ cp -r * $out/share/fluffy-mod-manager/
+
+ mkdir -p $out/share/pixmaps
+ EXE_NAME=$(find . -maxdepth 1 -iname "modmanager.exe" -print -quit)
+ if [ -n "$EXE_NAME" ]; then
+ wrestool -x -t 14 -n 105 "$EXE_NAME" -o fluffy.ico || true
+ if [ -f fluffy.ico ]; then
+ magick "fluffy.ico[0]" $out/share/pixmaps/fluffy-mod-manager.png || convert "fluffy.ico[0]" $out/share/pixmaps/fluffy-mod-manager.png || true
+ fi
+ fi
+
+ mkdir -p $out/bin
+
+ makeWrapper ${wine}/bin/wine $out/bin/fluffy-mod-manager \
+ --run "export WINEPREFIX=\"''${WINEPREFIX:-\$HOME/.wine}\"" \
+ --run "mkdir -p \"\$WINEPREFIX/drive_c/FluffyModManager\"" \
+ --run "cp -rn $out/share/fluffy-mod-manager/* \"\$WINEPREFIX/drive_c/FluffyModManager/\"" \
+ --run "chmod -R +w \"\$WINEPREFIX/drive_c/FluffyModManager\"" \
+ --run "cd \"\$WINEPREFIX/drive_c/FluffyModManager\"" \
+ --add-flags "Modmanager.exe"
+
+ runHook postInstall
+ '';
+
+ meta = with lib; {
+ description = "Mod manager for many Capcom games and others";
+ homepage = "https://www.fluffymanager.com/";
+ license = licenses.unfree;
+ platforms = platforms.linux;
+ };
+ }
+ ) {
+ # Use Wow64 package to ensure 64-bit prefix compatibility
+ wine = final.wineWow64Packages.waylandFull;
+ };
+ };
+
+ flake.modules.homeManager.fluffy-mod-manager = { pkgs, ... }: {
+ home.packages = [ pkgs.fluffy-mod-manager ];
+ };
+}