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:

#: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.

repositories object
SourceConfig SourceConfig

Repository source.

option 1 object
git string required
tag string
branch string
rev string
dir string
option 2 object
path string required
systems object
SystemConfig SystemConfig
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
size NumBytes

Number of bytes.

layout ImageLayout

Layout of an image.

type PartitionTableType

Partition table type.

  • mbr
  • gpt
partitions array<ImagePartition>
ImagePartition ImagePartition

Partition of an image.

size NumBytes

Number of bytes.

filesystem Filesystem

Filesystem.

option 1 object
type const "ext4" required
ext4
additional-options array<string>
value string
clamp-mtime Timestamp

Timestamp.

option 2 object
type const "fat32" required
fat32
option 3 object
type const "squashfs" required
squashfs
no-compression boolean
root string
type PartitionType

Partition type.

options SystemOptions
use-squashfs SquashfsOptions
no-compression boolean

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