Back to Journal
March 12, 20264 min read

Leaving Windows Behind: My Move to Arch-CachyOS

linuxarchcachyoswindowsgamingvriacopen-source

Why

I've been meaning to do this for years. Windows was fine, until it wasn't. Between the telemetry, the forced updates, the creeping enshittification of the desktop experience, and the fact that every security tool I actually care about runs better on Linux... it was time.

The final push was realizing I'd spent more time fighting Windows than using it. Defender flagging my own scripts. Updates rebooting mid-flight in DCS. The OS actively working against me. Done.

Why CachyOS

Arch, but with sane defaults out of the box. CachyOS gives you:

  • A performance-optimized kernel (BORE scheduler, x86-64-v3/v4 builds)
  • A proper installer that doesn't make you feel like you're defusing a bomb
  • Pacman + AUR, the best package ecosystem in Linux

I wanted Arch's rolling release model and AUR access without spending a full weekend on the initial install. CachyOS hit that sweet spot.

The Hardware

This isn't a lightweight laptop setup. This is a full gaming and flight simulation workstation:

  • CPU: AMD Ryzen 9 9800X3D
  • GPU: NVIDIA RTX 5090
  • RAM: 64 GB
  • Audio: RODECaster Duo (USB), Shure SM7B (XLR)
  • Peripherals: VKB Complete HOTAS Setup, TrackIR 5, Meta Quest 3, Elgato Stream Deck

All of it works on Linux.

What's Running

Nine subsystems, all working:

LUKS-Encrypted Storage

Full-disk encryption with btrfs and auto-unlock for secondary drives. Set it up once and forget about it. docs/01-storage.md covers the setup.

Steam + Proton

Proton just works at this point. Install Steam from pacman, enable Proton for all titles, play games. The handful of titles that need specific Proton versions or launch options are documented in the repo.

Battle.net via Lutris

Five Blizzard titles running through Lutris. The setup is a bit more involved than Steam since you need the right Wine runner and DXVK version, but once configured, it's stable. Guide at docs/03-battlenet.md.

DCS World

This was the one I was most worried about. A standalone DCS World install running on Linux, with full VR support and TrackIR integration. It works. Missions, multiplayer, all of it. docs/04-dcs-world.md is the longest guide in the repo for a reason.

RODECaster Duo Audio

PipeWire routing for a USB audio interface with multiple channels. The RODECaster Duo shows up as a multi-channel device and PipeWire handles it cleanly. Custom routing config in configs/audio/.

ProtonVPN with WireGuard

VPN traffic runs in its own network namespace so it doesn't mess with game traffic or streaming. docs/06-vpn.md has the setup.

TrackIR 5 Head Tracking

TrackIR 5 works via LinuxTrack. The IR camera is recognized natively and LinuxTrackX-IR handles the rest. Covered in the DCS guide.

Wireless VR (Meta Quest 3)

WiVRn streams VR wirelessly to a Meta Quest 3 over Wi-Fi 6 with AV1 hardware encoding. Doesn't even need SteamVR, xrizer bridges OpenVR to OpenXR directly. Latency is solid, even for DCS. docs/07-vr.md has the details.

The IaC Approach

I'm treating this desktop like infrastructure. The repo is structured so you can read the docs, run the scripts, drop in the configs, and have a working system:

JavaScript
.
├── docs/           # 7 sequential guides (01-storage through 07-vr)
├── scripts/        # Idempotent setup scripts (safe to re-run)
│   └── lib/        # Shared bash libraries
└── configs/        # Template files (.example pattern)
    ├── audio/
    ├── gaming/
    ├── vpn/
    └── vr/

Scripts are idempotent, run them again and nothing breaks. Configs use a .example pattern with CHANGEME_* placeholders so you can fork the repo and fill in your own values without leaking anything sensitive.

The docs and scripts are numbered to match: docs/01-storage.md pairs with the storage setup script, and so on. Follow them in order and dependencies resolve naturally.

The Repo

It's public: github.com/defconxt/Arch-CachyOS

MIT licensed. If you're running similar hardware or trying to get DCS/VR working on Linux, it might save you some time.

Wrapping Up

The whole thing took about three days. Day one was mostly NVIDIA drivers, PipeWire routing, and Lutris. By day three I was playing DCS in VR. It's now my daily driver.