Skip to content

Latest commit

 

History

History
184 lines (147 loc) · 5.95 KB

File metadata and controls

184 lines (147 loc) · 5.95 KB

slippi-nix

build status

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.

Usage

The simplest usage is to run the launcher directly:

nix run github:lytedev/slippi-nix

To 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 nixpkgs

This 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
          ];
        }
      ];
    };
  };
}

Home Manager Module

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.

Beta

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.

Updates

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.

Cache

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="];
};

Packages

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

License

This project is licensed under the MIT license.