Spent the last few weeks reworking the home lab, and this round was getting my gaming server fully set up — Steam library, storage layout, and streaming to the living room TV.
The hardware
Base machine is an ASRock Z790 Pro RS/D4 with an Intel i5-12600KF, a Radeon RX 6750 XT (12GB), and 16GB of DDR4. Storage-wise: three 1TB NVMe drives and a 1.82TB Seagate 7200rpm hard drive. This box is slated for a bigger upgrade down the line as part of the August platform swap, but for now its job is straightforward: run my Steam library and stream it to the TV with zero hassle.
Picking the OS
Linux Mint (Cinnamon) was the easy call — full desktop environment, solid AMD driver support out of the box, and I already run it on my other machines, so the muscle memory carries over.
Storage layout
This was the part I spent the most time thinking through. Three NVMe drives and one HDD, and I wanted fast load times without paying for all-NVMe capacity I don’t need. Here’s what I landed on:
- Drive 1 (NVMe): Full OS install
- Drive 2 (NVMe): Split into two pieces — a 64GB partition dedicated to disk caching, and the remaining ~868GB as a straight ext4 partition for games I play often
- Drive 3 (NVMe): A full second Steam library, also for active titles
- The HDD: Bulk storage for the back-catalog — games I’ll play occasionally but don’t need blazing load times for
The piece that ties it together is bcache. I combined that 64GB NVMe partition with the HDD into a single cached block device — the HDD provides the capacity, the NVMe partition acts as a speed buffer in front of it, and over time the games I actually play from that drive get faster as the cache warms up. Best of both worlds without needing four NVMe drives.
Everything’s mounted via UUID in /etc/fstab so it all comes back correctly on reboot, no matter what order the drives get detected in.
Steam setup
Once the drives were formatted and mounted, it was just installing Steam, adding each partition as a library folder, and letting it distribute games across them. Also grabbed GE-Proton 11.1 through ProtonUp-Qt and forced it as the default compatibility tool — it handles edge cases stock Proton chokes on.
Streaming: Sunshine + Moonlight
To get the picture from this box to the living room TV, I set up Sunshine as the host and Moonlight as the client. Sunshine handles hardware-accelerated encoding straight from the GPU, and it shipped with sensible defaults already configured — a full desktop stream and a dedicated Steam Big Picture mode, ready to go with zero extra setup.
Pairing was painless: install Moonlight on the client, it finds the host on the network, punch in a PIN, done. First test on the local network came back at zero perceptible latency for both desktop streaming and Big Picture mode — exactly what you want for a couch setup.
Remote access
Since I already run Tailscale across my other machines, I added this one to the same tailnet too — so I can stream to it from outside the house, not just on the home network.
The one snag
The only real hiccup was the TV itself — forcing 1920x1080 kept pushing the picture off the edges of the screen. Classic overscan, a leftover from analog broadcast days where TVs zoom in slightly on the incoming signal. Digging into the TV’s picture settings and switching to a “Just Scan” / 1:1 pixel mapping mode fixed it instantly — no Linux-side workaround needed.
What’s next
Games are downloading now. This box’s job is settled: living-room streaming server, full stop — no bigger platform swap planned for it. Exactly what I wanted: a quiet, fast, no-fuss gaming server that also happens to stream the whole Steam library to the big screen.
