Example config.yaml :
If you used magiccfg verify in scripts, replace it with magiccfg apply --dry-run . Inline shell commands in resources are now deprecated – see Migration Guide for the new plugin-based approach. Example: Using magiccfg 1.3 to manage a developer workstation Catalog structure:
name: docker-volume version: 1.0.0 handles: - type: docker_volume commands: check: ./check.py apply: ./apply.sh diff: ./diff Resources can now have a when field evaluating simple predicates against system facts (OS, hostname, environment variables, file existence). magiccfg 1.3
Version 1.3 introduces declarative drift correction, native age encryption support, and a plugin API for custom resource types. 1. Declarative drift detection & auto-repair ( magiccfg apply --fix ) Magiccfg now compares the intended state (your config catalog) against the actual system state. If a file is missing, a symlink is broken, or a permission changes, magiccfg apply --fix will restore intent without re-running every task.
magiccfg_1.3.0_checksums.txt signed with maintainer key 0x4D6C3A8F2E9B1C7A . Magiccfg – configuration as intention, not just code. Example config
~/.config/magiccfg/ ├── config.yaml ├── templates/ │ └── gitconfig.tmpl └── secrets/ └── github-token.age
Example output:
$ magiccfg apply --fix Checking 14 resources... [WARN] ~/.zshrc: expected mode 644, found 600 → fixed [WARN] ~/.config/nvim/init.lua: missing → restored from catalog [OK] All resources match intended state. Integrate encrypted secrets directly into your config catalog using age (modern, simple encryption). Magiccfg 1.3 transparently decrypts files matching *.age when run with the private key available via $MAGICCFG_AGE_KEY or an age agent.