Enhanced the configuration files to support multi-user management by introducing user options for multiple applications, including art, gaming, multimedia, and development tools. Updated existing modules to utilize these new user options, improving flexibility and maintainability in user package installations.
84 lines
2.4 KiB
Nix
84 lines
2.4 KiB
Nix
{
|
|
config,
|
|
inputs,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
retroarchWithCores = pkgs.retroarch.withCores (
|
|
cores:
|
|
builtins.attrValues {
|
|
inherit (cores)
|
|
mgba # gba
|
|
pcsx2 # ps2
|
|
dolphin # wii / gamecube
|
|
snes9x2010 # snes
|
|
desmume # nintendo ds
|
|
citra # 3ds
|
|
;
|
|
}
|
|
);
|
|
in
|
|
{
|
|
imports = [ inputs.nix-gaming.nixosModules.platformOptimizations ];
|
|
options.my.apps = {
|
|
gaming = {
|
|
enable = lib.mkEnableOption "gaming applications and emulators";
|
|
users = lib.mkOption {
|
|
type = lib.types.either lib.types.str (lib.types.listOf lib.types.str);
|
|
default = config.my.toggleUsers.apps;
|
|
description = "Users to install gaming packages for";
|
|
};
|
|
};
|
|
switch.enable = lib.mkEnableOption "Nintendo Switch homebrew tools";
|
|
};
|
|
config = lib.mkIf config.my.apps.gaming.enable {
|
|
# sops.secrets.switch-presence = lib.mkIf config.my.apps.gaming.switch.enable {
|
|
# sopsFile = ../../secrets/env.yaml;
|
|
# format = "dotenv";
|
|
# owner = config.users.users.jawz.name;
|
|
# inherit (config.users.users.jawz) group;
|
|
# };
|
|
programs = {
|
|
gamemode.enable = true;
|
|
steam = {
|
|
enable = true;
|
|
gamescopeSession.enable = true;
|
|
remotePlay.openFirewall = true;
|
|
dedicatedServer.openFirewall = true;
|
|
platformOptimizations.enable = true;
|
|
};
|
|
};
|
|
services = lib.mkIf config.my.apps.switch.enable {
|
|
switch-boot.enable = true;
|
|
# switch-presence = {
|
|
# enable = true;
|
|
# environmentFile = config.sops.secrets.switch-presence.path;
|
|
# };
|
|
};
|
|
users.users =
|
|
let
|
|
packages = builtins.attrValues {
|
|
inherit retroarchWithCores;
|
|
inherit (pkgs)
|
|
shipwright # zelda OoT port
|
|
mangohud # fps & stats overlay
|
|
lutris # games launcher & emulator hub
|
|
cartridges # games launcher
|
|
gamemode # optimizes linux to have better gaming performance
|
|
heroic # install epic games
|
|
protonup-qt # update proton-ge
|
|
ns-usbloader # load games into my switch
|
|
# emulators
|
|
rpcs3 # ps3
|
|
cemu # wii u
|
|
ryubing # switch
|
|
prismlauncher # minecraft launcher with jdk overlays
|
|
;
|
|
};
|
|
in
|
|
inputs.self.lib.mkUserPackages lib config.my.apps.gaming.users packages;
|
|
};
|
|
}
|