fix(console): make a failed Steam session diagnosable, add shortcut tooling
Autologin into the gamescope Steam session does not take on the real hardware; the television lands on ReGreet instead. The config side is correct -- initial_session is present in the generated greetd.toml and services.greetd.restart evaluates to false -- so the likely cause is the session starting and then dying, which greetd answers by falling through to default_session. greetd hands a session the VT for its standard streams, so whatever the session prints on its way down is erased as soon as the greeter repaints. Run the launcher under systemd-cat so the reason survives in the journal under the steam-session identifier. Steam's non-Steam-game Browse dialog and its library-folder picker both go through the XDG portal FileChooser interface and do not open here (ValveSoftware/steam-for-linux#9447, #10415). Add steamtinkerlaunch, which writes shortcuts.vdf without the dialog, and document library_folder_add as the equivalent route for the library folder. Docs also catch up with the host's actual state: hardware-configuration .nix is a real scan now, standalone pcsx2 is installed, and the untested claims become the list of open problems. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
db0867ecc7
commit
f35cc58bbb
@@ -61,6 +61,14 @@ let
|
||||
"clonehero/backgrounds"
|
||||
];
|
||||
|
||||
# greetd gives a session the VT for stdio, so a failed Steam session leaves no
|
||||
# evidence once the greeter takes the VT back. Log to the journal instead:
|
||||
# `journalctl -b -t steam-session`.
|
||||
steamSession = pkgs.writeShellScript "steam-session" ''
|
||||
exec ${pkgs.systemd}/bin/systemd-cat --identifier=steam-session \
|
||||
/run/current-system/sw/bin/steam-gamescope
|
||||
'';
|
||||
|
||||
# RetroArch and the cores this machine is expected to run. The wrapper already
|
||||
# points RetroArch at the packaged assets, core info and joypad autoconfig
|
||||
# profiles; `settings` here is merged on top of those.
|
||||
@@ -178,13 +186,11 @@ in
|
||||
# ask for it; Steam's Proton builds and most native titles do.
|
||||
programs.gamemode.enable = true;
|
||||
|
||||
# Autologin into the Steam session. The launcher is not exposed as a package
|
||||
# by the steam module -- it is built inside it and added to
|
||||
# environment.systemPackages -- so reference it through the system profile.
|
||||
# greetd's `restart` option defaults to false once initial_session is set,
|
||||
# which is what stops a logout from looping straight back into autologin.
|
||||
# Autologin into the Steam session. greetd's `restart` option defaults to
|
||||
# false once initial_session is set, which is what stops a logout from looping
|
||||
# straight back into autologin.
|
||||
services.greetd.settings.initial_session = {
|
||||
command = "/run/current-system/sw/bin/steam-gamescope";
|
||||
command = "${steamSession}";
|
||||
user = tvUser;
|
||||
};
|
||||
|
||||
@@ -242,6 +248,10 @@ in
|
||||
pkgs.clonehero
|
||||
pkgs.pcsx2
|
||||
pkgs.dualsensectl # DualSense LED/battery/mic control from the shell
|
||||
# Writes shortcuts.vdf from the shell. Steam's own "Add a Non-Steam Game"
|
||||
# dialog depends on a working portal file picker and frequently does not
|
||||
# open; see docs/hosts/console.md.
|
||||
pkgs.steamtinkerlaunch
|
||||
pkgs.mangohud # FPS/frametime overlay; use `mangohud %command%` in Steam
|
||||
pkgs.vulkan-tools # vulkaninfo, for checking the 32/64-bit ICDs Proton needs
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user