Skip to content

guix: migration spike scaffold (channels + workstation profile + phased plan) - #314

Merged
mdheller merged 1 commit into
mainfrom
feat/guix-migration-spike
Aug 2, 2026
Merged

guix: migration spike scaffold (channels + workstation profile + phased plan)#314
mdheller merged 1 commit into
mainfrom
feat/guix-migration-spike

Conversation

@mdheller

@mdheller mdheller commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

What

Additive Guix migration spike (does not touch the Nix build). Records the decision to migrate the SourceOS substrate Nix → Guix (Nix-project governance instability), and seeds it with buildable artifacts.

  • guix/channels.scm — upstream Guix + nonguix (the allowUnfree analog: real kernel/firmware/microcode/CUDA), with nonguix's published signing introduction. Commits to be pinned on the first runner (offline hashes can't be real).
  • guix/system/workstation.scm — first parity target: x86_64 workstation using the nonguix kernel + linux-firmware + microcode-initrd.
  • guix/README.md — the phased prove-then-cut plan and the two hard targets the spike must prove (Asahi/Apple-Silicon, CUDA model-serving).

Posture (important)

nonguix = the same nonfree posture the estate already runs under nixpkgs allowUnfree. The freedom stance is unchanged — we are not chasing the FSF/FSDG zero-blob badge.

Adversarial review done

  • Fixed a keyboard-layout field-vs-variable bug (define once, reuse in OS + bootloader).
  • Dropped an unused service module; verified balanced forms + import→symbol coverage.

Honest limits

Authored + reviewed but not build-validated here (no guix on macOS). The first guix system build on a Linux runner is the real gate; reproducibility waits on pinned channel commits. Lix (drop-in Nix fork) stays in reserve as the cheaper stability-only hedge if the hardware targets prove too immature.

Decision + plan tracked in memory; parity/cutover follow this spike.

Additive Guix spike (does not touch the Nix build). Decision: migrate the
SourceOS substrate Nix -> Guix (Nix governance instability). nonguix = the same
nonfree posture as nixpkgs allowUnfree (real kernel/firmware/microcode); NOT the
FSDG zero-blob badge. Includes channels.scm (guix + nonguix, commits to be pinned
on first runner) and system/workstation.scm (x86_64 baseline using nonguix
kernel/firmware/microcode). README = phased prove-then-cut plan + the two hard
targets (Asahi, CUDA) the spike must prove. Adversarial review: fixed a
keyboard-layout field-vs-variable bug (define once, reuse), dropped an unused
service module, verified balanced forms + import->symbol coverage. NOT
build-validated here (no guix on macOS); first  on a Linux
runner is the real gate.
Copilot AI review requested due to automatic review settings August 2, 2026 23:33
@mdheller
mdheller merged commit f7fdae4 into main Aug 2, 2026
1 check passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an additive Guix migration spike scaffold (no changes to the existing Nix build) by introducing a minimal Guix channels definition, an x86_64 workstation operating-system configuration using nonguix (nonfree kernel/firmware/microcode posture), and a short phased plan/constraints README to guide follow-on parity work.

Changes:

  • Add guix/channels.scm defining upstream Guix + nonguix (with introduction) as the starting channel set.
  • Add guix/system/workstation.scm as a first “parity target” workstation OS definition (GRUB EFI, ext4 root, vfat ESP, desktop services + SSH).
  • Add guix/README.md documenting the spike scope, build invocation, phased plan, and stated limitations.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
guix/channels.scm Introduces the Guix + nonguix channel configuration (un-pinned spike starting point with nonguix introduction).
guix/system/workstation.scm Adds a baseline x86_64 workstation Guix operating-system using nonguix kernel/firmware/microcode and a minimal service/package set.
guix/README.md Documents the spike intent, how to build with guix time-machine, and the phased “prove-then-cut” migration plan.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants