5 Commits
Author SHA1 Message Date
Emma ThorpeandClaude Opus 5 b0607d23cd docs(console): separate the two Steam picker faults
CI / flake (push) Skipped
CI / flake (pull_request) Successful in 4m47s
The library-folder picker does open and Steam does create the directory
structure; the library simply never appears in the Storage UI. That rules
out the portal FileChooser for this symptom and points at the
write-and-execute probe Steam runs before recording the folder in
libraryfolders.vdf (ValveSoftware/steam-for-linux#8450). Document how to
reproduce that probe inside Steam's FHS sandbox with steam-run, and keep
library_folder_add as the route that reports a reason.

The Add a Non-Steam Game dialog is a separate symptom and keeps the
portal explanation.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 10:27:36 +01:00
Emma ThorpeandClaude Opus 5 61a57f41e6 feat(sway): 4K scale 2, natural mouse scroll, idle inhibit for emulators
CI / flake (push) Skipped
Three unrelated desktop-side fixes, all in home/sway.nix.

Sway cannot key an output rule on resolution, so scale 2 on 4K displays
is applied by a user service that runs once at session start and again on
every output event, which is what makes it survive a display being
switched off and on. The scale guard in the jq filter stops the
subscription feeding itself. kanshi still owns mode and position; no
profile here sets a scale, so the two do not fight.

natural_scroll on type:pointer gives mice the same scroll direction as
the touchpads already had.

PCSX2 and Dolphin default to borderless-windowed rather than compositor
fullscreen, so the existing inhibit_idle fullscreen rules never matched
and swaylock engaged mid-game. Inhibit on focus for the emulators
instead. The Steam session is unaffected either way: swayidle is wanted
by graphical-session.target and conditional on WAYLAND_DISPLAY, and the
gamescope session provides neither.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 10:19:30 +01:00
Emma ThorpeandClaude Opus 5 0e10083ea4 feat(console): add the standalone Dolphin emulator
The libretro dolphin core lags upstream on compatibility in the same way
LRPS2 does, so install pkgs.dolphin-emu next to pkgs.pcsx2 and run
GameCube and Wii titles through it. The cores stay for the sake of a
single frontend and a shared save/state layout.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 10:08:56 +01:00
Emma ThorpeandClaude Opus 5 f35cc58bbb 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>
2026-09-01 10:04:26 +01:00
Emma ThorpeandClaude Opus 5 db0867ecc7 feat(sway): install wlr-randr on all Sway hosts
wlr-randr prints the make/model/serial criteria kanshi profiles are keyed
on and lets a mode be tried before it is committed to config. Nothing
else in the Sway package set covers output query or adjustment.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 10:04:16 +01:00
2 changed files with 50 additions and 3 deletions
+50
View File
@@ -0,0 +1,50 @@
{
"permissions": {
"allow": [
"Read(//tmp/claude/**)",
"WebFetch(domain:github.com)",
"WebFetch(domain:codeload.github.com)",
"WebFetch(domain:channels.nixos.org)",
"WebFetch(domain:raw.githubusercontent.com)",
"Read(//mnt/c/Users/**)",
"Bash(wsl.exe --version)",
"Bash(ps -eo pid,pcpu,comm)",
"Bash(powershell.exe -NoProfile -Command \"Get-Process vmmemWSL,vmmem,wslservice,msrdc -ErrorAction SilentlyContinue | Select-Object Name,CPU,WorkingSet | Format-Table -AutoSize\")",
"Read(//nix/store/**)",
"Bash(zsh -ic 'bindkey | grep -Ei \"substring|up-line|down-line|\\\\^\\\\[\\\\[A|\\\\^\\\\[OA|\\\\^\\\\[\\\\[B|\\\\^\\\\[OB\"; echo \"--- widgets exist? ---\"; zle -la 2>/dev/null | grep substring || echo \"\\(zle -la only works interactively\\)\"')",
"Read(//home/emmathorpe/.vscode-server/**)",
"Bash(python3 *)",
"Bash(command -v gh)",
"Bash(gh auth *)",
"Bash(tea login *)",
"Read(//home/emmathorpe/.ssh/**)",
"Read(//tmp/**)",
"Bash(/nix/store/kjnr6lh4r8vcf9wr38zylgj1s5a9hl6q-probe2/bin/bat --paging=never -n f1.txt)",
"Bash(/nix/store/kjnr6lh4r8vcf9wr38zylgj1s5a9hl6q-probe2/bin/bat --paging=never -A f1.txt)",
"Bash(timeout 25 curl -sS -o /dev/null -w \"%{http_code}\\\\n\" https://docs.lyrapup.pet/)",
"Bash(timeout 25 curl -sS -o /dev/null -w \"%{http_code}\\\\n\" https://docs.lyrapup.pet/nixfiles/)",
"Bash(timeout 40 tea pr 96 --login code.emmathe.dev --repo lyrathorpe/nixfiles)",
"Bash(sort -t' ' -k3)",
"Bash(tea pr *)",
"Bash(tea repo *)",
"Bash(command -v wsl.exe)",
"Bash(wsl.exe -l -q)",
"Bash(wsl.exe -u root -d NixOS -- id)",
"Bash(docker build *)",
"WebSearch",
"WebFetch(domain:www.last.fm)",
"WebFetch(domain:wiki.servarr.com)",
"Bash(docker run *)",
"Bash(tea repos *)",
"Bash(curl -s -H 'Authorization: token __CMDSUB_OUTPUT__' https://code.emmathe.dev/api/v1/repos/lyrathorpe/music-mirror)",
"Bash(curl -s -H 'Authorization: token __TRACKED_VAR__' https://code.emmathe.dev/api/v1/user)",
"Bash(curl -s -H 'Authorization: token __CMDSUB_OUTPUT__' https://code.emmathe.dev/api/v1/repos/lyrathorpe/music-curator/actions/tasks?limit=3)",
"Read(//home/emmathorpe/.config/tea/**)",
"Bash(curl -s -H 'Authorization: token __CMDSUB_OUTPUT__' https://code.emmathe.dev/api/v1/repos/lyrathorpe/music-curator/actions/secrets)",
"Bash(curl -s -H 'Authorization: token __CMDSUB_OUTPUT__' https://code.emmathe.dev/api/v1/repos/lyrathorpe/music-curator/actions/jobs/2629/logs)",
"Bash(gh search *)"
]
},
"enabledMcpjsonServers": ["jenkins-uce", "jenkins-stf"],
"disabledMcpjsonServers": ["grafana"]
}
-3
View File
@@ -5,6 +5,3 @@ modules/firmware/*
# Local scratch project, not part of this flake.
tf-inspect/
# Per-machine Claude Code settings; not shared configuration.
.claude/