Hardware -- Living On Linux, Part 1

Posted on
linux crankery hardware

FIRST THINGS FIRST

The most important thing to keep in mind is that this is a desktop computer, not a laptop. I don’t like laptops – while the engineering of modern laptops is pretty remarkable, you spend so much of your engineering budget on the compromises inherent in the form factor, to enable a use case that I don’t care about (mobility). So, I’m sure this whole exercise would look pretty different if I were doing this on my MacBook or something.

WHAT WORKS

Almost everything, out of the box. Sound, the network, the video card. It’s big and reasonably fast, particularly compared to a laptop. I’d had it set up running ZFS and a variety of home server tasks, so other than sound and video, none of this is a big surprise. Still, the state of the art has come quite a distance since manually computing modelines for XF86Config and shit. Even the weird Bluetooth/Wifi adapter I have ripped out of an iMac works fine. It’s not 100% surprising, because it’s an Intel X99 motherboard with no weird parts, but overall, I am impressed.

MINOR THINGS

My motherboard doesn’t have USB-C or Thunderbolt, so the docking station that I use with my work laptop is useless, but that’s a specific “me” problem not a more general Linux one. I had a USB device drawing too much power which evidenced itself in … nothing? Until I went into journalctl and looked at the logs. It was trivially remedied, but if I hadn’t gone looking for trouble, I’d never have known. This may be an “OS” complaint and not a hardware one, per se, but I’m sort of reaching here, as the basic needs are fully met out of the box.

It’s also been tough getting my XBox controller working with xow, wirelessly. Rather than worrying too much about it, I was able to just … plug it in via USB, and it works in Steam. So, a minor complaint but nothing blocking.

… AND YET

There is one big issue. I have two monitors (a 1920x1080, rotated 90°; and a 4k, in normal landscape orientation). I want the big monitor to show pixel-doubled 1080, and the smaller monitor native 1080, but I simply cannot get HiDPI support working properly across both monitors. This is table stakes on a Mac, where each display has its own settings, and they are persistent across reboots. This also lives in the liminal area between hardware and software, but it’s more consequential – it requires behavioural changes in how I use my machine. We’ll get to this more when I talk about my OS and software choices, but the Mac is clearly superior here.

OVERALL

It’s a much better experience than the last time I tried (in 2015). From a hardware perspective, everything works. Like, I could post some of my hardware configuration, but:

  1. It’s NixOS, so it’s not super interesting to outsiders, and
  2. I didn’t have to change much from the defaults.

So. I mean, after the installation process, I only had to modify the nix hardware configuration as such:

1
2
3
4
5
6
7
{
  # automatically defined stuff elided
  
  services.hardware.xow.enable = true;
  hardware.video.hidpi.enable = lib.mkDefault false;

}

Obviously, other NixOS bits and bobs will configure some of the hardware, but the system was pretty much 100% usable right out of the installer process, which is basically par with a Mac. I would give the hardware part of this process 4/5 stars:

Rating: ★ ★ ★ ★ ☆