recipe.yml
A recipe.yml
file describes the build process of a custom image. The top-level keys set the metadata and base for the image, and modules are build steps that add things on top of the base.
name:
The image name. Used when publishing to GHCR as ghcr.io/<user>/<name>
.
Example:
name: weird-os
description:
The image description. Published to GHCR in the image metadata.
Example:
description: This is my personal OS image.
alt-tags:
(optional)
Allows setting custom tags on the recipe’s final image. Adding tags to this property will override the latest
and timestamp tags.
Example:
alt-tags: - gts - stable
base-image:
The OCI image to base your custom image on. Only atomic Fedora images and those based on them are officially supported. Universal Blue is recommended. A list of uBlue images can be found on the uBlue website. BlueBuild-built images can be used as well.
Example:
base-image: ghcr.io/ublue-os/silverblue-main
image-version:
The tag of the base image to build on. Used to select a version explicitly (40
) or to always use the latest stable version (latest
). A list of all available tags can be viewed by pasting your base-image
url into your browser.
Example:
image-version: 40
stages:
(optional)
A list of stages that are executed before the build of the final image. This is useful for compiling programs from source without polluting the final bootable image.
Example:
stages: - name: bluebuild from: docker.io/library/rust:1.77 modules: # same as the top-level modules key, but executed in the custom stage - type: script no-cache: true snippets: - cargo install --locked --all-features blue-build
modules:
A list of modules that is executed in order. Multiple of the same module can be included.
Each item in this list should have at least a type:
or be specified to be included from an external file in the recipes/
directory with from-file:
.
Example:
modules: - type: rpm-ostree # rest of the module config... - from-file: common-packages.yml
The included file can have one or multiple modules:
# one moduletype: rpm-ostree# rest of the module config...
# multiple modulesmodules: - type: script # rest of the module config... - type: rpm-ostree # rest of the module config...