{ config, lib, pkgs, ... }:

let
  hostCfg = config.hosts.ni;
  cfg = hostCfg.setups.gaming;
in {
  options.hosts.ni.setups.gaming.enable = lib.mkEnableOption "gaming setup";

  config = lib.mkIf cfg.enable {
    # Bring all of the goodies.
    suites.gaming = {
      enable = true;
      emulators.enable = true;
      retro-computing.enable = true;
    };

    programs.retroarch.cores = with pkgs.libretro; [ pcsx2 dolphin citra mame ];

    # Bring more of them games.
    environment.systemPackages = with pkgs; [
      rpcs3
      ryubing

      dwarf-fortress # Losing only means more possibilities to play.
      mindustry # Not a Minecraft industry simulator.
      minetest # Free Minecraft.
      the-powder-toy # Free micro-Minecraft.
      rotp-foodogsquared # Free space Minecraft planet colonization simulator.
    ];

    # This is somewhat used for streaming games from it.
    programs.steam.remotePlay.openFirewall = true;

    # Yes... Play your Brawl Stars and Clash Royale in NixOS. :)
    virtualisation.waydroid.enable = true;
  };
}
