NixOS on the Framework Laptop 16

Following what exists for other distros, let’s open a topic for running NixOS on the FW16 :slight_smile:

I’m in batch 6 so I haven’t tried it yet, but my config is as ready as can be until I get my hands on it.

FYI: there is an issue for requesting support for the FW16 in NixOS/nixos-hardware.
Nothing there yet, I’ll try to do it if there’s anything worth sharing.

14 Likes

I don’t see anything that looks like a 16 NixOS configuration in your repo; are you referring to the configuration called “vm”?

I’ve got my config prepared as well (Batch 5). I opted to start with the 13 AMD nixos-hardware module, since all of its settings seem like they’re also going to apply on the 16. I’m very excited to hopefully get my laptop in the next few weeks and install NixOS!

I’m particularly excited about getting secure boot + hibernation working. I think that’s going to require a custom kernel build with lockdown disabled, since secure boot normally disables hibernation.

1 Like

Indeed, I haven’t created yet the actual configuration for the FW16, I finalized the general setup.
I’ll use impermanence, the only difference with the vm setup will be the hardware settings + the swap size.

Like you I’ll start with the AMD FW13 profile.

Regarding SecureBoot, I suppose you’ll be using lanzaboote ?

Yeah, that’s the plan.

Hello, batch 10 here…and also eagerly waiting to nixify it :stuck_out_tongue:

Batch 7 here, I’d really like to try NixOS on the 16, I’m glad there’s people blazing the trail on a config.

Glad that there already is a thread from users also planning on using NixOS with the FW16 - I am planning on also using nix but I am a first time user, so I still have to do a bit of learning coming from ‘normal’ linux distros like arch. Happy for any tipps and tricks you guys can give!
But I got a bit more time than you guys, as I am from batch 13.

2 Likes

One of the most general bit of advice that I can give you for now is: don’t hesitate to start early.
Grab the install ISO, install it in a virtual machine, break it endlessly until you’re satisfied with your setup :wink:

In the end, only a few changes would change for the FW16, mostly tweaking hardware related stuff:

  • kernel parameters
  • disk partitioning
  • etc…
2 Likes

Yeah somehow obvious but I haven’t thought about that. Sounds like a good idea! The fact that you can perfectly reproduce your system with a config still needs to sink.

Then I only have to tinker with the settings needed for gaming related stuff when the FW16 arrives, as I currently have no setup that allows me to to test stuff that needs graphics acceleration on a vm.

Thanks for the tip!

FW 16 Batch 1 recipient here with NixOS up and running. Here’s a list of milestones I’ve hit:

  • Disk provisioning and configuration with Disko
  • Secrets management with Sops-nix
  • Flaked install (needs more work but functional)
  • Home-manager setup for user resources
  • Key hardware functionality all working
    • power management
    • camera
    • fingerprint sensor
    • dgpu (with pci-passthru and looking-glass)

Things I’m still looking to do:

  • Get my code into a less embarrassing state so that I can publish it.
  • put vms into nix
  • backups (local and offsite)

Will let you know as soon as I have a publish location. Happy to work on any questions or reasonable requests.

4 Likes

Really cool that you have the hardware working nicely !
If at some point you feel confident about the status of your hardware tweaks, feel free to share it in nixos/nixos-hardware :wink:

Just curious: have you tried enabling hardware.keyboard.qmk.enable, to see if it works ?

1 Like

I’ve added it and received no errors. Via doesn’t seem to recognize a keyboard, is there some other way to test you can recommend?

nevermind, found it. Appears to be working.

1 Like

Given it’s potential increased reusability, I’m kinda tempted to skip customizing through QMK and go instead with kmonad (which has a NixOS module)

Since it seems like many of you are familiar with impermanence on NixOS, I was wondering if any of you have tips for how I could my issue regarding IME I posted about on the NixOS forums. My Framework16 is arriving on Monday and I’m hoping to have everything ironed out by then :sweat_smile:

I’m not familiar with the tool you’re trying yo configure but worst case scenario, you can always configure it manually and persist it :wink:

hello

I couldn’t get the fingerprint reader to work.
How did you configure it ?

for my curiosity, could you show me how you configured power management and dgpu?

thanks

For the fingerprint reader I did nothing special, I enabled the fprintd service.

services.fprintd.enable = true;

then I enrolled

sudo fprintd-enroll $USER

I’ve also done nothing special with power management. The recommendation from framework is to use power profiles daemon. (I was hoping to use TLP, but for now I’ve just set the battery max to 80 in the bios).

services.power-profiles-daemon.enable = true; 

I’ll have to get back to you on the dgpu stuff when I have a little more time.

2 Likes

Thant, this work

I’m running NixOS on my batch 3 unit currently. I am just using the framework 13 amd hardware configuration for now, because I don’t feel comfortable doing my own yet…

I’m running a flake based setup, and I’ll share my config later today once I get my git repo connected to github. Be forewarned, I’m a nixos novice, so my config may have some bad style/patterns, but it seems to be running great on my system so far.

I’ve been experimenting with power draw on PPD vs TLP, and my experience is that TLP, at least on unstable is just fine. PPD seems to hit a slightly lower aboslute minimum power consumption at dead idle (6.5W vs 7.5W), but actually doing anything has them consuming about the same amount of power. Looking at cpu statistics, it seems like PPD allows the cpu to get all the way down to 400MHz at idle, while TLP bottoms out around 1GHz. The other advantages it provides in terms of configurability have been worth it for me though. Especially using the “guided” cpu mode with a frequency cap (at 3.5GHz currently) has been great. The laptop still feels plenty fast for light work, and the fan never spins up during burst-y workloads, or light gaming. I’m not super well informed on why PPD is preferred, but the thing about the AMD P-states seems to be supported by TLP according to this documentation: Processor — TLP 1.6 documentation Maybe someone more technically knowledgeable could point out any other disadvantages of TLP.

edit: after doing some more testing with different workloads, it seems like the PPD power-saver profile also has some more aggressive cpu frequency limits of some description which ends up in better consumption figures in some things… this power management stuff is a deep rabbit hole for sure with the pstates and the epps and the governors etc. I’ll post some more benchmarks in the future, but I’d love to get some technical insight from someone who really knows their stuff.

I spent like an hour yesterday trying to get the fingerprint sensor working, and this was my issue lol. I had just enrolled my fingerprint for root rather than my user. Thanks for the tip!

1 Like