CrOS/home/crow/common/optional/gaming/default.nix
2025-11-17 15:22:11 -05:00

47 lines
1.1 KiB
Nix

# This module just provides a customized .desktop file with gamescope args dynamically created based on the
# host's monitors configuration
{
pkgs,
config,
lib,
...
}:
let
monitor = lib.head (lib.filter (m: m.primary) config.monitors);
steam-session =
let
gamescope = lib.concatStringsSep " " [
(lib.getExe pkgs.gamescope)
"--output-width ${toString monitor.width}"
"--output-height ${toString monitor.height}"
"--framerate-limit ${toString monitor.refreshRate}"
"--prefer-output ${monitor.name}"
"--adaptive-sync"
"--expose-wayland"
"--steam"
"--hdr-enabled"
];
steam = lib.concatStringsSep " " [
"steam"
#"steam://open/bigpicture"
];
in
pkgs.writeTextDir "share/applications/steam-session.desktop" ''
[Desktop Entry]
Name=Steam Session
Exec=${gamescope} -- ${steam}
Icon=steam
Type=Application
'';
in
{
home.packages = [
steam-session
#pkgs.vintagestory
pkgs.unstable.mudlet
pkgs.r2modman
pkgs.prismlauncher
pkgs.heroic
];
}