title: Setting up Guix on a 10th gen Thinkpad X1 date: 2022-12-05 12:00:00 tags: guix, thinkpad summary: A document of my experience setting up Guix on a new Thinkpad X1 --- The last time I bought a laptop, I got a [used Thinkpad X220 from eBay](/liberating-a-thinkpad-x220.html). I loved that laptop, but time marches on and old hardware eventually becomes too slow for modern development needs. After a lot of indecision, I bought a 10th generation Thinkpad X1 with an Intel Core i7-1280P CPU, 32GB RAM, and 1TB NVMe SSD. While they don’t make Thinkpads like they used to, I’m still really happy with it and glad I chose it. Despite the keyboard changes, the TrackPoint™ is still there and I don’t think I could feel good using a laptop without it. Below I will explain all the steps I took to get the Guix distribution setup nicely on it. ## But first, a tangent about proprietary firmware I'm going to talk about proprietary firmware now. If you don't care, which is totally understandable, skip to the next section. I wanted to use Guix, which uses [Linux-libre](https://www.fsfla.org/ikiwiki/selibre/linux-libre/), on whatever laptop I got, but I knew the situation with regards to proprietary firmware blobs on laptops has only gotten worse in recent years. Unfortunately, despite there being more free/open drivers than ever (such as for AMD GPUs), those free drivers are often accompanied by proprietary firmware. After an exhaustive search of the laptops that can run without any proprietary software blobs (such as the Librem 14), I wasn't really feeling good about buying any of them. Newer generations of the Intel Core line of CPUs with new integrated Xe graphics hardware now require proprietary firmware. Intel wireless cards have required proprietary firmware for a long time. Even Intel sound hardware requires proprietary firmware! Then, there's the longstanding CPU microcode update issue. Linux-libre removes microcode updates, which are all proprietary, so users of Linux-libre do not receive critical security fixes to CPU-level vulnerabilities. Of laptops that were Linux-libre compatible, the Librem 14 seemed the best. It uses older Intel 10th gen Core CPUs, the last generation that can be used with Linux-libre and still have hardware accelerated graphics. While I would certainly like a world where all devices were run with free/open firmware, I've come to find this "no proprietary firmware" stance of the GNU Free Distribution Guidelines to be a hindrance to the spread and adoption of free software. The FSF's (really, RMS's) stance on the firmware issue isn't exactly based on a solid foundation anyway. Firmware on nearly every device is proprietary, but most devices have the firmware “baked in” and do not need it loaded at system boot time. So, from the FSF's perspective, we can make an abstraction: A device may or may not have proprietary firmware on it, but if we never have to load firmware then we can treat it as if it were hardware. It's only once the kernel gets involved that proprietary firmware becomes an issue, because the hardware maker now has the opportunity to provide malicious firmware updates. Okay, I get the abstraction and the potential risk, but it feels like a cop out. The lack of CPU microcode updates on fully free systems is the most damning evidence that this stance is a net-negative that I’m aware of. All of those users (myself included, on many past computers) are vulnerable to well-known issues that are patched in microcode updates! I'm a big free software guy, but we don't have our priorities straight here. Lack of firmware is *the biggest* blocker for people who *want* to use as much free software as possible. They often attempt to install a fully free distro only to find out that they can’t connect to the Internet because their wireless card requires a blob and our answer is “buy new hardware.” I think we need to make a tactical retreat from the firmware battle and meet people where they are at. Anyway, I decided to abandon Linux-libre. While Guix itself does not provide vanilla Linux (with firmware blobs), Guix allows for adding unofficial package repositories called “channels.” One such repository is [nonguix](https://gitlab.com/nonguix/nonguix) which does have Linux and a bunch of other stuff, like Firefox. It’s very nice and I recommend it! Thanks to the good folks who maintain it! Guix should drop the FSDG requirements! RMS will be mad but that’s okay! ## Initial barebones installation ## Full installation