guix: migration spike scaffold (channels + workstation profile + phased plan) - #314
Merged
Conversation
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.
There was a problem hiding this comment.
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.scmdefining upstream Guix +nonguix(withintroduction) as the starting channel set. - Add
guix/system/workstation.scmas a first “parity target” workstation OS definition (GRUB EFI, ext4 root, vfat ESP, desktop services + SSH). - Add
guix/README.mddocumenting 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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 (theallowUnfreeanalog: 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 nixpkgsallowUnfree. The freedom stance is unchanged — we are not chasing the FSF/FSDG zero-blob badge.Adversarial review done
keyboard-layoutfield-vs-variable bug (define once, reuse in OS + bootloader).Honest limits
Authored + reviewed but not build-validated here (no guix on macOS). The first
guix system buildon 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.