diff --git a/hosts/nixos/yveltal/configuration.nix b/hosts/nixos/yveltal/configuration.nix index fc2b6a5..59ea725 100644 --- a/hosts/nixos/yveltal/configuration.nix +++ b/hosts/nixos/yveltal/configuration.nix @@ -32,6 +32,14 @@ greetd.enable = true; }; + gaming = { + steam.enable = true; + lutris.enable = true; + proton_ge.enable = true; + gamemode.enable = true; + mangohud.enable = true; + }; + # fix power buttons services.logind.settings.Login = { HandlePowerKey = "suspend"; diff --git a/modules/desktop/gaming/default.nix b/modules/desktop/gaming/default.nix index de412d9..f7ee925 100644 --- a/modules/desktop/gaming/default.nix +++ b/modules/desktop/gaming/default.nix @@ -5,5 +5,10 @@ ... }: { imports = [ + ./steam + ./lutris + ./proton_ge + ./gamemode + ./mangohud ]; } diff --git a/modules/desktop/gaming/gamemode/default.nix b/modules/desktop/gaming/gamemode/default.nix new file mode 100644 index 0000000..8530dc9 --- /dev/null +++ b/modules/desktop/gaming/gamemode/default.nix @@ -0,0 +1,20 @@ +{ + pkgs, + lib, + config, + ... +}: let + cfg = config.gaming.gamemode; +in { + options.gaming.gamemode = { + enable = lib.mkEnableOption "enable lutris"; + }; + + config = lib.mkIf cfg.enable { + + # enable gamemode for game optimizations + # requires setting launch option `gamemoderun %command%` + programs.gamemode.enable = true; + + }; +} diff --git a/modules/desktop/gaming/lutris/default.nix b/modules/desktop/gaming/lutris/default.nix new file mode 100644 index 0000000..51b9d0d --- /dev/null +++ b/modules/desktop/gaming/lutris/default.nix @@ -0,0 +1,18 @@ +{ + pkgs, + lib, + config, + ... +}: let + cfg = config.gaming.lutris; +in { + options.gaming.lutris = { + enable = lib.mkEnableOption "enable lutris"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + lutris + ]; + }; +} diff --git a/modules/desktop/gaming/mangohud/default.nix b/modules/desktop/gaming/mangohud/default.nix new file mode 100644 index 0000000..479393f --- /dev/null +++ b/modules/desktop/gaming/mangohud/default.nix @@ -0,0 +1,20 @@ +{ + pkgs, + lib, + config, + ... +}: let + cfg = config.gaming.mangohud; +in { + options.gaming.mangohud = { + enable = lib.mkEnableOption "enable lutris"; + }; + + config = lib.mkIf cfg.enable { + # preformance overlay + # requires setting launch option `mangohud %command%` + environment.systemPackages = with pkgs; [ + mangohud + ]; + }; +} diff --git a/modules/desktop/gaming/proton_ge/default.nix b/modules/desktop/gaming/proton_ge/default.nix new file mode 100644 index 0000000..c36ae1c --- /dev/null +++ b/modules/desktop/gaming/proton_ge/default.nix @@ -0,0 +1,26 @@ +{ + pkgs, + lib, + config, + ... +}: let + cfg = config.gaming.proton_ge; +in { + options.gaming.proton_ge = { + enable = lib.mkEnableOption "enable proton ge"; + }; + + + # this is an imperitive install after rebuild run `protonup` + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + protonup + ]; + + # tells `protonup` what path to use + environment.sessionVariables = { + STEAM_EXTRA_COMPACT_TOOLS_PATHS = + "/home/blake/.steam/root/compatibilitytools.d"; + }; + }; +} diff --git a/modules/desktop/gaming/steam/default.nix b/modules/desktop/gaming/steam/default.nix new file mode 100644 index 0000000..47fb99d --- /dev/null +++ b/modules/desktop/gaming/steam/default.nix @@ -0,0 +1,20 @@ +{ + pkgs, + lib, + config, + ... +}: let + cfg = config.gaming.steam; +in { + options.gaming.steam = { + enable = lib.mkEnableOption "enable steam"; + }; + + config = lib.mkIf cfg.enable { + programs.steam = { + enable = true; + # requires setting launch option `gamescope %command%` + gamescopeSession.enable = true; + }; + }; +}