feat: gaming - docs, persistent data, add lutris, heroic & star rail

This commit is contained in:
Ryan Yin
2025-09-14 16:17:28 +08:00
parent 1b663c757b
commit 918403b098
7 changed files with 234 additions and 56 deletions

View File

@@ -0,0 +1,46 @@
{ pkgs, osConfig, ... }:
{
# ==========================================================================
# Other Optimizations
# Usage:
# Lutris - enable advanced options, go to the System options -> Command prefix, add: `mangohud`
# Steam - add this as a launch option: `mangohud %command%` / `gamemoderun %command%`
# ==========================================================================
home.packages = with pkgs; [
# https://github.com/flightlessmango/MangoHud
# a simple overlay program for monitoring FPS, temperature, CPU and GPU load, and more.
mangohud
# a game launcher - great for epic games and gog games
(heroic.override {
extraPkgs = pkgs: [
pkgs.gamescope
];
})
# GUI for installing custom Proton versions like GE_Proton
protonplus
winetricks
# https://github.com/Open-Wine-Components/umu-launcher
# a unified launcher for Windows games on Linux
umu-launcher
];
# a GUI game launcher for Steam/GoG/Epic
programs.lutris = {
enable = true;
defaultWinePackage = pkgs.proton-ge-bin;
steamPackage = osConfig.programs.steam.package;
protonPackages = [ pkgs.proton-ge-bin ];
winePackages = with pkgs; [
wineWow64Packages.full
wineWowPackages.stagingFull
];
extraPackages = with pkgs; [
winetricks
gamescope
gamemode
mangohud
umu-launcher
];
};
}

View File

@@ -13,7 +13,7 @@ niri: {
# Get all the window's information via:
# niri msg windows
# --------------- Terminal ---------------
# --------------- 1Terminal ---------------
(plain "window-rule" [
(leaf "match" { app-id = "foot"; })
(leaf "open-on-workspace" "1terminal")
@@ -32,7 +32,7 @@ niri: {
(leaf "open-maximized" true)
])
# --------------- Browser ---------------
# --------------- 2Browser ---------------
(plain "window-rule" [
(leaf "match" { app-id = "firefox"; })
@@ -50,7 +50,7 @@ niri: {
(leaf "open-maximized" true)
])
# --------------- Chatting ---------------
# --------------- 3Chatting ---------------
(plain "window-rule" [
(leaf "match" { app-id = "org.telegram.desktop"; })
(leaf "open-on-workspace" "3chat")
@@ -64,15 +64,56 @@ niri: {
(leaf "open-on-workspace" "3chat")
])
# --------------- Networking ---------------
# --------------- 4Gaming ---------------
(plain "window-rule" [
(leaf "match" { app-id = "steam"; })
(leaf "open-on-workspace" "4gaming")
])
(plain "window-rule" [
(leaf "match" { app-id = "steam_app_default"; })
(leaf "open-on-workspace" "4gaming")
])
(plain "window-rule" [
(leaf "match" { app-id = "heroic"; })
(leaf "open-on-workspace" "4gaming")
])
(plain "window-rule" [
(leaf "match" { app-id = "net.lutris.Lutris"; })
(leaf "open-on-workspace" "4gaming")
])
(plain "window-rule" [
(leaf "match" { app-id = "com.vysp3r.ProtonPlus"; })
(leaf "open-on-workspace" "4gaming")
])
(plain "window-rule" [
# Run anime games on Linux
(leaf "match" { app-id = "^moe.launcher"; })
(leaf "open-on-workspace" "4gaming")
])
(plain "window-rule" [
# All *.exe (Windows APPs)
(leaf "match" { app-id = "\.exe$"; })
(leaf "open-on-workspace" "4gaming")
])
# --------------- 6File ---------------
(plain "window-rule" [
(leaf "match" { app-id = "com.github.johnfactotum.Foliate"; })
(leaf "open-on-workspace" "6file")
])
(plain "window-rule" [
(leaf "match" { app-id = "thunar"; })
(leaf "open-on-workspace" "6file")
])
# --------------- 0Other ---------------
(plain "window-rule" [
(leaf "match" { app-id = "clash-verge"; })
(leaf "open-on-workspace" "0other")
])
# --------------- Meeting ---------------
(plain "window-rule" [
(leaf "match" { app-id = "Zoom Workplace"; })
(leaf "open-on-workspace" "0other")