nixpkgs/pkgs/applications/emulators/retroarch
2024-11-22 09:52:52 +00:00
..
cores libretro.mame: move to retroarch/cores 2024-11-22 09:52:52 +00:00
patches
cores.nix libretro.mame: move to retroarch/cores 2024-11-22 09:52:52 +00:00
default.nix Added wayland-scanner build input to retroarch 2024-10-27 20:52:49 +13:00
hashes.json libretro.mesen: unstable-2024-06-09 -> unstable-2024-10-21 (#357458) 2024-11-20 10:31:33 +00:00
kodi-advanced-launchers.nix
libretro-core-info.nix libretro-core-info: 1.18.0 -> 1.19.0 2024-05-31 19:23:19 +00:00
mkLibretroCore.nix libretro.beetle-gba: move to retroarch/cores 2024-11-22 09:52:46 +00:00
README.md retroarch: add README.md 2024-08-28 13:23:26 +01:00
retroarch-assets.nix retroarch-assets: 1.19.0-unstable-2024-09-22 -> 1.19.0-unstable-2024-10-19 2024-11-18 09:40:31 +00:00
retroarch-joypad-autoconfig.nix retroarch-joypad-autoconfig: 1.18.1 -> 1.19.0 2024-06-03 19:24:18 +00:00
update_cores.py libretro.mame: unstable-2024-05-03 -> unstable-2024-05-04 2024-05-04 13:15:08 +01:00
wrapper.nix retroarchBare: 1.16.0.3 -> 1.17.0 2024-02-04 18:58:11 +00:00

RetroArch

This directory includes RetroArch, libretro cores and related packages.

Adding new cores

The basic steps to add a new core are:

  1. Add the core repository to update_cores.py inside the CORES map.
    • The minimum required parameter is repo
    • If the repository owner is not libretro, set owner parameter
    • If the core needs submodules, set fetch_submodules parameter to True
    • To pin the core to a specific release, set rev parameter
  2. Run ./pkgs/applications/emulators/retroarch/update_cores.py <emulator> to generate hashes.json file
  3. Add your new core to cores.nix file, using mkLibretroCore function
    • In general, the attribute name should be the same as the repo name, unless there is a good reason not to
    • Check the core repo and Libretro documentation for the core you're trying to add for instructions on how to build
    • Also check the examples inside cores.nix
    • If your core is recently released, there is a good chance that you may need to update libretro-core-info for things to work inside RetroArch
  4. Try to build your core with nix-build -A libretro.<core>

Updating cores

Just run:

# From the root of your nixpkgs directory
./pkgs/applications/emulators/retroarch/update_cores.nix

Keep in mind that because of the huge amount of cores that we package here, it is recommended to set GITHUB_TOKEN to your GitHub's Personal Access Token (PAT), otherwise the update will probably fail due to GitHub's API rate limit.

Using RetroArch with cores

To create a custom RetroArch derivation with the cores you want (instead of using retroarchFull that includes all cores), you can use .override like this:

{ pkgs, ... }:

let
  retroarchWithCores = (pkgs.retroarch.override {
    cores = with pkgs.libretro; [
      bsnes
      mgba
      quicknes
    ];
  });
in
{
  environment.systemPackages = [
    retroarchWithCores
  ];
}