feat(console): add the standalone Dolphin emulator

The libretro dolphin core lags upstream on compatibility in the same way
LRPS2 does, so install pkgs.dolphin-emu next to pkgs.pcsx2 and run
GameCube and Wii titles through it. The cores stay for the sake of a
single frontend and a shared save/state layout.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Emma Thorpe
2026-09-01 10:32:24 +01:00
co-authored by Claude Opus 5
parent 4e3347cb8c
commit 730bcd1a5d
2 changed files with 15 additions and 9 deletions
+11 -9
View File
@@ -124,11 +124,11 @@ The greeter is **Dvorak**, like every other host here (`modules/sway.nix` forces
`XKB_DEFAULT_VARIANT=dvorak` on cage). Only relevant if someone else has to type
a password.
### Adding RetroArch, PCSX2 and Clone Hero to Big Picture
### Adding non-Steam titles to Big Picture
All three are installed system-wide but are not Steam titles. Added as Steam
shortcuts they appear in Big Picture and inherit Steam Input, so the controller
works in them without further configuration.
RetroArch, PCSX2, Dolphin and Clone Hero are installed system-wide but are not
Steam titles. Added as Steam shortcuts they appear in Big Picture and inherit
Steam Input, so the controller works in them without further configuration.
Steam's own **Games → Add a Non-Steam Game** is the documented route and is also
the one that tends not to work. Both that dialog's **Browse** button and the
@@ -156,6 +156,7 @@ Independent of the dialog, `steamtinkerlaunch` writes `shortcuts.vdf` directly:
# Steam must be closed -- it rewrites shortcuts.vdf on exit.
steamtinkerlaunch addnonsteamgame -an="RetroArch" -ep="$(command -v retroarch)"
steamtinkerlaunch addnonsteamgame -an="PCSX2" -ep="$(command -v pcsx2-qt)"
steamtinkerlaunch addnonsteamgame -an="Dolphin" -ep="$(command -v dolphin-emu)"
steamtinkerlaunch addnonsteamgame -an="Clone Hero" -ep="$(command -v clonehero)"
```
@@ -221,11 +222,12 @@ cores lag on compatibility and are the first place to look when a GameCube, Wii
or PS2 title misbehaves.
That has already happened for PS2: the LRPS2 core was not good enough in
practice, so **standalone `pkgs.pcsx2` is installed** in `gaming.nix` alongside
the core and is what PS2 titles should be run through. `pkgs.dolphin-emu` is not
installed; add it the same way if GameCube or Wii turns out to need it.
practice. **`pkgs.pcsx2` and `pkgs.dolphin-emu` are both installed** in
`gaming.nix` alongside their cores, and are what PS2, GameCube and Wii titles
should be run through. The cores stay for the sake of a single frontend and a
shared save/state layout.
Both are controller-driven and can be added to Big Picture the same way as
Both are controller-driven and are added to Big Picture the same way as
RetroArch. The hardware is not the limit here — a GTX 1070 and a Haswell i7 run
PS2 and Wii comfortably.
@@ -278,7 +280,7 @@ once, in their own UIs:
- **Steam** — Settings → Storage → the `+` control → add `/srv/games/steam` as a
library folder. Games installed there survive a reinstall of the OS. That
picker is the broken one described under
[Adding RetroArch, PCSX2 and Clone Hero to Big Picture](#adding-retroarch-pcsx2-and-clone-hero-to-big-picture);
[Adding non-Steam titles to Big Picture](#adding-non-steam-titles-to-big-picture);
when it comes up blank, use Steam's own console instead — open Steam with
`steam -console`, pick the **CONSOLE** tab and run:
+4
View File
@@ -246,6 +246,10 @@ in
environment.systemPackages = [
retroarch
pkgs.clonehero
# Standalone GameCube/Wii and PS2, alongside the libretro cores of the same
# name: upstream effort goes into these builds, so they are what the two
# heaviest systems should actually be run through.
pkgs.dolphin-emu
pkgs.pcsx2
pkgs.dualsensectl # DualSense LED/battery/mic control from the shell
# Writes shortcuts.vdf from the shell. Steam's own "Add a Non-Steam Game"