summaryrefslogtreecommitdiff
path: root/posts/2022-12-05-guix-thinkpad-x1-10th-gen.md
blob: c73efbef31771eb9476eb90b9d0d840d5b776b9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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