MATERIA-MANIFEST

Author

stryan

Published

September 1, 2025

Name

materia-manifest - metadata file for materia repos and components

Synopsis

<materia_repo>/MANIFEST.toml,<component_directory>/MANIFEST.toml

Description

A TOML config file that sits at the root of materia-repository(5) or materia component that contains metadata describing the entity.

Manifest files are required for a repository or component to be considered valid. Blank manifest files are allowed.

Repository manifests

Options

hosts

A TOML table containing hosts entries of the following format:

  [Hosts.localhost]
  Components = ["caddy","openldap"]
  Roles = ["base"]

Can also contain an Overrides table that contains keys mapped to component manifests. This can be used to override the MANIFSET.toml included with a component on a per-host basis.

Example:

  [Hosts.localhost]
  Components = ["caddy","openldap"]
  [Hosts.localhost.Overrides.caddy.Defaults]
  port = "80"
  [Hosts.localhost.Overrides.caddy.Services]
  Service = "caddy.service"

roles

A TOML table of containing roles entries of the following format:

  [Roles.base]
  Components = ["nagios-agent"]

RoleCommand

(EXPERIMENTAL) An external command ran on a host to determine what role(s) it has.

Remote

A TOML table containing Remote Component entries of the following format:

  [Remote.COMPONENT_LOCAL_NAME]
  URL = "git://github.com/example/component_name"
  Version = "v1" # optional

Snippets

Experimental

Example

[roles.base]
components = ["nagios-agent"]

[hosts.warden]
components = ["dota_patch_bot"]
roles = ["base"]

[hosts.ivy]
components = ["authelia"]

Component manifests

Options

Settings

Key-value pairs for component settings. Contains the following options:

NoRestart

By default, materia will restart services belonging to .container and .pod resources when they are updated. Set to true to disable this behaviour.

Defaults

Key-value pairs describing default variable/attribute values for a component.

Example: defaults.containerTag = "latest"

services

An array of service definitions, use to describe what systemd services should be started when a component is installed.

[[services]]
Service = "SERVICE_NAME.service" # The name of the systemd service
RestartedBy = ["resource"] # List of resources that, if updated by a materia run, should trigger the service to be restarted
ReloadedBy = ["resource"] # List of resources that, if updated by a materia run, should trigger the service to be reloaded
Disabled = false # if true, don't enable or start this service
Static = false # Indicates whether the systemd service is generated by a Quadlet. Usually used for .timer files

Scripts

A list of resources that, despite not ending in .sh, should be treated as script resources.

Snippets

Under construction. Used to indicate custom snippets. See materia-templates(5) for more details.

Secrets

A list of materia attributes that will used in the form of podman secrets. Attributes listed here will be added to the podman secrets vault and are accessible in templates with the related macros.

Secrets = ["attribute1"]

Example

arcade-agent/MANIFEST.toml

[Defaults]
port = "5656"
containerTag = "latest"

[[services]]
Service = "arcade-agent.service"