← Writing
September 6, 2026·4 min read

The GPU Was Never the Hard Part

Three Linux distros, one passed-through RTX A4000, and a week of failures that all trace back to the same wrong assumption: that someone would be sitting in front of the machine.

I have a Dell R6415 in the closet that mostly runs Ollama. It also has an RTX A4000 sitting mostly idle, so this week I tried to turn it into a cloud gaming console — a VM with the GPU passed through via Proxmox, streamed to the TVs over Moonlight and Sunshine, no local box under the TV at all. The GPU passthrough worked on the first try. Getting an operating system to cooperate with that setup took three attempts and the better part of a week.

First attempt was CachyOS, an Arch derivative. Install went fine once I worked around the console quirks — Proxmox's VNC console couldn't type capital letters reliably, so I had to serve my SSH key off a tiny local HTTP server instead of pasting it in. NVIDIA drivers, Steam, and Sunshine all installed clean. Then Moonlight said the host was offline. I spent close to an hour convinced it was a VLAN problem — the TV sits on an IoT VLAN behind a UniFi firewall rule, and "offline" screamed blocked traffic. I checked zone assignments, rule ordering, auto-allow-return-traffic settings, everything looked correct on paper. Turned out the traffic was arriving fine the whole time; I'd just grepped Sunshine's logs at the wrong verbosity and missed the successful connections. The real bug was one layer up: Sunshine's screen capture had failed over from KMS to XDG portal mode, which requires someone to physically click an "Allow screen sharing" permission dialog on the actual display. Nobody was there to click it. Once I approved it manually, streaming worked. Then Steam Big Picture turned out to be a D-pad-navigation interface that doesn't reliably accept mouse clicks at all, so installing a game meant driving it with a keyboard-emulation tool instead.

That's where CachyOS earned its retirement — not because it broke, but because every fix required a human standing at the console, which defeats the entire point of a headless gaming box.

Second attempt: Bazzite, SteamOS's more NVIDIA-friendly cousin. Installer stalled at a stage that looked identical to a hang but turned out to be real disk I/O — I learned to check actual CPU load instead of trusting the spinner. Got it fully installed, rebooted into Steam's console UI, and hit a wall Bazzite puts up on purpose: "Nvidia GPU support in Steam Gaming Mode is available as a beta with known issues that cannot be fixed by Bazzite." Not a bug. A warning label. I pulled the GPU passthrough to test something unrelated and the VM wouldn't boot at all afterward — a MokManager firmware error that had nothing to do with what I was testing and everything to do with removing a device the bootloader had quietly keyed off of.

Third attempt, out of options that ship with real driver support: SteamOS itself, which turns out to ship zero NVIDIA driver support by design — it's built for AMD hardware, nouveau-only, and crashed exactly as advertised. Then Nobara, whose Steam-HTPC edition finally worked, after its own detour: the installer never created a real user account, because that edition ships a passwordless kiosk auth profile built around a hardcoded account name I didn't have. Switching to Nobara's standard auth profile fixed it. One more display bug after that — the desktop was rendering across three virtual outputs at once, and Sunshine was faithfully streaming the empty Proxmox console instead of the real GPU output — and then it actually worked.

None of these distros were broken software. Every one of them made a reasonable design choice for its actual target user: someone with a keyboard, a mouse, and a monitor sitting in front of the machine, clicking through a wizard once. I was building the opposite thing — a box nobody would ever sit in front of, administered entirely over SSH and a remote console — and every one of those reasonable choices became a specific, unrelated-looking failure. The permission dialog, the D-pad UI, the beta warning, the kiosk account: none of them were about gaming or GPUs at all. They were all the same assumption showing up in different clothes. If you're building for a use case a piece of software wasn't designed for, the friction you hit won't look like one problem — it'll look like five, and you'll waste real time debugging each one as if it were unrelated to the others.

It's running now. Moonlight connects, Steam launches on boot, and I haven't had to touch a monitor in two days.