Keep DRM/KMS support in tribes-linux so the kexec installer can show a local console on Proxmox/QEMU and generic real hardware. This restores VGA console output while retaining the other kernel slimming options.
Guix Tribes Channel
This repository is the Guix channel for Tribes OS. It contains the package, service, system, installer, deployment, and substitute-builder definitions used to build and operate Tribes nodes.
Contents
Network-bound disk encryption (NBDE):
nbde/packages/crypto.scm: package definitions forluksmeta,tang, andclevis.nbde/services/tang.scm: standalone Tang service for Guix systems.nbde/system/mapped-devices.scm: Clevis-backed mapped-device kind with manualcryptsetupfallback.nbde/system/initrd.scm: early-boot Clevis support aroundraw-initrd.docs/nbde.md: operational notes for LUKS headers, initrd, Tang, and/boot/nbde/local-boot.key.
Tribes packages and systems:
tribes/packages/devtools.scmandtribes/packages/node.scm: shared tooling package definitions used by repo-local Guix development manifests.tribes/packages/source.scm: source-built Tribes package producing a production release from pinned source plus vendored Mix/npm dependency FODs.tribes/plugins/*.scm: external plugin package definitions and plugin metadata.tribes/services/*.scm: Shepherd services for Tribes and supporting runtime components.tribes/system/node.scm: node operating-system constructor.tribes/system/installer.scm: installer-facing Tribes OS constructor.manifests/substitutes/*.scmandtribes/ci/substitutes.scm: substitute builder manifests and CI targets.
Deployment and diagnostics:
tribes/deploy/*.scm: deployment helper API and worker/operation support used by Legion.tribes/diagnostics/*.scm: diagnostics helpers, including system generation comparison.scripts/build-kexec-image: builds the Legion kexec installer image.scripts/build-tribes-docker-image: builds the pinned Tribes debug Docker image.
Pin maintenance
Refresh the upstream Guix channel pin intentionally with:
./scripts/update-base-channels-pin
The script updates pins/base-channels.sexp and syncs the Guix entry in
pins/legion-channels.sexp. It auto-detects whether the current pin uses the
local guix-fork channel or the mirrored official Guix channel, uses the
matching sibling checkout head by default (../guix-fork or ../guix), accepts
--commit COMMIT, and can switch back to the mirrored official channel with
--official.
After changing the base channel pin, run Legion's generator in ../legion_kk:
npm run generate:guix-base-channel
Refresh the Tribes and external plugin source pins with:
./scripts/update-tribes-and-plugin-pins
By default, the pin update scripts use local guix for hashing and fixed-output
builds. If the local host is not suitable for Guix networked fixed-output builds,
run them explicitly on an SSH build host:
./scripts/update-tribes-and-plugin-pins --build-host HOST
Use --commit to commit the affected pin files after a successful refresh:
./scripts/update-tribes-and-plugin-pins --commit
The combined script updates:
tribes/packages/source.scmtribes/plugins/sender.scmtribes/plugins/aether.scmtribes/plugins/supertest.scmtribes/plugins/kobold.scmtribes/plugins/trust.scm
For one-off updates, use scripts/update-tribes-pin or
scripts/update-plugin-pin --help directly.
Channel files
Checked-in channel files serve different roles:
pins/base-channels.sexp: upstream Guix pin only; used forguix pull -Cand related bootstrap tooling.pins/legion-channels.sexp: Legion/build-host default channel set containing the pinned upstream Guix channel plus defaulttribeschannel metadata.- The
kexec-installerbranch selects the default kexec installer source commit.
For pinned bootstrap usage, generate a channels.scm that combines the pinned
upstream Guix channel with this repository's current commit.
Current development status
- NBDE packages and the disposable Tang + LUKS smoke path are working.
- The QEMU Phase-0 encrypted-root system boots unattended through Clevis/Tang and reaches a login prompt.
- The active Legion kexec image definition is based on
examples/build-host-kexec-installer.scmandnbde/system/build-host-kexec-installer.scm. - Tribes source, plugin, node, installer, Docker debug image, and substitute manifest definitions are maintained in this channel.