Overview
The Redox OS build system is highly configurable through TOML configuration files and environment variables. This guide covers all configuration options and how to customize your build.Configuration Methods
There are three ways to configure the build system:.config File
Set build-time variables and options
TOML Configs
Define system packages and files
Environment
Override settings at runtime
The .config File
The.config file in the repository root controls build system behavior.
Basic Configuration
Create.config in the repository root:
.config
Build Optimization
.config
Debug Options
.config
Filesystem Configuration
.config
Podman-Specific Options
.config
Advanced Options
.config
TOML Configuration Files
Configuration File Location
Configuration files are stored in theconfig/ directory:
TOML File Structure
Configuration files use TOML format with these main sections:[general] - General Settings
[general] - General Settings
[packages] - Package Selection
[packages] - Package Selection
[[files]] - File Definitions
[[files]] - File Definitions
[users] - User Configuration
[users] - User Configuration
[groups] - Group Configuration
[groups] - Group Configuration
Example: base.toml
Let’s examine the base configuration that all others include:config/base.toml
Example: desktop.toml
A simple desktop configuration:config/desktop.toml
Example: minimal.toml
config/minimal.toml
Creating Custom Configurations
Step-by-Step Guide
1
Create Configuration File
Create a new TOML file in the
config/ directory:2
Include Base Configuration
Start by including the base configuration:
config/mycustom.toml
3
Add Packages
Define packages to include:
4
Configure Files
Add custom files or configuration:
5
Build with Custom Config
Use your configuration:
Custom Package Configuration
Packages can have additional options:Architecture-Specific Configuration
You can create architecture-specific configurations:config/$(ARCH)/$(BOARD)/$(CONFIG_NAME).tomlconfig/$(ARCH)/$(CONFIG_NAME).tomlconfig/$(CONFIG_NAME).toml
Environment Variables
You can override configuration at build time:Common Configuration Scenarios
Fast Build for Testing
.config
Development Build
.config
Full Desktop from Source
.config
CI/CD Build
.config
Encrypted Filesystem
.config
Configuration Reference
Build System Variables
string
default:"x86_64"
Target architecture:
x86_64, aarch64, i586, or riscv64gcstring
default:""
Board/device type for ARM (e.g.,
raspi3bp)string
default:"desktop"
Configuration profile name
string
default:"auto"
Path to TOML configuration file (auto-detected)
integer
default:"auto"
Filesystem size in MB (calculated from config if not set)
integer
default:"1"
Use Podman for building (1=yes, 0=no)
integer
default:"1"
Use pre-built toolchain binaries
integer
default:"0"
Use pre-built package binaries
integer
default:"0"
Enable debug builds (keep symbols, no stripping)
integer
default:"0"
Continue building even if packages fail
integer
default:"0"
Do not fetch sources (offline mode)
integer
default:"0"
Build appstream metadata
integer
default:"auto"
Enable sccache for Rust builds (auto-enabled in containers)
QEMU Variables
string
default:"auto"
Enable KVM acceleration (
yes, no, or auto)string
default:"vga"
GPU type:
vga, virtio, ramfb, nonestring
default:"auto"
Audio device:
ac97, hda, nostring
default:"auto"
Disk interface:
ata, nvme, sdcardinteger
default:"2048"
QEMU memory size in MB
integer
default:"4"
Number of CPU cores for QEMU
Best Practices
Use Base Configuration
Use Base Configuration
Always include
base.toml or another complete configuration as your starting point.Keep Configs Minimal
Keep Configs Minimal
Only specify packages and files that differ from your base configuration.
Test Incrementally
Test Incrementally
When creating custom configs, add packages gradually and test each addition.
Document Changes
Document Changes
Add comments to your configuration files explaining custom settings.
Version Control
Version Control
Keep your
.config and custom TOML files in version control (but not in the main Redox repo).Next Steps
Recipe System
Learn how packages are built
Podman Build
Set up Podman build environment