channelling my lambda grindset
So I've been writing lisp or 1-2 years now depending on how we count, mostly Clojureยน and Emacs Lisp.ยฒ Recently I started looking into guile scheme as the next fun lisp to sink time into. At the same time, friends in the ani-cli discord are moving to nixos in droves. Wanting some of that functional package management goodness for myself, but with a lispy touch, I tried installing Guix on arch. That actually somewhat works if you use the manual installation method, but integration is meh. So, having another arch install on my laptop as a fallback, I set out on a little adventure.
Despite my experience this took me 4 hours to install, so I hope this post and the sources I link to can help someone.
Guix is a FSF approved linux-libre distro, so it won't work if you have a modern wifi card.
However don't get a false sense of security from a wired connection.
AMD GPUs need proprietary firmware.
There is a installer image for current nonguix by systemcrafters, but its CI has stalled, so use the "official" nonguix image for now.
Be a good boy and verify the cryptographic signature.
After running through the guided installer, edit the /mnt/etc/config.scm
to include the snippets by nonguix.
Check back in the linked nonguix readme if something happens to change.
use-module
replace
(use-module (gnu))
with
(use-module (gnu)
(nongnu packages linux)
(nongnu system linux-initrd))
operating-system
and add the following 3 lines in the operating-system
block
(operating-system
(kernel linux)
(initrd microcode-initrd)
(firmware (list linux-firmware))
...
)
Then, change to tty3 or tty4 to make some more changes.
cp /mnt/etc/config.scm .
mkdir -p ~/.config/guix
Put the following block into the ~/.config/guix/channels.scm
(cons* (channel
(name 'nonguix)
(url "https://gitlab.com/nonguix/nonguix")
;; Enable signature verification:
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
%default-channels)
Then we gotta jump through some hoops to sync things.
guix pull
hash guix
Especially that hash guix
can trip you up, it is necessary.
You could run the install like this: guix system init /mnt/etc/config.scm /mnt
,
but I recommend adding the substitutes while they are non-standardยณ.
So you end up with guix system init /mnt/etc/config.scm --substitute-urls='https://ci.guix.gnu.org https://bordeaux.guix.gnu.org https://substitutes.nonguix.org' /mnt
Don't get your hopes up that the nonguix substitutes are actually all available. For me, linux-firmware was available but the kernel compiled from scratch.
I had an issue that during the install of my selected packages, the root partition of the installer filled up, erroring with something along the lines of "no space left on device". Even with an extremely minimal subset I barely got it installed, leaving with 89% (5.2 / 5.8GB) usage on the installer root partition.
I suspect this to be a bug and will follow this up with the appropriate parties
Now you can reboot.
Pray that you have good wifi utils.
I'm still struggling to configure it with ip
and iw
alone.
I'm more used to iwctl
/iwd
.
Biggest issue will be WPA2 auth, that's not as standard in some of these tools as you may think.
Sorry if this was a little handwavy, I barely got it installed myself. I plan to write on Guix again once I'm a little more acclimated and have a config ready. Once such a config is ready, any future install will be significantly easier anyway.