September on Linux, part 1: installing CachyOS on my gaming PC
I decided to spend September giving Linux a serious try on my gaming PC. I’ve been using macOS for around 21 years, and although I never stopped running Linux on servers (heck, a Kubernetes cluster powers my little homelab!), the last time it was my main desktop operating system was back in high school.
Back then I didn’t have money for Apple hardware, so I spent a lot of time distro-hopping (as time was not exactly a rare resource for high-schoolers). Gentoo kept me occupied the longest – I remember leaving my 2.4 GHz Pentium 4 compiling OpenOffice.org overnight many times, because surely compiling everything from scratch would make it measurably faster – a fact I have curiously never measured 😬
Eventually I moved to macOS for pretty much everything. More recently, after building a Windows PC almost three years ago, Mac remained my work machine due to its unique combination of a polished user interface hiding the powers of Unix in the background, while Windows became the heart of my gaming machine. Linux continued running my servers, where I could mostly ignore whatever was happening on the desktop – meaning I missed the PulseAudio arguments, the Wayland arguments, the Rust arguments, the systemd arguments, and quite a lot of the things I now need to understand to configure my own computer.
I wanted to give Linux a try again – everywhere you look on the Internet nowadays, people (hello Linus! 👋) are trying to convince you that 2026 is actually the year of Linux on desktop (and not just a meme), and that even gaming is not a show-stopper anymore (hello Valve! 👋). And I’m apparently an easily influenced individual, so the idea crystallised in my head that my work would stay on the Mac (for now, at least), and Windows would remain installed as a backup while I find out whether my rather particular gaming setup could work on Linux. These articles that I’ll surely not abandon halfway through are my brief notes from doing just that, with enough of the configuration included that I should be able to repeat it when I inevitably forget how it worked, and one could maybe even reasonably follow in my footsteps, if our tastes align.
🧳 What I wanted to bring across
My gaming PC has a Ryzen 7 5800X, 32 GB of RAM, an RX 6800 XT and an ASRock B550 Pro4 motherboard. My main display is an ultrawide 34-inch Alienware OLED at 3440×1440, with a cheapo LG display to its left. Windows is currently installed on a nearly full 1 TB Samsung 980 PRO.
Most of my requirements were things I already had elsewhere – the goal is to bend Linux to my needs, not vice versa. I wanted my Apple-style Czech QWERTY layout (which I previously ported to Windows, somewhat painfully[1]), including the Option-layer punctuation (and typography goodies), and Japanese input that behaved like the Mac’s, with the Shift key dropping me down to direct カタカナ input. I wanted to mount my NAS at a normal filesystem path, use my self-hosted services with their private CA, and keep using all the buttons on my Logitech G600. I already used AeroSpace on macOS as a tiling window and workspace manager, so lettered workspaces and familiar shortcuts were on the list too (just with the Cmd key now being freed from Apple’s dominion, so let’s use that to manage windows and workspaces – surely I can get at least used to that change 🤞).
The longest part of the list of my requirements belonged to Final Fantasy XIV. My Windows installation had Dalamud plugins (don’t tell Yoshida! 🤫), ReShade and GPosingway, overlays, text-to-speech callouts, automatic backups of configuration directly to NAS and a custom login script because I’m entirely too lazy to provide the two-factor TOTP code anytime I want to play the gameconsume electricity by idling at our Free Company house. Getting vanilla XIV running on Linux is apparently a mostly solved problem; but could my overly convoluted setup survive the migration? 🧐
🐧 Choosing CachyOS and Hyprland
Since gaming would be the primary purpose of the system, I was choosing between Bazzite, Nobara and CachyOS. I settled on CachyOS, an Arch-based distribution with its own optimised packages (a tiny callback to my Gentoo days of optimisation?) and kernel work, plus an installer that could set up a big chunk of the desktop I wanted.
What is a desktop I would want, you ask? Historically, I’ve always been a fan of the KDE philosophy and design (and I snarked at the lowly GNOME peasants, of course), but going full KDE would be too safe a choice. No, if I’m going to spend an entire month experimenting with the unknown, let’s crank the unknown to eleven – let’s go super-minimalistic with Hyprland and Noctalia.
Hyprland manages the windows and displays. Noctalia provides the top panel (macOS-style! Or in my case, like the simple-bar that’s as wonderfully useful as it is eye-catching, that I’ve been using for months now), application launcher (like Raycast – not quite as powerful but perhaps sufficient for now), notifications and other desktop controls. CachyOS supplies that combination straight in the installer, so I could start using it without learning how to assemble everything myself. Whenever I would need a desktop application, I’d reach for a KDE/Qt app – obviously.
🔍 Finding somewhere to put another SSD
I bought a Samsung 990 PRO for Linux so I wouldn’t have to repartition the Windows SSD (ignoring the fact that I don’t even realistically have any significant free space left on my NTFS partition 🫣). The fast onboard M.2 slot was already occupied, and the spare storage M.2 slot on the B550 Pro4 only offered PCIe 3.0 ×2. The second full-length PCIe slot, labelled PCIE3, offered PCIe 3.0 ×4. An M.2 adapter there would therefore give the new drive more bandwidth than the spare onboard slot, so I also bought this adapter.
Physical clearance was a separate problem. Because at the time of planning this entire ordeal, I was vacationing in the Czech Republic, halfway across the world from my PC, I ended up using a stock photograph of the motherboard and moving pieces of it around in an image editor to work out whether the card would fit alongside the GPU (how very scientific of me, I know 👨🔬). The plan was to use the adapter for the experiment, then consider moving the Linux drive to the fast onboard slot if I decided to keep using it. I hadn’t committed to that swap yet because unplugging and re-plugging my GPU (which hides the fast M.2 slot) is not something I’m particularly looking forward to 😖
The next day after coming back to Japan, on September 1, I fitted the drive and adapter, cleaned some dust out of the PC with the help of my older son ❤️, and got a black screen with red CPU and DRAM diagnostic lights mocking me when I tried to boot the computer again. Removing the adapter didn’t help; panicking internally somehow didn’t either. Booting with one RAM stick, however, did; after reseating the other stick, the machine had all 32 GB again, and Windows started normally again.
I don’t know exactly what disturbed the RAM connection. Reseating it fixed the failure, and both Windows and Samsung Magician could then see the 990 PRO. Magician also reported the firmware as current. This took care of the first installation problem before I had actually installed Linux.
🪟 Checking Windows before installing
One thing I was also worried about (thank you, numerous horror stories on YouTube, and sorry that happened to you) was tripping BitLocker by disabling Secure Boot and thus getting locked out of my Windows drive forever, so before doing anything, I checked encryption and Secure Boot status from an elevated PowerShell session:
manage-bde -status
Confirm-SecureBootUEFI
On this PC, the Windows volume reported fully decrypted, 0% encrypted, with BitLocker protection off and no key protectors. The Secure Boot command returned False. I therefore didn’t have a BitLocker recovery problem to solve, and Secure Boot was already off – phew! 😌 Now the only thing that could ruin my day would be selecting the wrong drive to erase in CachyOS’ installer… (spoiler warning? (No! Not even I am that stupid 🤣))
The installation choices I used were the 990 PRO as the Linux disk, Hyprland for the desktop and Limine for the bootloader – not a bootloader I used before, but the idea of smooth integration of Btrfs’ snapshots into the bootloader seemed enticing enough – being able to boot into an older version of the system anytime I mess something upan update goes wrong? Sign me up! CachyOS was installed by the end of the day, and Limine could boot both CachyOS and the existing Windows installation[2].
🪄 First useful changes
Once I first logged into my brand new system, I noticed that two things weren’t preserved from how I configured them in the installer: my intended monitor arrangement and my chosen keyboard layout. But still, it was enough for the first day to feel accomplished.
On September 3, I put the LG to the left of the Alienware in Hyprland’s configuration. Saving the file immediately rearranged the desktop, which I enjoyed considerably more than I expected to enjoy moving a monitor in a configuration file 🎉
For checking display names and supported modes, Hyprland provides the hyprctl monitors command, which is useful to confirm monitor names (such as DP-1 or DP-3) and supported resolutions and refresh rates. Configuring the placement afterwards is as simple as:
hl.monitor({
output = "DP-1",
mode = "[email protected]",
position = "0x0",
scale = 1,
vrr = 2,
supports_hdr = 1,
})
hl.monitor({
output = "DP-3",
mode = "[email protected]",
position = "-1920x-10",
scale = 1,
vrr = 0,
supports_hdr = -1,
})
Please don’t ask me what’s up with the funky refresh rate numbers
I installed Neovim (pacman -S neovim) with LazyVim, which somehow picked up the Catppuccin appearance I had selected in Noctalia 🪄 I also started changing Hyprland’s keyboard shortcuts slightly – not the major rework I had in mind, but just something to keep me a bit more sane by mostly removing Super+letter key combinations from launching applications – I wanted those keys to take me to an existing named workspace instead – I’ll share my entire Hyprland configuration in a future article.
The keyboard layout issue was more urgent. Choosing an Czech Macintosh layout hadn’t given me the typing behaviour I expected (it was basically a Czech QWERTY layout with like a single key difference – definitely not a layout you’d find on any Apple computer nowadays), and the file I possibly needed for my replacement layout was safely stored on my NAS. So before I could finish setting up Czech punctuation, I needed an SMB mount. That’s where the next article starts.
-
It was not necessarily the creation of the Windows port of Apple’s Czech QWERTY keyboard layout – that step was actually rather easy with Microsoft Keyboard Layout Creator; it was the fact that every so often, seemingly randomly, Windows decided that my layout is not “good enough”, and automatically added Czech (QWERTY) and English (US) layouts for me, AUTOMATICALLY, without me asking for any such disservice. #justMicrosoftThings.
-
One thing I’m not sure about is why the PC actually boots directly to Limine now, considering I don’t remember changing the boot order in UEFI; and Limine should have no way of fitting on Windows’ boot EFI partition. I suspect something or someone must have changed the boot order in UEFI, but I’m entirely too lazy to confirm that 🦥