Bootstrapping project

This commit is contained in:
Jordan Ashurst
2026-09-14 04:31:33 -07:00
commit a0cf14fda4
8 changed files with 78659 additions and 0 deletions
+144
View File
@@ -0,0 +1,144 @@
{
description = "Wii game decompilation dev environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
decomp-toolkit = pkgs.stdenv.mkDerivation rec {
pname = "decomp-toolkit";
version = "1.8.4";
src = pkgs.fetchurl {
url = "https://github.com/encounter/decomp-toolkit/releases/download/v${version}/dtk-linux-x86_64";
sha256 = "086k0cxspfhjmii51k1w8n2mxdnc9k0fc26ks75f1g818jcv31kw";
};
dontUnpack = true;
nativeBuildInputs = [ pkgs.autoPatchelfHook ];
buildInputs = [ pkgs.stdenv.cc.cc.lib ];
installPhase = ''
mkdir -p $out/bin
cp $src $out/bin/dtk
chmod +x $out/bin/dtk
'';
};
objdiff = pkgs.stdenv.mkDerivation rec {
pname = "objdiff";
version = "3.8.1";
src = pkgs.fetchurl {
url = "https://github.com/encounter/objdiff/releases/download/v${version}/objdiff-linux-x86_64";
sha256 = "1wf0y42w04v0cl3bpwc23wdvyylkqhv3jxbw4iwl8wlkbvrrqlkf";
};
dontUnpack = true;
nativeBuildInputs = [ pkgs.autoPatchelfHook ];
buildInputs = [
pkgs.stdenv.cc.cc.lib
pkgs.fontconfig
pkgs.libGL
pkgs.libxcb
pkgs.libx11
pkgs.libxkbcommon
pkgs.wayland
];
installPhase = ''
mkdir -p $out/bin
cp $src $out/bin/objdiff
chmod +x $out/bin/objdiff
'';
};
wibo = pkgs.stdenv.mkDerivation rec {
pname = "wibo";
version = "1.0.3";
src = pkgs.fetchurl {
url = "https://github.com/decompals/wibo/releases/download/${version}/wibo-x86_64";
sha256 = "f99iCxUXRClrm7kzGNjEAJ09PpjiNxim7an77Ezvuyo=";
};
dontUnpack = true;
nativeBuildInputs = [ pkgs.autoPatchelfHook ];
buildInputs = [ pkgs.stdenv.cc.cc.lib ];
installPhase = ''
mkdir -p $out/bin
cp $src $out/bin/wibo
chmod +x $out/bin/wibo
'';
};
in
{
devShells.default = pkgs.mkShell {
name = "steamboat-willie-decomp";
packages = [
# Decomp project tools
decomp-toolkit
objdiff
wibo
] ++ (with pkgs; [
# Reverse engineering
ghidra
radare2
# Wii/GC disc tools
wiimms-iso-tools
# Build tools
ninja
cmake
gnumake
pkg-config
# Utilities
git
python3
wget
curl
jq
patchelf
unzip
]);
shellHook = ''
echo "=== Steamboat Willie Decomp Dev Shell ==="
echo ""
echo "Tools available:"
echo " dtk - decomp-toolkit v1.8.4"
echo " objdiff - objdiff v3.8.1"
echo " wibo - Win32 wrapper v1.0.3 (runs CodeWarrior exes)"
echo " ghidra - reverse engineering IDE"
echo " radare2 - CLI disassembler"
echo " wit - Wiimms ISO Tools"
echo ""
# Point DEVKITPPC at a devkitPro install if one exists.
if [ -d "/opt/devkitpro/devkitPPC" ]; then
export DEVKITPRO=/opt/devkitpro
export DEVKITPPC=/opt/devkitpro/devkitPPC
echo "DEVKITPPC found: $DEVKITPPC"
else
echo "Note: devkitPPC is not installed."
echo " - For Metrowerks CodeWarrior games (most GC + many Wii),"
echo " devkitPPC is NOT required. dtk + wibo handle everything."
echo " - For GCC-compiled games (needing powerpc-eabi-gcc), install"
echo " devkitPro first:"
echo " wget https://apt.devkitpro.org/install-devkitpro-pacman"
echo " sudo ./install-devkitpro-pacman"
echo " sudo dkp-pacman -S devkitPPC"
fi
echo ""
echo "Quick start:"
echo " wit EXTRACT game.iso -o ./disc/"
echo " dtk disc info game.iso"
echo " dtk dol config sys/main.dol -o config.yml"
echo " python configure.py"
echo " ninja"
'';
};
}
);
}