Running Guix on Framework 16

Hi everyone,

I am interested in trying running Guix on my Framework 16 once it arrives. I have seen posts like Will Guix work straight out of the box with Framework laptop?

Since the firmware on the Framework 16 is probably different from the firmware on the older laptop models, I am wondering if anyone with a Framework 16 has tried running Guix on it. In particular, I would like to know two things:

  1. does the OS play nice with the firmware?
  2. did you need to compile a custom linux kernel for your laptop?


1 Like

It might be a while until anyone can try. I’m pretty sure even batch 1 hasn’t started shipping yet!

They’re still in DVT. Late Q4 before anyone gets one at least.


1 Like

The FW13 thread for Guix is here:

I haven’t tried Guix with the 7040 series yet (was running 11th gen Intel before), as that would probably be closest to any confirmation whether it will work with the FW16 before it starts shipping. I’ll save this thread and update if I try it on my FW13 AMD.

Using the nonguix channel and non-libre kernel will definitely be required since the amdgpu driver has firmware blobs. I assume likewise for the RZ616/mt7922 wireless card.

Unfortunately, running Guix on the AMD-based Framework 13 does not work, and neither does Nonguix. Both don’t support the wifi chip.

As someone who’s just managed to get guix sd with full disk encryption, hibernation, and wifi (and now bluetooth) working on the AMD Framework 13, I can tell you guix sd does actually work on a framework (and could likely work on the framework 16).

…but it won’t work out of the box.
…and it most likely won’t work out of the box even with nonguix.

You’ll need to use the nonguix packages to get the full linux kernel and linux firmware. But the nonguix linux packages don’t set the kernel configuration necessary to enable the wifi driver for the RZ616/MT7922. (At least, not yet, there’s a merge request to add the setting: nongnu: linux: Enable mt7921e driver. (!347) · Merge requests · Nonguix / nonguix · GitLab)

In the mean time, assuming you’ve setup nonguix channels, you’d essentially need to do something like this in a config.scm:

  (gnu packages linux)
  (nongnu packages linux))

(define-public linux-with-wifi
  (corrupt-linux linux-libre-6.6
                 #:configs '("CONFIG_MT7921E=m"))) ; re-compile the kernel with wifi module enabled (see:

  (kernel linux-with-wifi)
  (firmware (list linux-firmware))                 ; ensure the linux-firmware is loaded (see:

  (users (cons* (user-account
                  (name "<insert-name>")
                  (comment "<insert-comment>")
                  (group  "users")
                  (home-directory "/home/<insert-name>")
                  ;; "lp" group is required for bluetooth
                  (supplementary-groups '("wheel" "netdev" "audio" "video" "lp")))

  (services (append (list (service bluetooth-service-type
                                 (name host-name)))) ; use the host-name defined elsewhere when broadcasting

  ;; ...the rest of the operating-system definition...


Then sudo guix system reconfigure config.scm and sudo reboot

EDIT: Add bluetooth configuration settings


Well, I got it to work, even with kde-plasma 5, which is a very pleasant surprise.
Using the non-guix channel and upstream linux, though.
WiFi works, I’ve not tested bluetooth and fingerprint-reader yet.

Alright, turns out a whole lot of stuff I was expecting to just work? Doesn’t. Probably the “easiest” of which being a userspace shepherd. Which, I guess, is something I just expected to work, because systemd has systemctl --user, but doesn’t seem natively supported by shepherd?

I currently don’t really have the time to make it work properly, so I’m installing Arch on the second hard drive as a daily driver, and will pick guix up again once I’ve got some more time.

Late reply, but it appears to be supported: Managing User Services (The GNU Shepherd Manual)