I Built My New Linux Gaming Desktop in 2021 with AMD (CPU+GPU) and GNU Guix
boilingsteam.com
boilingsteam.com
For work, it's a beast. For gaming, it's a beast. I love it.
I'm really happy to hear Steam's push to get all games working on Linux. I still dual-boot for those games that require Easy Anti Cheat, but for everything else linux has been incredible for both indie and AAA gaming.
My biggest gripes aren't all that major but there are a lot of Windows-specific tools for changing the colors inside the case for the various fans. I'm not a fan of the RGB-puke and like a solid color, but after a few tweaks and hacks it mostly works as I intend it to.
Drivers on Linux have always been ... non-ideal. I use the Fedora kmod drivers these days. It's held up nicely so far without any boot halts.
I just build a new rig and I didn't even consider Nvidia. AMD for me all the way. My only regret is that there's no `nvtop` equivalent for AMD.
RE: the article, I also built a 100% amd desktop (in 2020) for Linux. Wayland, sway, vaapi, pipewire, etc... all working without drama. I've considered posting about it somewhere, but just haven't had time.
I will definitely be purchasing AMD GPUs if I intend on running linux in the future. I know nvidia is working on supporting GBM (which is the sticking point for wayland support) but who knows when that will land.
SoT performs better on Linux for me but the online experience has a lot to be desired. Microphone doesn't work, anything Microsoft live is absent ... though playable.
I'd say that 9/10 games I try on Linux run at Windows performance if not better. YMMV
Drivers are better on windows, games are developped for windows and optimized for it so the vaste majority run better on Windows.
What does DLSS have to do with anything?
> Drivers are better on windows
[citation needed]
Anecdotally, I've had way more driver-related stability problems on Windows than I've had on Linux, at least within the last ~3 years.
> games are developped for windows and optimized for it so the vaste majority run better on Windows.
How games are developed is irrelevant; Mesa has different performance characteristics than the respective Windows drivers, and so performs better in a lot of cases due to lower overhead. Projects like DXVK can further improve performance by translating DirectX calls to Vulkan.
In any case, there are plenty of benchmarks online showing some games achieving higher FPS on Linux than on Windows. For a fairly extreme example, see this 3-year-old benchmark[0] showing Dota 2 on Linux wiping the floor with its Windows counterpart in 1080p. I have also personally tested this and noticed an improvement on Linux with certain games. (Granted, not very many, but this was also a few years ago, before some of the recent performance optimizations in Mesa, Wine, and related projects.)
Disclaimer: I'm not a subject expert, so can't go into detail about the how/why, but I also believe the benchmarks speak for themselves.
[0]: https://www.phoronix.com/scan.php?page=article&item=june-201...
That is if you use it directly with Linux APIs (Vulkan). I think Direct3D implementations on Linux (like Proton/DXVK/VKD3D) are still catching up to wrap the D3D API for it, but, that's out of NVIDIA's court.
https://www.phoronix.com/scan.php?page=news_item&px=Proton-6...
Word on the street is that the TPM 2.0 requirements for Windows 11 are, in part, to provide a common DRM platform for all Windows applications including games. Meaning that instead of custom DRM software like Denuvo, antipiracy measures will be implemented as common Windows APIs that take advantage of the TPM to provide secure attestation of genuine, nonpirated binaries. Remember Palladium? Yeah, it's that again, quietly implemented piecemeal beginning with Secure Boot.
Linux will have to implement this DRM down to the kernel level, or it will be simply locked out of many Windows games.
Forget it. Linux gaming is over. Proton for me has been busted enough to have spotty support from release to release anyway.
Minecraft: Let me introduce myself.
It's almost ironic that one of the most popular games ever made just so happens to perform its best on Linux.
One thing that I'd love to hear more on is what Guix gets you as a package manager and/or as a distro. I'm not really following how it differs from other, perhaps more traditional, package managers.
I've stuck it out on Arch, mainly for software availability in the AUR-- i.e. getting out of repo gaming utilities like greenwithenvy and the glorious eggroll proton fork without having to navigate flatpak/snap/etc. My last experience with Steam in a snap on Ubuntu was particularly bad: the application wasn't able to see the mounted drives where I was installing games, nor was it able to detect proton-ge-custom. I've heard the flatpak experience is better, but I haven't played with it at all.
Other than that, the approach taken by Guix and Nix to package management (or even fedora silverblue) is quite interesting, and I've been folowing it rather closely.
You get a more ansible-like (one config file for deployment) way of configuring your system, with rollbacks possible, it lets you have multiple software configurations exist simultaneously, that would be hard to achieve on other distributions (say, different environments with various versions of glibc). And portability+reproductibility of your environments.
You can still install non-free blobs on Guix, as described in the article.
I have previously had a test run on Guix on an old laptop with 1GB of ram, but it was clearly not powerful enough, as a guix pull could take 2-3 days (!) to complete. I guess I'll revisit it in a few months on a more powerful computer (an leave my old one with Alpine)
(Good on you for admitting commenting before reading, and extra points for then reading! I jest, but we are all guilty)
Declarative config = entire system config specified in a single config file - all config that is normally scattered across different /etc files and other locations now goes into a single config file (which instructs the system to write those /etc files on install, so /etc is still used but there’s a single source for configuring all of it). All packages and package config, boot loader, systemd/init system config, networking, etc configured in one file. And all config is declarative, not imperative - eg, you tell the system what you want in your build, and the system handles how. In NixOS this all just a big JSON file, and GUIX it’s a Scheme data structure.
Immutable builds = any time you make a configuration change, an entire new system is built with the change incorporated, and the system updated to point at the new build. Prior system builds are retained unchanged, and you can rollback to them any time if needed, if your new one is broken in some way not caught by compiler. Since current and prior builds are immutable, you can be sure that if a prior build worked reliably, it will continue to do so in case you need to rollback to it. In NixOS, builds are stored in /nix and soft-linked as needed to /bin, /usr/bin/, etc. Not sure about the equivalent on GUIX but that’s the idea.
Reproducible builds = you can take your system configuration file and use it to install an identical system build on other hardware. Everything will be the same except different hardware drivers for different hardware. Reinstalling the same configuration on the same system with no hardware changes will result in an identical system build with the same checksum.
One thing this does is make rapidly experimenting with different system configs much more possible. There’s no penalty to experimentation and failure, you can’t brick your system. If you do, just rollback to the prior working config, only takes a few seconds. You can iterate through many different config ideas, testing them all, and optimizing it to your needs.
I spent the past spring/summer migrating to NixOS. There’s a learning curve, but now that I’ve gotten through most of it, I could never go back to a normal linux. GUIX/NixOS is really the right way to architect an OS, so much farther out of the tarpit than anything else I’ve seen.
E.g. for me, the classically confined nodejs snap cannot be used to run a simple mocha test suite for our backend app, as it causes every test to time out. native install, no problem. The classically confined golang snap, installs a bunch of go tools as you'd expect, which are weirdly invisible to VSCode's Golang addons. You install Slack, click a link in a conversation, and it opens in a new Firefox window with all of your settings and addons disappeared; you have to delete an about:profiles profile in Firefox to make it use the existing configuration. App startup times can range from hundreds of milliseconds to 10+ seconds. Its just really not a good situation; some of these problems have solutions, but these are issues I've seen in, who knows, 19.04, 19.10, 20.04, 20.10, 21.04, we'll see if they fix it in 21.10 but I'm not holding my breath; we're talking years of decay.
Flatpak is definitely better. I've never ran into any compatibility or functionality issues. But, availability isn't as good; it seems like flatpak is geared more toward UI software; so, Discord, Slack, Spotify, Atom, Steam, even nvidia drivers, these I have installed through flatpak (Manjaro Gnome; so, Arch). You search flathub for Golang, or NodeJS, or other more dev/cli focused software, and it has nothing. So, I don't know if that's a cultural or technical thing, but it at least seems like flatpak has a focus, and excels within that focus.
Long time Arch user, and loved it, but now loving Guix. I'll be writing a followup article about how I set up everything in Guix, but as I mentioned here the only wrinkle on the software side was Steam via Flatpak. The beta version of Flatpak has solved the Proton issues, and it works great for me. Nonguix also has a Steam package, but we need to figure out some newer sandboxing that Valve has done to get newer Proton working.
Edit: And thanks!
- Universal package manager (replaces pip, cabal, npm, etc.)
- Declarative OS-config which makes deploys on new devices and servers a breeze
- Scheme declaration language (I prefer it to Nix-lang)
- Bootstrapable from 512 byte binary [1]
- I can build a package from source or download the binary
- Easily modify package source, deps, or compiler [2]
Cons:
- No official nonfree software [3]
- Smaller package set than Nix
- No KDE yet and old version of Gnome (it takes a lot of work to update)
Neutral:
- No systemd
- Works with GNU Hurd
- No MacOS or BSD support (yet)
[1] https://guix.gnu.org/en/blog/2020/guix-further-reduces-boots...
[2] https://guix.gnu.org/manual/en/html_node/Defining-Package-Va...
i was on this front for a long time, but now it feels like a lost cause.
What guix suggest for managing services/containers/chroots/cgroups?
1. Guix is written in Guile Scheme, and I love anything Lisp (a joy to work with)
2. System configuration in one file, no more remembering all the random /etc/ files or tweaks here and there, it is all together
3. Easy package transformations: update source, different git branch, add a patch
4. Rollbacks of both the system configuration and packages (something breaks, just go back)
5. Minor, but user installation of packages is nice, rarely need to reach for sudo now
6. Active and friendly community. The project has plenty of steam I'd say, but is small enough you can get involved and contribute. I've enjoyed writing some patches and packages.
7. Overall, just a different way of doing a distro and running a system (nix is similar). It has been fun to learn and use, getting me excited for Linux again.
FlatPak is just that, which is the pendulum swinging too far in the other direcition when you want the Steam Deck Steam OS too still be a coherent experience outside specific games.
The proof of that latter is simple: any fedora silverfish-like pure flatpak thing is still vapourware at this point, where Nix and Guix are production-ready, and very self-contained so one can be sure they aren't going to suddenly fail outside of your control.
I'm so tired of the glass-box-with LED fans aesthetic.
I bought an intel NUC ECE + a small form factor case. My PC is about the size of a 12 pack of beer and runs everything I throw at it.
That's nice, but what I really want is a rack in the closet or a small impact-resistant case with a handle to carry to LAN parties, whenever those exist again.
If you weren't keen on a handle, I'd recommend the SSUPD Meshlicious instead though.
One suggestion: Get an NVME with a heatsink. The difference in write/read speed is simply ridiculous. You can get 5-7Gb/sec speeds and it makes your environment ridiculously lightweight.
How did you find out about that? (first time I hear of this)
I have had some minor hiccups with steam, but they seem to have ironed out cs:go very well. A lot of the older games I've played through the years have open source versions that actually work better than their original counterpart.
ryzen 3900x, gtx 1080
* NixOS
* AMD 5700G (8c/16t)
* Nvidia GTX 760 (already owned)
* 32GB of old ram at 3400 MT/s (was really surprised my old Micron RAM could be overclocked by 1000MT/s but I'll take it).
* Old/existing 850W PSU
Having the integrated Vega 8 graphics lets me run sway at 2 4K screens pretty much without issue. It's pretty simple on NixOS to configure PRIME such where the 'nvidia-offload' command can run any program on the Nvidia card.
Sadly Vega 8 is only half the speed of my GTX 760... really wish AMD had included RDNA graphics like the Steamdeck. If I can grab a AMD GPU at a good price or Nvidia's GBM backend for Wayland support actually is released and works well I might upgrade to a 5700X or greater. It would be nice to have twice the L3 cache and even more threads when it comes to building some NixOS packages.
Currently temperature reporting on the 5700G is somewhat broken on Linux 5.14. I can see the integrated GPU temperature (I think) which should be close enough to the CPU die temp. Using sleep (suspend to RAM) on the 5700G has issues with Sway/Wayland.
System idles around ~50W which is about half that of my old 6700K system.
- lack of packages, I found myself constantly using the Nix package manager to get most of the packages - package download speed was considerably slower than Arch - the overall size of the community is small
1) steam deck will fix gaming on linux. 2) flatpak + snap will finally fix distributing software on linux.
When you fire and electron app from a sandbox, it's a hog riding a slug, then you try to open your files only to find yourself in a temp folder or chrooted to a config subdir.
It think those tech can bring a lot, but there is still work to do.
The fact that I have to give Remmina each of its permissions one at a time after installing with snap is silly.
We're close to the point where pretty much everything will be running in an year or so. It's remarkable how much can change in just a few years
And Linux Desktop is already here, it’s just not evenly distributed. Lots of innovators and early adopters, aka the cool kids, are now on Linux Desktop, including for gaming thanks to the above. It’s only a matter of time till the mainstream and late adopters follow.
There’s still a lot of work to be done for Linux to reach the hardware and software ubiquity of Windows or the UX polish of MacOS, but I increasingly see a more diverse set of talent, including design talent, lending their experience to the platform.
And as more disciplines work on the ecosystem, eventually demand for a more diverse set of software will follow.
Combine that with an initially lukewarm reception to Windows 11 so far, and growing privacy concerns on MacOS, and the incentives for an alternative platform are more widespread than they’ve been in a long time.
I know “the year of Linux desktops” has been a thing for forever, but it really does feel closer to the tipping point than ever.
Doesn’t mean it will definitely happen, but the momentum feels more with it than against it, IMO.
Having CUDA is just too important for work though, I really wish more ML libraries would add ROCm support. I understand it's now supported in Pytorch, but doing something like finetuning a Transformer model just isn't there yet (someone please, pleease tell me if I'm wrong)
The state of the closed source binaries required to get Nvidia GPU's running stable on Linux is a frustrating state of affairs.
Though iirc ROCm isn't supported on recent consume level cards which I find incredulous that wasn't a goal to have working from launch.
>There’s a lot more to say, which I’ll be writing up in some future articles to introduce everyone to Guix and breaking out of GNU-land for a gaming machine. (Note: please don’t discuss non-free software on any official Guix channels, like their mailing lists or IRC channel. They are friendly and will just politely remind you, but best to discuss somewhere like #nonguix on IRC.)
[0] https://github.com/podiki/dot.me/tree/master/guix/.config
I had done a manual install for other reasons anyway, but it should work just find from the installer, no extra steps. And as you can see in my config, in the end you just declare the file system and partitions/subvolumes. Since it is Guix, it is all that one file for the system. (You could use that file to write a live bootable USB image of that system, or initialize a new install directly with that file. Since I have some nonguix and additional channels it requires slightly more, but that is the idea of a system like Guix.)
Also, it's not obvious (to me anyways) how to properly measure performance should I want to measure the impact of different kernels/drivers/etc. combinations for the GFX performance.
And then there is VRR / FreeSync. I believe it will work under X and Wayland (only using Sway?). What about under 'raw' KMS/DRM?
Nonetheless soon probably boldly going to where little guides / instructions exists...
[0] https://www.amd.com/en/support/kb/release-notes/rn-amdgpu-un... [1] https://launchpad.net/~kisak/+archive/ubuntu/kisak-mesa [2] https://launchpad.net/~oibaf/+archive/ubuntu/graphics-driver...
Freesync works with in kernel drivers for sure, it was a little work, but worth it. Used it before i sold my undervolted <edit>(made it cooler, quieter and increased performance!)</edit> RX570, can't say how the situation is with newer cards.
Arch Wiki [1],[2] is an invaluable resource as always, applies to other distros as well.
If your base is Ubuntu you will need newer Mesa packages, which you can get here [3] (more recent/bleeding edge but used by default by some distributions, the one tested by Phoronix) or there [4]
(addition) Had this [5] in bookmarks, looks solid.
(edit) formatting
[0] https://www.phoronix.com/scan.php?page=article&item=radeon-r...
[1] https://wiki.archlinux.org/title/AMDGPU#Overclocking
[2] https://wiki.archlinux.org/title/Variable_refresh_rate
[3] https://launchpad.net/~oibaf/+archive/ubuntu/graphics-driver...
[4] https://launchpad.net/~ernstp/+archive/ubuntu/mesarc?field.s...
[5] https://reddit.artemislena.eu/r/linux_gaming/comments/agwrc1...
Might try to get a Steam Deck.
I installed flatpack to install Steam and the experimental community build of Proton for flatpack Steam. I was instantly able to play a favorite Windows only game: Two Point Hospital. Flatpack also made installing Discord (used sparingly I might add) and GzDoom to run Brutal Doom, dead simple.
The major hurdle is AAA titles with ghastly anti-piracy/cheat software as well as 3rd party gaming platforms do not work. Of course this is all getting fixed by Valve so I have nothing but praise for them. So as of now the following older AAA's I own do not work: GTA5, Skyrim, Crysis, Farcry 3.
So if you think you need a specific Linux to get a good gaming experience, you don't. The kernel is the important part. The rest is just software dependency solved by flatpack.
The best Kepler chip is the GK104: https://www.techpowerup.com/gpu-specs/nvidia-gk104.g108
Best GTX: https://www.techpowerup.com/gpu-specs/geforce-gtx-770.c1856
Best Quadro: https://www.techpowerup.com/gpu-specs/quadro-k5000.c565
Where is the IO panel? Where are the hot-swappable drives? Why is the underutilized CPU liquid cooled, when the over-stressed GPU is poorly air cooled?!
Nothing about this makes sense, except it's conformance to modern fashion. Don't even get me started about the fan placement...
Don't get me wrong though, I love the glass (or plastic).
Yeah, no more 5.25" drivers, but honestly I haven't used my DVD drive in the previous computer in a very long time. I'll probably get an enclosure or external one for the rare CD ripping I do.
IO panel is in the back, I didn't include a picture but you can find it on the Asus page for the motherboard of course. Pretty much what you'd expect: lots of USB, ethernet, display out (if you have integrated graphics), etc.
"Underutilized CPU"? It is not a server, but I do plenty of compiling and other CPU tasks. Water cooling is efficient and quiet too, so why not?
(Perhaps you've assumed a fan setup here, but I think I've configured them sensibly.)
"Over-stressed GPU...poorly air cooled"? I'd love a water block and custom loop, but that is outside of what I want to do/spend money on. The bottom fans are intake (as are the side radiator fans, the rear and top are exhaust). The GPU fans are off unless I'm playing games as it stays cool enough. And when I do play I don't notice any noise, no throttling, ... is well cooled I'd say.
The external thing is a decent idea, but I just have way too many junk drawers full of random shit in my little apartment, so I'd rather put it where it belongs, and leave it connected. There's really no harm in that, plus it can even help with air flow if you do it right.
On a tangential note: I once knew a professor with a completely passively liquid cooled rig. Just buy a big enough radiator (about the size of yours) and test things out for yourself. If you have a cool enough room, it should be fine.
Meanwhile, now I'm trying to wire up an old mobo to a side table in the living room, so I guess I don't have a 5.25" bay (yet) either. Or any fans.
https://grabcad.com/library/custom-micro-atx-mineral-oil-com...!
You know... I take this back. I just plugged in my external SATA to USB adapter and immediately re-mourned my last broken backup HDD, which I broke because I tripped on the fucking cable.
Spinning disks should be properly mounted.
crazy, I haven't used any optical media directly since 2009
>90% of custom PC builds do not install a disk drive and there is a large preference for aesthetics over function plus 5.25" drive bays also block airflow anyway. It's also easier to work in a case that has fewer drive bays. It's a lot easier to just buy a external disk drive anyway.
Using optical disks as a backup medium is pretty much dead. Optical disks are more expensive per GB than hard drives. (Bluray seems to be about ~$38/TB while HDDs are ~$25/TB). I would not be surprised if the main use of Bluray drives was ripping/saving the disk contents to a hard drive.
Anything plugged into the front panel just looks bad so most cases just have a USB A and C + audio ports. TBH the front audio ports are often useless anyway because they pick up a lot of noise.
Not sure what you mean about fan placement since most cases are designed to operate with positive pressure which reduces the amount of dust collected.
Also the case in the OP article is not a big case, it is just shorter and wider than a normal mATX case so it looks big in pictures.
True
RE Optical vs Magnetic: Unless someone has some good hard data to show me (I'm honestly very interested in seeing more numbers on this subject), I'm going to continue to assume high quality optical media is going to last longer and require less special treatment than hard drives, tapes, etc. Flash media lasts even less time. Yes, information density is lower on optical, so it really depends what you are backing up. If your concern is rolling backups of an entire prod server worth of customer records perhaps don't choose optical, however that's so far from what we're talking about in this thread that I don't see why it would influence your decision making process. However, if the goal is to backup a save file, or some old family photos, optical is still my go-to.
> Anything plugged into the front panel just looks bad
LOL OK, so I need to dig around in back every time I need to plug in my headphones? Really?! Perhaps you just make the back the new front, I've done that on a few rigs in the past.
> Not sure what you mean about fan placement since most cases are designed to operate with positive pressure which reduces the amount of dust collected.
Interesting, I hadn't considered that before. I'll have to test that out on my next rebuild.
That being said, I doubt the OP has positive interior pressure, since there are two "lower speed fans on the radiator" for intake, and three pushing out from the top.
Can you share your GPU (under load) temps, or did I miss those as well?
I hope I wasn't coming off too negatively on your build. I'm still reeling about my last build, which was quite similar.
I haven't looked at GPU temps much so far, but the last screenshot of Red Dead Redemption 2 shows 81 C. From my quick searches that seems quite reasonable for the 6700XT. Maybe I can tweak some fan settings to improve that a bit, but that should be well below any throttling or stability temperatures.
Edit: 81 C probably not being the peak junction temperature, I'm guessing, not sure what Mango is using by default. In that same instance the CPU is only 51 degrees.
One of the reasons I'm very excited about the Steam Deck is because it would let me de-couple my homeserver and gaming usecases while still running Arch in both.
I also have a shot of him wide-eyed at seeing the computer turned on for the first time, and still sometimes stops to stare at the lights.
Has assembling a Desktop become an art in 2021?
:)