Files

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
```