Build Your Own
← Back to Overview
Environment Variable Reference
Every aspect of the kldload build is controlled by environment variables.
Set them in kldload.env (sourced automatically) or pass them on the command line.
No variable is required — sensible defaults are used for everything.
# Source the env file, then build
source kldload.env && ./deploy.sh build
# Or override on the command line
PROFILE=server DISTRO=centos ./deploy.sh build
Build configuration
| Variable | Default | Description |
PROFILE | desktop | Build profile. desktop includes GNOME, Firefox, webui. server is minimal with SSH and ops tools. |
DISTRO | centos | Target distro. centos, debian, rhel, rocky. |
ARCH | x86_64 | Target architecture. |
RELEASE | 9 | Distro release version (e.g., 9 for CentOS Stream 9, RHEL 9). |
EDITION | free | Build edition. Always free. |
OUTPUT_DIR | live-build/output | Where the ISO is written. |
LOG_DIR | live-build/logs | Where build logs are written. |
BUILDER_IMAGE | kldload-live-builder:latest | Docker image used for the build container. |
RHEL subscription (RHEL builds only)
| Variable | Default | Description |
RHEL_ACTIVATION_KEY | none | Red Hat activation key name. Required for RHEL builds. Used at build time only — never baked into the ISO. |
RHEL_ORG_ID | none | Red Hat organization ID. Found at console.redhat.com under your account. |
Installer defaults (target system)
| Variable | Default | Description |
KLDLOAD_HOSTNAME | kldload-node | Hostname for the installed system. |
KLDLOAD_USERNAME | admin | Admin user created during install. |
KLDLOAD_PASSWORD | prompted | Admin user password. Pre-filled to kldload in the webui for testing. |
KLDLOAD_ROOT_PASSWORD | none | Root password. If unset, root login is disabled (sudo only). |
KLDLOAD_LOCALE | en_US.UTF-8 | System locale. |
KLDLOAD_TIMEZONE | UTC | System timezone (e.g., America/Vancouver). |
KLDLOAD_KEYBOARD_LAYOUT | us | Keyboard layout. |
KLDLOAD_PROFILE | server | Install profile for the target system. |
KLDLOAD_STORAGE_MODE | zfs | Storage mode. Always zfs. |
ZFS & storage
| Variable | Default | Description |
KLDLOAD_INSTALL_DISK | auto-detected | Target disk for installation (e.g., /dev/vda). Auto-detected if only one disk. |
KLDLOAD_ENABLE_ZFS | 1 | Enable ZFS on root. Always 1. |
KLDLOAD_ENABLE_ENCRYPTION | 0 | Enable ZFS native encryption (AES-256-GCM). Prompts for passphrase at boot. |
Kernel modules
| Variable | Default | Description |
KLDLOAD_ENABLE_WIREGUARD | 1 | Include WireGuard kernel module and tools. |
KLDLOAD_NVIDIA_DRIVERS | 0 | Include NVIDIA GPU drivers. Set to 1 to enable. |
KLDLOAD_ENABLE_EBPF | 0 | Include eBPF tools (bpftool, bpftrace, bcc). Set to 1 to enable. |
Networking
| Variable | Default | Description |
KLDLOAD_MIRROR | https://mirror.it.ubc.ca/debian | APT mirror for Debian builds. Auto-detects local darksite mirror if available. |
KLDLOAD_SUITE | trixie | Debian suite (codename). |
KLDLOAD_KEEP_DARKSITE | 0 | Keep darksite mirror config post-install (for air-gapped targets). |
KLDLOAD_CUSTOM_MIRROR_URL | none | Custom APT mirror URL for air-gapped post-install updates. |
Proxmox deployment
| Variable | Default | Description |
PROXMOX_HOST | none | Proxmox host IP or hostname. |
PROXMOX_NODE | none | Proxmox node name. |
PROXMOX_TOKEN_ID | none | Proxmox API token ID (e.g., root@pam!mytoken). |
PROXMOX_TOKEN_SECRET | none | Proxmox API token secret. |
VMID | 902 | VM ID for Proxmox deployment. |
VM_NAME | kldload-free | VM name. |
VM_MEMORY | 4096 | VM RAM in MB. |
VM_CORES | 4 | VM CPU cores. |
VM_DISK_GB | 40 | VM disk size in GB. |
VM_BRIDGE | vmbr0 | Proxmox network bridge. |
VM_SECURE_BOOT | no | Enable UEFI Secure Boot on VM. |
VM_TPM | yes | Enable TPM 2.0 on VM. |
USB & physical deploy
| Variable | Default | Description |
USB_DEVICE | none | USB device to burn ISO to (e.g., /dev/sdb). Must be explicitly set. |
USB_BURN_ON_DEPLOY | no | Auto-burn ISO to USB after build. Set to yes to enable. |
Seed disk (unattended install)
| Variable | Default | Description |
KLDLOAD_INSTALL_DISK | auto | Target disk. Auto-detected if only one non-USB disk. |
KLDLOAD_HOSTNAME | kldload-node | Hostname. |
KLDLOAD_USERNAME | admin | Admin user. |
KLDLOAD_PASSWORD | required | Admin password. |
KLDLOAD_STORAGE_MODE | zfs | Storage mode. |
KLDLOAD_TIMEZONE | UTC | Timezone. |
KLDLOAD_PROFILE | server | Install profile. |
kldload.env is gitignored.
Credentials (RHEL keys, Proxmox tokens, API secrets) live in kldload.env which is
excluded from git. Never committed. Never in the ISO. Build-time only.