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