Files
os-builder/docs/config.md
2026-03-05 08:16:21 -08:00

119 lines
2.6 KiB
Markdown

# Config
`build.sh` sources the file `config` in the current working directory at startup. It can also be specified explicitly:
```bash
sudo ./build.sh -c build_amd64
```
## Variables
### Core
* `IMG_NAME` (Default: `chillcraftos-$RELEASE-$ARCH`)
Base name for output files.
* `RELEASE` (Default: `trixie`)
Debian release to build against.
* `ARCH` (Default: `arm64`)
Target architecture. One of: `arm64`, `armhf`, `amd64`.
### Directories
* `WORK_DIR` (Default: `$BASE_DIR/work`)
Where stage rootfs directories are built. Should be on a Linux filesystem — NTFS will not work.
* `DEPLOY_DIR` (Default: `$BASE_DIR/deploy`)
Where finished images and archives are placed.
* `EXPORT_CONFIG_DIR` (Default: `$BASE_DIR/export-image`)
Directory of scripts used when generating images. Rarely needs changing.
### Network / SSH
* `ENABLE_SSH` (Default: `0`)
Set to `1` to enable the SSH server in the built image.
* `PUBKEY_SSH_FIRST_USER` (Default: unset)
If set, written to `~/.ssh/authorized_keys` for the first user.
* `PUBKEY_ONLY_SSH` (Default: `0`)
Set to `1` to disable password auth and require public key auth for SSH.
* `APT_PROXY` (Default: unset)
Apt proxy URL (e.g. `http://192.168.1.1:3142`). Not included in the final image.
* `TEMP_REPO` (Default: unset)
Additional temporary apt repo used only during the build. Supports `RELEASE` substitution.
### Locale / Keyboard
* `LOCALE_DEFAULT` (Default: `en_US.UTF-8`)
* `KEYBOARD_KEYMAP` (Default: `en`)
* `KEYBOARD_LAYOUT` (Default: `English (US)`)
* `TIMEZONE_DEFAULT` (Default: `America/Los Angeles`)
### Cloud-init
* `ENABLE_CLOUD_INIT` (Default: `1`)
Set to `1` to install and configure cloud-init. On RPi, seed files go to `/boot/firmware/`. On amd64, they go to `/var/lib/cloud/seed/nocloud/`.
### Other
* `USE_QEMU` (Default: `0`)
Set to `1` to produce a QEMU-compatible image (adds `-qemu` suffix).
* `SETFCAP` (Default: unset)
Set to `1` to preserve Linux capabilities in the rootfs. Only needed for NFS or capability-sensitive deployments.
* `STAGE_LIST` (Default: `stage*`)
Override the list of stages to run. Example: `"stage0 stage1 mystage stage2"`.
## Example Config Files
### amd64 live ISO
```bash
IMG_NAME='chillcraftos'
RELEASE='trixie'
ARCH='amd64'
LOCALE_DEFAULT='en_US.UTF-8'
KEYBOARD_KEYMAP='us'
KEYBOARD_LAYOUT='English (US)'
TIMEZONE_DEFAULT='America/New_York'
ENABLE_SSH=1
```
### Raspberry Pi (arm64)
```bash
IMG_NAME='chillcraftos'
RELEASE='trixie'
ARCH='arm64'
LOCALE_DEFAULT='en_US.UTF-8'
KEYBOARD_KEYMAP='us'
KEYBOARD_LAYOUT='English (US)'
TIMEZONE_DEFAULT='America/New_York'
ENABLE_SSH=1
ENABLE_CLOUD_INIT=1
```