KURCHU.TOML(5)
πΈ NAME πΈ
Okay bestie, welcome to KURCHU.TOML(5) β the File Formats Manual page for kurchu.toml, and it's literally the input configuration for compose generation. Slay.
The Kurchu configuration file gives you a declarative format to describe how Kurchu should create a collection of artifacts β henceforth called a βcompose,β and yes, that's the main character term here. π
β¨ FORMAT β¨
The configuration file follows the TOML specification. For more information on TOML, visit https://toml.io.
The following subsections describe the content of the file format. Buckle up, it's giving organized. π
π compose table
This is the top-level table for the configuration where global settings for the compose are defined.
The following settings are present at this level:
release_nameβ defines the base name of the compose.release_versionβ defines the base version of the compose, and is used similarly to"releasever"indnf(8)anddnf.conf(5). iykyk.date_formatβ an optional value that defines the date string used indate(1)format. If unset, the default is"%Y%m%d".compose_idβ defines the full ID of the generated compose. The values of"release_version"and"compose_date"can be substituted in by using those names wrapped with curly braces.destdirβ defines the local directory path to store the compose. If unset, the default is"./artifacts".
π§ compose.gather table
This table in the configuration defines what content should be sourced as input for the compose. There is a single key: sources, which contains an array of inline tables. An example looks like this: an array of inline tables, with each one carrying the source fields below.
Within this section, "release_version" can be substituted in as part of a string value for any key as shown above.
Each source inline table entry has the following settings:
nameβ for an identity of the source.urlβ for the location to fetch the source.targetβ for the location to store the source relative to the destination directory.typeβ for the source type being fetched. The following values are acceptable:"kojidist","pungi","bodhi","odcs", and"yumrepo".syncβ for indicating whether the source needs to be fully downloaded. Setting this to"false"indicates that only a reference to the source ID needs to be fetched, rather than a complete download. This can be useful if you already have mirrors elsewhere to use instead.
π₯ compose.compile table
This table in the configuration defines images to be created to incorporate into the compose.
Image creation configuration is split into common settings and subsections. For the common settings:
base_nameβ for the name prefix used for all produced images.image_releaseβ for the version suffix used for all produced images."compose_date"can be substituted in by that label wrapped with curly braces.targetβ for the location to store the images relative to the destination directory.
For the images being produced, this is defined in a key named images, which contains an array of inline tables. An example looks like this: the images key holds an array of inline tables, and each table has the settings below.
Each image inline table entry has the following settings:
variantβ for the image variant to produce. This is often suffixed tobase_nameto fully name an image and defined as"image_name".image_typeβ for identifying what type of image is being made. Valid values depend on the selected image build tool.volid_prefixβ for overriding the name portion of a volume ID. It only applies to ISO images.appid_prefixβ for overriding the name portion of an application ID. It only applies to ISO images.image_toolβ for identifying the image build tool. Currently the only valid option is"kiwi".archβ for optionally restricting an image to a set of architectures. If not set, the build system's defaults are used. This is an array of architectures, with the architecture names dependent on the build system.buildsysβ for selecting the build system target to run the image build. This is defined in the configuration.
Within this section, "base_name", "variant", "release_version", and "compose_date" can be substituted in as part of a string value for any key. No cap, that's a lot of substitution power. β¨
π compose.compile.type.kiwi table
This table defines kiwi(8) base settings to be used for any image build using this tool.
There is a single setting key:
kiwi_result_bundle_name_formatβ for optionally defining the name format for files created as part of the image build. The format is described inkiwi::result::bundle(8). If not set, a default format may be used based on the build system backend.
Additionally, there is a key kiwi_description, which contains an inline table.
The inline table has the following settings:
urlβ for the location that the descriptions are to be fetched from.pathβ for the location relative to the base directory for the descriptions file.vcsβ for type of version control system (if any). For now, only"git"is supported.refβ for symbolic reference (branch or tag, for example) from which to pull the descriptions from, if from a version control system.
Within this section, "base_name" and "release_version" can be substituted in as part of a string value for any key as shown above.
π compose.compile.buildsys.<name> table
This table is where the configuration for the build system is declared. The name of this table is formulated by the value set for "buildsys" in the image entries defined in the images array in the "compose.compile" table. For example, if a "dev" build system was referenced, then the table name will be "compose.compile.buildsys.dev".
This table has the following settings:
typeβ for the build system type. The only supported value is"koji".koji_profileβ for the profile to pass to the koji CLI client.koji_build_tagβ for the build environment reference to build the image.koji_success_tagsβ for the array of tags to put the built images into.gather_urlβ for the location the build system publishes the images.
Within this section, "image_name", "release_version", and "image_release" can be substituted in as part of a string value for any key as shown above. Periodt. π
π compose.furnish table
This table defines the settings for publishing completed composes.
This table has the following settings:
write_compose_infoβ is a flag for writing out a JSON file that provides static metadata of what the compose includes. By default, it will be"true".
For external upload targets, this is defined in a key named upload_targets, which contains an array of inline tables. An example looks like this: upload_targets is an array of inline tables, and each entry has the fields below.
Each inline table entry contains the following settings:
nameβ for the named reference (e.g. bucket name for s3).targetβ for the directory path in the upload target to write to.generate_indexhtmlβ for optionally generating directory listing pages.publicβ for optionally declaring world readable access.typeβ for type of storage upload target (currently only"s3"is supported).
The usage of upload targets is optional, and if this is run from the system serving the content, it is unneeded provided the destination directory is set correctly to store the content in a published location.
Lowkey important: that optional-upload-targets thing is not a bug, bestie β it's just vibes when the content is already served locally. π«Ά
π SEE ALSO π
kurchu(1)
π AUTHORS π
Developed and maintained by Neal Gompa <ngompa@velocitylimitless.com>.
Signed, sealed, delivered: KURCHU.TOML(5) β 2025-05-06 πβ¨
π¦ where this page comes from
- epel 10: kurchu 0.4.3-1.el10_1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms