module.toml — Module Reference

Each module directory contains a module.toml that declares its packages, configs, hooks, and sync rules.

Full example

[module]
name = "shell"
description = "Shell configuration (bash, starship, fzf)"

[[packages]]
name = "starship"
install_method = "cargo"
cargo_crate = "starship"
version_check = "starship --version"

[[packages]]
name = "fzf"
install_method = "apt"

[[configs]]
source = "bashrc"
target = "~/.bashrc"
strategy = "symlink"

[[configs]]
source = "starship.toml"
target = "~/.config/starship.toml"
strategy = "symlink"

[[hooks]]
event = "post-link"
command = "source ~/.bashrc"

[[sync_rules]]
live_path = "~/.bashrc"
managed_path = "bashrc"

[module] section

FieldTypeDescription
namestringModule name (must match the name in aegis.toml)
descriptionstringHuman-readable description

[[packages]] entries

FieldTypeRequiredDescription
namestringyesPackage name (used for which detection)
install_methodcargo | aptyesHow to install
cargo_cratestringCrate name if different from package name
git_repostringGit repo URL for --from-source installs
version_checkstringCommand to get installed version
expected_versionstringVersion substring to validate against
featuresstring arrayCargo features to enable

[[configs]] entries

FieldTypeRequiredDescription
sourcestringyesPath relative to module directory
targetstringyesDeployment path (~ is expanded)
strategysymlink | copy | templateOverride the manifest default

[[hooks]] entries

FieldTypeDescription
eventenumpre-link, post-link, pre-unlink, post-unlink, pre-bootstrap, post-bootstrap, pre-sync, post-sync
commandstringShell command to execute

[[sync_rules]] entries

FieldTypeDescription
live_pathstringPath on the live system (~ expanded)
managed_pathstringPath relative to the module directory
ignore_patternsstring arrayLines containing these strings are excluded from sync