This project is a Flake for installing and running the Slippi Launcher on NixOS using Nix-compatible versions of the playback and netplay builds of Dolphin (Ishiiruka). It also provides an optional NixOS module for optimizing your GameCube controller adapter and an optional Home Manager module for declarative configuration.
NOTE: At this time, this Flake only supports the x86_64-linux system
(since it consumes AppImages that support the same). If you are using Linux on
another CPU architecture, please reach out! If you are using macOS, install the
launcher from https://slippi.gg/downloads directly; I don't recommend using Nix
to manage your Slippi installation in that case.
The simplest usage is to run the launcher directly:
nix run github:lytedev/slippi-nixTo avoid potential graphics driver mismatches between the flake's pinned nixpkgs and your system, override the nixpkgs input to use your own:
nix run github:lytedev/slippi-nix --override-input nixpkgs nixpkgsThis uses the slippi-launcher-desktop package, which is a standalone wrapper
that automatically configures Dolphin paths and sets up AppImage symlinks on
each launch. No Home Manager module is required — you can configure your ISO
path and other settings through the launcher UI. Login and other
launcher-managed settings are preserved across rebuilds.
To add it permanently to your system:
{
inputs.slippi.url = "github:lytedev/slippi-nix";
inputs.slippi.inputs.nixpkgs.follows = "nixpkgs";
outputs = {slippi, nixpkgs, ...}: {
nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
modules = [
slippi.nixosModules.default # optional: GameCube adapter optimization
{
environment.systemPackages = [
slippi.packages.x86_64-linux.default
];
}
];
};
};
}For declarative control over settings (ISO path, replay directories, etc.), you can optionally use the Home Manager module. Nix-managed settings are merged into the settings file on each activation while preserving any launcher-managed settings (login credentials, etc.).
{
inputs.nixpkgs.url = "...";
inputs.slippi.url = "github:lytedev/slippi-nix";
inputs.slippi.inputs.nixpkgs.follows = "nixpkgs";
outputs = {slippi, nixpkgs, ...}: {
nixosConfigurations = nixpkgs.lib.nixosSystem {
system = "...";
modules = [
slippi.nixosModules.default
{
home-manager = {
# ... snip -- see Home Manager's documentation for details
users.YOUR_USERNAME = {
imports = with outputs.homeManagerModules; [
slippi.homeManagerModules.default
{
# use your path
slippi-launcher.isoPath = "/home/user/Downloads/melee.iso";
}
];
};
};
}
];
};
};
}There are other configuration options if you take a look at the flake's source. Most useful to me is:
slippi-launcher.launchMeleeOnPlay = false;As I prefer to be able to tweak Dolphin's settings before diving right in.
If you are upgrading from an older version of the Home Manager module that used a read-only symlink for the settings file, the stale symlink will be cleaned up automatically on the next activation.
You can enable the beta netplay client by adding this to the Home Manager configuration:
{
home-manager.users.YOUR_USERNAME = {
slippi-launcher.useNetplayBeta = true;
};
}The beta netplay client is not downloaded unless it is enabled. When enabled it is set as the default as well.
Note that this does not support the auto-updates performed by Slippi Launcher. Instead, when updates are pushed here, you must update your input reference to this flake and then your system.
nix flake lock --update-input slippi-nix # use whatever name you gave this flake as input!
sudo nixos-rebuild switch --flake .
In the event that this repo is out-of-date and an update was newly pushed out and you do not want to wait, or you prefer to be in control, the Home Manager module exposes extra configuration fields for specifying the version of the AppImage you want along with the hash like so:
{
home-manager.users.YOUR_USERNAME = {
slippi-launcher.netplayVersion = "3.4.0";
slippi-launcher.netplayHash = "sha256-d1iawMsMwFElUqFmwWAD9rNsDdQr2LKscU8xuJPvxYg=";
slippi-launcher.netplayBetaVersion = "4.0.0-mainline-beta.6";
slippi-launcher.netplayBetaHash = "sha256-CicAZ28+yiagG3bjosu02azV6XzP7+JnLhUJ3hdeQbI=";
slippi-launcher.playbackVersion = "3.4.0";
slippi-launcher.playbackHash = "sha256-d1iawMsMwFElUqFmwWAD9rNsDdQr2LKscU8xuJPvxYg=";
};
}So when a Slippi update is released, you can usually bump the version to match
and update the hash with whatever nix says it is.
You may also want to leverage our Cachix binary cache. There isn't much purpose to it since the "build" steps are just unpacking the AppImages and repacking them in a format that works with Nix, but they graciously provide one to us freely.
nixConfig = {
extra-substituters = ["https://slippi-nix.cachix.org"];
extra-trusted-public-keys = ["slippi-nix.cachix.org-1:2qnPHiOxTRpzgLEtx6K4kXq/ySDg7zHEJ58J6xNDvBo="];
};| Package | Description |
|---|---|
slippi-launcher-desktop (default) |
Standalone launcher with automatic Dolphin/AppImage setup |
slippi-launcher |
Base launcher AppImage (no config management, used by the HM module) |
slippi-netplay |
Stable netplay Dolphin |
slippi-netplay-beta |
Mainline (beta) netplay Dolphin |
slippi-playback |
Playback Dolphin |
This project is licensed under the MIT license.