-
Notifications
You must be signed in to change notification settings - Fork 7
Getting Started
Install NKit and NKDS, run your first conversion, and set up a DataStore collection.
Download the latest release from GitHub Releases.
Choose the archive for your platform:
| Archive | Contains |
|---|---|
NKit_CLI_<platform>.zip |
nkit, nkds, default config, fix files |
NKit_UI_<platform>.zip |
nkit-ui, nkds-ui, default config, fix files |
All binaries are self-contained native AOT executables — CLI and UI. No .NET runtime required.
Extract the zip. On first run Windows SmartScreen may show "Windows protected your PC" — click More info → Run anyway. This is a common false positive for unsigned native AOT executables; the builds are automated and clean.
chmod +x nkit nkds
./nkitIf you see a glibc version error, download the legacy build instead (supports glibc 2.27+, Ubuntu 18.04+).
Remove the quarantine attribute before running:
xattr -d com.apple.quarantine nkit nkds nkit-ui nkds-ui
chmod +x nkit nkds nkit-ui nkds-uiBoth nkit and nkds set up your config directory automatically on first run:
# Windows
nkit.exe
# Linux / macOS
./nkitOn first run NKit creates the standard folder tree in your config directory:
-
Portable mode (if
nkit.yamlis next to the executable): everything stays in that folder -
System mode (no local
nkit.yaml): config goes to%APPDATA%\nkit(Windows) or~/.config/nkit(Linux) or~/Documents/nkit(macOS)
The folder structure created:
nkit.yaml ← default config (edit this)
dats/ ← dat files for verification (redump, no-intro, tosec)
keys/ ← key files for WiiU/PS3
fix/ ← fix/recovery files
out/ ← default output
logs/
temp/
dedupe/
The easiest way to get started is the interactive builder. Just run the app with no arguments:
# Launch interactive mode
./nkit
# Or drop a file onto the executable — it pre-seeds as input
./nkit "Super Mario World (USA).iso"The builder walks you through picking a task and options, then shows the equivalent command before running.
# Windows
nkit.exe convert "Super Mario World (USA).iso" --format rvz:zstd:19:128k:16 --output C:\output
# Linux / macOS
./nkit convert "Super Mario World (USA).iso" --format rvz:zstd:19:128k:16 --output ~/outputWUA is a compressed ZArchive container. Loadiine is a decrypted folder layout. Both are useful for emulators (Cemu) without needing the original encrypted disc.
# WUX → WUA
nkit.exe convert "Game.wux" --format wua --keys WiiUKeys.zip --output C:\output
# WUX → Loadiine folder
nkit.exe convert "Game.wux" --format loadiine --keys WiiUKeys.zip --output C:\output
# WUA → AppTmd (installable NUS package)
nkit.exe convert "Game.wua" --format apptmd --output C:\output
# Loadiine folder → AppTmd
nkit.exe convert "GameFolder" --format apptmd --output C:\output# Windows — scan all ISOs recursively
nkit.exe scan D:\Roms --recursive --scan-out D:\Scans
# Linux
./nkit scan ~/roms --recursive --scan-out ~/scans# Windows
nkit.exe verify D:\Roms --recursive --dats-redump D:\Dats\redump
# Linux
./nkit verify ~/roms --recursive --dats-redump ~/dats/redump# Extract all files from a Wii image
nkit.exe extract "Wii Sports (USA).iso" --output ./extracted
# Extract with a mask (e.g. only .dol files)
nkit.exe extract "Wii Sports (USA).iso" --output ./extracted --mask *.dol# Windows — create a 'wii' set and add images
nkds.exe create --datastore D:\NKitData wii
nkds.exe add --datastore D:\NKitData\wii.nkds D:\WiiISOs --recursive
# Linux
./nkds create --datastore /data/nkit wii
./nkds add --datastore /data/nkit/wii.nkds ~/wii-isos --recursive# Windows (requires Dokan)
nkds.exe mount --datastore D:\NKitData --mount N:\
# Linux (requires FUSE 3)
./nkds mount --datastore /data/nkit --mount /mnt/nkitYour emulator now sees regular ISOs at the mount point. No extraction needed.
# Windows
nkds.exe stats --datastore D:\NKitData\wii.nkds
# Linux
./nkds stats --datastore /data/nkit/wii.nkdsNKit uses a YAML config file (nkit.yaml) for defaults. Edit it to set your preferred output paths, dat locations, and per-system settings.
Key config variables:
-
$configPath$— your config directory -
$system$— current system name (lowercase:wii,wiiu,ps3, …) -
$task$— current task (lowercase:convert,scan, …) -
$date$— current date asyyyymmdd
Example: point keys at your config directory:
wiiu:
keys: $configPath$/keys/$system$/*.zipSee NKit CLI for the full parameter reference.
- NKit Processing Tasks — what each task does
- NKit CLI — full parameter reference
- NKDS — DataStore concepts and workflows
- NKDS CLI — full NKDS command reference
- NKDS OGMR — per-game set workflow for maximum deduplication