Hello Guix and Getting Thunderbolt Working
I recently made the switch to Guix on my Framework 13 laptop. Getting the install was…. not entirely trivial but was able to get it working thanks to the post by Andy Wingo over at wingolog.com
There was one issue which brought me back to my early linux days of trying to figure out what bcm43xx was and why I had to modprobe it. That issue was that apparently thunderbolt requires a daemon to speak to external hardware. I'm a person who has a very cursed hardware/software combination of a Guix computer and a studio display. To make things worse all my peripherals are attached to the built in USB hub so I was essentially locked out of all of my hardware.
I'm brand new to Guix and I know very little about hardware abstractions and systemd that the daemon seems to be coded for. I had even less of a chance of solving this problem than the folks who had attemped this before.
Thankfully, through GitHub search, I was able to find a config written by Kenny Ballou who got this working!
Now, being new to Guix, I still didn't quite know what to do with this. So hopefully I can bridge that gap for some new folks who haven't started to make a personal config outside of /etc/config.scm
—-
In Guix, you can reconfigure your system through the guix system reconfigure /etc/config.scm
. What's different from other linux distros is that you don't need to modify that specific file in the /etc folder like you do for most other configs in most other distros. You can just point the guix system reconfigure
command on any config :o!
So I'm starting my personal config now which will shortly live in my dotfiles repo. But if you're still trying to get started at this point what I did was move my config to a new folder and then replicated part of the structure of Kenny's config. My dirs look something like this:
guix-system/
├── config.scm
└── noonker
└── services
└── boltd.scm
The boltd.scm is directly copied from Kenny's config however the (define-module)
function has been replaced to replicate the folder hierarchy above:
(define-module (noonker services boltd)
....
Then, within my config.scm (which I copied from /etc/config.scm) I added the following module import:
(use-modules (noonker services boltd))
Then, within my services definition added the bolt service:
(services
(cons* (service gnome-desktop-service-type)
(service cups-service-type)
(service boltd-service-type)
....
%desktop-services))
The final step to getting this whole thing to work is to reconfigure the system. But now, we need to modify the path that Guix uses to resolve where modules should be imported from
sudo guix system reconfigure -L /home/person/git/guix-system config.scm
And this should recompile the system. On reboot Thunderbolt should work.
:)