home / docs / profile

Profile system

The contract between "what you chose" and "what gets built."

Keru's profile system is the hand-off between your decisions and the build. It's a small, open design:

The flow

  1. You choose. The installer (installer/install.sh) walks each swappable and records your picks.
  2. It writes a profile. Your choices become make.conf — plain, readable, human-editable.
  3. The pipeline reads it. scripts/build-root.sh sources the profile and drives Kama with those exact settings.
  4. The system appears. Kama boots the toolchain, builds the base, brings your chosen kernel/init/sudo/net, and finalizes the filesystem your profile named.

What the profile owns

LayerWhat it holds
SwappablesINIT, LIBC, TARGET_FS, KERNEL, SUDO, NET.
Base setBASE_PACKAGES — what every system gets (base toolchain openssh).
System configLOCALE, TIMEZONE, KEYMAP.
Build envCFLAGS, CXXFLAGS, LDFLAGS, JOBS, MAKEFLAGS.
Mirrors & cacheSOURCE_MIRROR, ROOT, CACHEDIR.
Kama behaviorPURGE_TEMP_DEPS, FAIL_FAST.

Hand-tuning is a feature

The installer is convenient, not precious. The profile it writes is just a text file — change INIT=s6, tweak CFLAGS, add a package to BASE_PACKAGES, and rebuild. The "craft your system" ethos extends past install into the profile itself.

The profile makes Keru reproducible and legible in one stroke: the same make.conf is the full description of the system. Read, edit, rebuild.

make.conf reference · Build pipeline · ← Docs