No description
  • Go Template 79.5%
  • Python 13.9%
  • Shell 5.5%
  • Dockerfile 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-26 21:14:47 +00:00
attributes fix(gramps): incorrect name in attributes 2026-08-18 15:51:02 +02:00
components Merge pull request 'chore(deps): pin git.0x2a.pm/charles/rss-bridges docker tag to 02ce85c' (#60) from renovate/pin-dependencies into main 2026-08-26 21:14:47 +00:00
deploy feat(git): deploy forgejo + rootless runner via materia 2026-06-20 16:30:55 +02:00
tools fix(materia): change directory for dev scripts 2026-07-14 16:14:12 +02:00
.gitignore feat(git): deploy forgejo + rootless runner via materia 2026-06-20 16:30:55 +02:00
.sops.yaml Materia GitOps repository 2026-06-19 01:00:25 +02:00
MANIFEST.toml fix: remove mat2 in manifest 2026-08-09 21:54:46 +02:00
mise.toml fix(materia): change directory for dev scripts 2026-07-14 16:14:12 +02:00
prek.toml chore: migrate to prek.toml format 2026-06-19 16:12:13 +02:00
README.md feat: migrate to codeberg 2026-06-19 15:11:24 +02:00
renovate.json feat(renovate): quadlet with materia templates 2026-08-09 22:47:57 +02:00

gitops — Materia repository

Declarative deployment of ~20 self-hosted services as Podman Quadlets to the Fedora CoreOS host core, managed by Materia.

Layout

MANIFEST.toml          # host -> components assignment (host: core)
components/<name>/      # one component per service
  MANIFEST.toml         #   services + secret declarations
  *.container[.gotmpl]  #   quadlets (.gotmpl = Go-templated)
  *.volume *.network *.image *.build
  <data files>          #   configs bind-mounted from the component data dir
attributes/
  vault.enc.yml         # sops+age encrypted secrets (committed)
  vault.yml             # plaintext source (gitignored)
deploy/                 # host units + Butane for Fedora CoreOS
key.txt                 # age private key (gitignored, host-provisioned)

common ships the shared postgres.image / redis.image.

How it works

  • Quadlets install to /etc/containers/systemd; data files to /var/lib/materia/components/<name>/ and are referenced from .gotmpl quadlets via {{ m_dataDir "<name>" }}/....
  • Repo-stored secrets live in attributes/vault.enc.yml (sops/age). Quadlets pull them via {{ secretEnv "key" "ENV_TARGET" }} (podman secret) or direct {{ .key }} interpolation (env files / JSON blobs).

See deploy/README.md for host bootstrap and mise run validate for checks.