Dagger

Build engine for BlumeOps CI/CD pipelines. Replaces shell-based build scripts with Python functions that run identically locally and in CI.

Quick Reference

PropertyValue
Moduleblumeops
Engine Versionv0.21.9
SDKPython
Sourcesrc/blumeops/main.py
Configdagger.json (engineVersion v0.21.9, Python SDK)

Functions

FunctionSignatureDescription
build_nix(src, container_name) → FileBuild a nix container from containers/<name>/default.nix, return docker-archive tarball
nix_version(package) → strExtract the version of a nixpkgs package
build_docs(src, version) → FileBuild Quartz docs site, return docs tarball
flake_lock(src, flake_path?) → FileResolve flake inputs, return updated flake.lock
flake_update(src, flake_path?, skip_inputs?) → FileUpdate rolling flake inputs to latest, return flake.lock
export_yolov9(model_size?, input_size?) → FileExport YOLOv9 weights to ONNX for Frigate

Container Build Types

All BlumeOps containers are built from containers/<name>/default.nix via nix-build on the nix-container-builder runner (ringtail), then pushed to zot (amd64, :vX.Y.Z-<sha>-nix tags). See build-container-image.

Until retire-minikube (2026-06), containers could also be built from a Dockerfile (docker_build()) or a native container.py Dagger pipeline, routed to an arm64 k8s runner. Both build paths — and the build, publish, and container_version Dagger functions that drove them — were retired with the minikube cluster.

CLI Examples

# Build a nix container locally (no local nix required)
dagger call build-nix --src=. --container-name=ntfy export --path=./ntfy.tar.gz
 
# Check a nixpkgs package version
dagger call nix-version --package=authentik
 
# Build docs tarball locally
dagger call build-docs --src=. --version=dev export --path=./docs-dev.tar.gz
 
# Debug a docs build failure
dagger call --interactive build-docs --src=. --version=dev
 
# Update all ringtail flake inputs
dagger call flake-update --src=. --flake-path=nixos/ringtail \
    export --path=nixos/ringtail/flake.lock

Caveats

  • Pre-1.0 API — Current version is v0.21.x. Pin the CLI version and test upgrades on a branch before adopting. See upgrade-dagger for the upgrade procedure.
  • Privileged container — The Dagger engine requires privileged container access. The Forgejo runner’s DinD sidecar provides this.
  • forgejo — CI/CD trigger layer
  • zot — Container registry (publish target)
  • docs — Documentation site (build target)
  • manage-lockfile — Ringtail flake lockfile management