nixos-config/modules/nixos/_private/suites/gaming.nix

92 lines
3.0 KiB
Nix

# NixOS gaming.
{ lib, config, pkgs, ... }:
let
cfg = config.suites.gaming;
in
{
options.suites.gaming = {
enable = lib.mkEnableOption "basic gaming setup";
emulators.enable = lib.mkEnableOption "installation of individual game emulators";
retro-computing.enable = lib.mkEnableOption "installation of retro computer systems";
games.enable = lib.mkEnableOption "installation of certain FOSS games for funsies";
};
# Just don't ask where you can sail getting the games. :)
config = lib.mkIf cfg.enable (lib.mkMerge [
{
environment.systemPackages = with pkgs; [
# All-around emulator. Also what I'm mainly using for quickly
# initializing sessions.
(retroarch.override {
cores = with libretro; [
bsnes-hd
desmume
dolphin
dosbox-pure
pcsx2
ppsspp
];
})
];
# Setup the go-to platform for Linux gaming. Most of the
# games should work now with Proton integration.
programs.steam = {
enable = true;
gamescopeSession.enable = true;
};
# Get your game on, go play...
programs.gamemode.enable = true;
# Enable them controllers in case you have one.
hardware.steam-hardware.enable = true;
hardware.xone.enable = true;
hardware.xpadneo.enable = true;
# Enabling all hardware settings for the desktop (unless the user
# explicitly disabled it).
suites.desktop.hardware.enable = lib.mkDefault true;
}
(lib.mkIf cfg.emulators.enable {
environment.systemPackages = with pkgs; [
ares # Another multi-system emulator but for accuracy.
duckstation # Taking a gander with the original console.
ppsspp # (PSP)-squared for foodogsquared.
pcsx2 # A nice emulator with a nice (NOT) name.
scummvm # Pretty scummy of us to put it here despite not being an emulator.
];
})
# Despite the module being for gaming setup, no individual games are
# installed.
(lib.mkIf cfg.games.enable {
environment.systemPackages = with pkgs; [
cataclysm-dda # Dwarf Fortress but in the future.
dwarf-fortress # Dwarf Fortress.
endless-sky # My other cocaine replacement.
mindustry # Dwarf Fortress but with machineries.
minetest # Dwarf Fortress but with voxels.
openra # Dwarf Fortress but with futuristic armed civilizations.
superTuxKart # Dwarf Fortress but with racing carts.
starsector # My cocaine replacement.
the-powder-toy # Microscopic Dwarf Fortress.
wesnoth # Dwarf Fortress but with dwarves and fortresses.
zeroad # Dwarf Fortress but with ancient armed civilizations.
];
})
# Old computer systems for old people.
(lib.mkIf cfg.retro-computing.enable {
environment.systemPackages = with pkgs; [
dosbox-staging
fuse-emulator
vice
x16-emulator
];
})
]);
}