feat(fennec): host config for the Framework Laptop 13 Pro #790

Merged
lytedev merged 2 commits from fennec-host into main 2026-07-19 01:23:23 -05:00
Owner

New host fennec for the pre-ordered Framework Laptop 13 Pro (Ultra X9 388H, 2.8K touch, 74Wh, 64GB LPCAMM2 planned, expected Aug 2026). Feature-equivalent to foxtrot; see the commit message for the full delta (Intel series3 hardware module, 72G hibernate swap, baked-in 80% charge limit via framework-laptop-kmod sysfs, easyeffects + sops secrets deferred).

Eval-checked: nixosConfigurations.fennec.config.system.build.toplevel evaluates. Not installable-tested (hardware doesn't exist yet); deploy node is inert until the machine is on the tailnet.

🤖 Generated with Claude Code

https://claude.ai/code/session_015yzzxRtnuvnRhA1Jt7Xsie

New host **fennec** for the pre-ordered Framework Laptop 13 Pro (Ultra X9 388H, 2.8K touch, 74Wh, 64GB LPCAMM2 planned, expected Aug 2026). Feature-equivalent to foxtrot; see the commit message for the full delta (Intel series3 hardware module, 72G hibernate swap, baked-in 80% charge limit via framework-laptop-kmod sysfs, easyeffects + sops secrets deferred). Eval-checked: `nixosConfigurations.fennec.config.system.build.toplevel` evaluates. Not installable-tested (hardware doesn't exist yet); deploy node is inert until the machine is on the tailnet. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_015yzzxRtnuvnRhA1Jt7Xsie
feat(fennec): host config for the Framework Laptop 13 Pro
All checks were successful
/ check-format (push) Successful in 9s
/ build (push) Successful in 5m34s
75c6bcda9f
New workstation host 'fennec' (a small fox — successor-in-kind to foxtrot,
the Framework 13 7040 AMD). Pre-ordered DIY edition: Intel Core Ultra X9
388H, 2.8K 120Hz touchscreen, 74Wh battery, Wi-Fi 7 (BE211), LPCAMM2
targeting 64GB. Expected Aug 2026.

Feature-equivalent to foxtrot: niri (no Plasma) + wvkbd OSK, greetd/ReGreet,
system Steam + deckmode gaming session, AC-aware WiFi power-save, fprintd
with password-at-login for keyring capture, syncthing/claude/podman/laptop
lyte modules, Dolphin sans Plasma.

Differences from foxtrot:
- hardwareModules = framework-intel-core-ultra-series3 (nixos-hardware's
  13 Pro platform module: kernel >=6.17 floor, touch modules in initrd,
  EC kmod, fwupd, fprintd)
- kvm-intel, no amdgpu kernel params
- 72G hibernate swap (>= the planned 64GB RAM)
- baked-in battery charge limit: oneshot + udev writes 80 to
  charge_control_end_threshold (framework-laptop-kmod sysfs) at boot and
  on battery re-enumeration
- easyeffects left off (foxtrot's preset is calibrated for the old
  speakers; the Pro has a new speaker system)
- sops secrets (syncthing cert/key, claude matrix webhooks) deferred until
  the host exists and its age key can be added to .sops.yaml

Deploy node registered but inert until the machine is on the tailnet.
feat(fennec): pre-provision host identity (ssh host key, sops, syncthing)
Some checks failed
/ check-format (push) Successful in 12s
/ build (push) Failing after 17m10s
0b87783767
Bake in fennec's secret identity before the hardware exists, so the
install is decrypt-ready on first boot:

- Pre-generate ssh_host_ed25519_key; its ssh-to-age pubkey is registered
  as &sshd-at-fennec in .sops.yaml (workstations group + new
  secrets/fennec/ rule); workstations secrets rekeyed via sops updatekeys.
- The host private key itself is stashed sops-encrypted (daniel-only
  generic secrets/ rule) in secrets/fennec-provision.yaml. INSTALL STEP:
  decrypt into /etc/ssh before first boot (nixos-anywhere --extra-files
  or copy from the installer); a note in fennec.nix documents this.
- Pre-generate the syncthing identity (device
  Q6DKRWR-H5SLCEK-RZ5J2Z6-VLW2CUN-7EDJKAM-5ANO3CS-ECRBRZG-432F4AU) into
  secrets/fennec/secrets.yml and wire cert/key + claude matrixWebhooks
  into fennec.nix like foxtrot, removing the post-install TODOs.

Verified before shredding the plaintext: the pre-generated host key
decrypts both secrets/fennec/secrets.yml and the rekeyed workstations
secrets, and the provision stash roundtrips the private key exactly.
Config re-evals clean.
lytedev force-pushed fennec-host from 0b87783767
Some checks failed
/ check-format (push) Successful in 12s
/ build (push) Failing after 17m10s
to 157d679502
All checks were successful
/ check-format (push) Successful in 9s
/ build (push) Has been skipped
2026-07-19 01:13:22 -05:00
Compare
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lytedev/nix!790
No description provided.