You've already forked fruix-bootstrap
78 lines
2.1 KiB
Markdown
78 lines
2.1 KiB
Markdown
# Fruix Bootstrap
|
|
|
|
`fruix-bootstrap` is the foreign-FreeBSD bring-up layer for Fruix.
|
|
|
|
Its job is to turn a plain FreeBSD installation into a **Fruix builder**: an environment capable of evaluating and materializing a pinned Fruix checkout.
|
|
|
|
## What belongs here
|
|
|
|
Bootstrap-only responsibilities such as:
|
|
|
|
- host environment checks
|
|
- locating or building bootstrap Guile / support bits
|
|
- wrapper entrypoints that invoke a pinned Fruix checkout
|
|
- validation of the path from vanilla FreeBSD to first Fruix artifact
|
|
|
|
## What does not belong here
|
|
|
|
Long-lived Fruix product logic should live in the canonical `fruix` repo/channel instead:
|
|
|
|
- package definitions
|
|
- system definitions
|
|
- installer logic
|
|
- deployment logic
|
|
- installed-node lifecycle behavior
|
|
- long-lived metadata semantics
|
|
|
|
## Default channel checkout
|
|
|
|
Bootstrap currently assumes a sibling canonical Fruix checkout at:
|
|
|
|
- `../fruix`
|
|
|
|
and bakes in the original channel repo URL as the default origin reference:
|
|
|
|
- `https://git.teralink.net/self/fruix.git`
|
|
|
|
Override the checkout location with:
|
|
|
|
- `FRUIX_CHANNEL_DIR=/path/to/fruix`
|
|
|
|
## Builder preparation
|
|
|
|
The main bootstrap entry point is:
|
|
|
|
- `./bootstrap/prepare-builder`
|
|
|
|
It prepares a reusable per-user builder environment under:
|
|
|
|
- `~/.local/opt/fruix-builder`
|
|
|
|
including:
|
|
|
|
- a local fixed Guile build
|
|
- local Guile extension modules
|
|
- a local Shepherd install
|
|
- a Guix source checkout used by the current Fruix code
|
|
|
|
After that, `./bin/fruix` will automatically prefer that builder root if present.
|
|
|
|
On the current foreign-FreeBSD host path, preparing the builder is mostly a user-space action, but materializing full Fruix system artifacts may still require `sudo` because some host inputs are root-readable only and some system-oriented build steps still assume elevated access.
|
|
|
|
## Design docs
|
|
|
|
- `docs/bootstrap.md` — boundary definition
|
|
- `docs/PLAN_5.md` — migration plan
|
|
|
|
## Intended lifecycle
|
|
|
|
```text
|
|
plain FreeBSD
|
|
-> fruix-bootstrap
|
|
-> Fruix builder
|
|
-> pinned fruix checkout
|
|
-> build installer ISO / VM image / system closure
|
|
-> booted Fruix node
|
|
-> future lifecycle managed by fruix
|
|
```
|