Projects
A Rugix Bakery project is a directory containing the following files and directories:
run-bakery: Shell script for running Rugix Bakery pinned to a major version.rugix-bakery.toml: Project configuration file.layers: Directory containing project-specific layer configurations (optional).recipes: Directory containing project-specific recipes (optional).tests: Directory containing system tests (optional).
We also refer to the directory containing all these files and directories as the project directory.
Note that you must always run ./run-bakery directly in the project directory.
Project Configuration
Each project is configured in a rugix-bakery.toml configuration file.
Such a file typically has two sections, repositories and systems.
We explain those sections in further detail in dedicated sections of this documentation.
To give you an idea how a configuration file may look like, here is an example:
#:schema https://raw.githubusercontent.com/rugix/rugix/refs/tags/v0.8.0/schemas/rugix-bakery-project.schema.json
[repositories]
rugix-extra = { git = "https://github.com/rugix/rugix-extra.git", branch = "v0.8" }
[systems.customized-arm64]
layer = "customized"
architecture = "arm64"
The #:schema directive is used to specify a JSON Schema for the TOML file. Rugix Bakery comes with JSON Schemas for all its configuration files, enabling straightforward validation and autocompletion in modern IDEs.
For reference, here is the complete schema for project configuration files:
ProjectConfig object
Project configuration.
Properties
repositories object
Additional properties
SourceConfig SourceConfig
Repository source.
Any of
option 1 object
Properties
git string required
tag string
branch string
rev string
dir string
option 2 object
Properties
path string required
systems object
Additional properties
SystemConfig SystemConfig
Properties
layer string required
architecture Architecture required
Architecture.
-
amd64 -
arm64 -
armv7 -
armhf -
arm
target Target
Target.
-
generic-grub-efi -
rpi-tryboot -
rpi-uboot -
unknown
image SystemImageConfig
Properties
size NumBytes
Number of bytes.
layout ImageLayout
Layout of an image.
Properties
type PartitionTableType
Partition table type.
-
mbr -
gpt
partitions array<ImagePartition>
Items
ImagePartition ImagePartition
Partition of an image.
Properties
size NumBytes
Number of bytes.
filesystem Filesystem
Filesystem.
One of
option 1 object
Properties
type const "ext4" required
ext4
additional-options array<string>
Items
value string
clamp-mtime Timestamp
Timestamp.
option 2 object
Properties
type const "fat32" required
fat32
option 3 object
Properties
type const "squashfs" required
squashfs
no-compression boolean
root string
type PartitionType
Partition type.
options SystemOptions
Properties
use-squashfs SquashfsOptions
Properties
no-compression boolean
You will find the most recent version of this schema on GitHub.