depot/third_party/nixpkgs/pkgs/applications/emulators/retroarch
Default email ae2dc6aea6 Project import generated by Copybara.
GitOrigin-RevId: 4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0
2024-10-11 07:15:48 +02:00
..
patches Project import generated by Copybara. 2023-11-16 04:20:00 +00:00
cores.nix Project import generated by Copybara. 2024-09-26 11:04:55 +00:00
default.nix Project import generated by Copybara. 2024-10-11 07:15:48 +02:00
hashes.json Project import generated by Copybara. 2024-10-04 18:56:33 +02:00
kodi-advanced-launchers.nix Project import generated by Copybara. 2022-02-20 05:27:41 +00:00
libretro-core-info.nix Project import generated by Copybara. 2024-06-05 17:53:02 +02:00
mkLibretroCore.nix Project import generated by Copybara. 2024-02-06 17:22:34 -08:00
README.md Project import generated by Copybara. 2024-09-19 17:19:46 +03:00
retroarch-assets.nix Project import generated by Copybara. 2024-10-04 18:56:33 +02:00
retroarch-joypad-autoconfig.nix Project import generated by Copybara. 2024-06-05 17:53:02 +02:00
update_cores.py Project import generated by Copybara. 2024-05-15 17:35:15 +02:00
wrapper.nix Project import generated by Copybara. 2024-02-06 17:22:34 -08: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
  ];
}