Skip to main content
Documentation
Preview
You're viewing the Next docs — a rolling preview of in-development changes. The current release docs may differ.

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:

rugix-bakery.toml
#: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.9" }

[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:

ProjectConfigobject

Project configuration.

repositoriesobject
SourceConfigSourceConfig

Repository source.

option 1object
gitstringrequired
tagstring
branchstring
revstring
dirstring
option 2object
pathstringrequired
systemsobject
SystemConfigSystemConfig
layerstringrequired
architectureArchitecturerequired

Architecture.

  • amd64
  • arm64
  • armv7
  • armhf
  • arm
targetTarget

Target.

  • generic-grub-efi
  • rpi-tryboot
  • rpi-uboot
  • unknown
imageSystemImageConfig
sizeNumBytes

Number of bytes.

layoutImageLayout

Layout of an image.

typePartitionTableType

Partition table type.

  • mbr
  • gpt
partitionsarray<ImagePartition>
ImagePartitionImagePartition

Partition of an image.

sizeNumBytes

Number of bytes.

filesystemFilesystem

Filesystem.

option 1object
typeconst "ext4"required
ext4
additional-optionsarray<string>
valuestring
clamp-mtimeTimestamp

Timestamp.

option 2object
typeconst "fat32"required
fat32
option 3object
typeconst "squashfs"required
squashfs
no-compressionboolean
rootstring
typePartitionType

Partition type.

optionsSystemOptions
use-squashfsSquashfsOptions
no-compressionboolean

You will find the most recent version of this schema on GitHub.