Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Add a host

Real hosts belong in the consumer repository’s inventory.toml. Select the consumer explicitly or run from its Git checkout:

export MAISON_HOME="$HOME/.maison"
export MAISON_CONSUMER_ROOT="$HOME/src/terroir"
maison host add "$(hostname -s)" --user "$(id -un)"

host:add writes the consumer inventory and, when requested, an optional hosts/<hostname>/system.nix override. It requires a Git authoring checkout, validates the candidate inventory before replacement, and refuses to use Maison’s neutral inventory as a mutation target.

The inventory must satisfy the shared schema in schemas/inventory.toml: supported systems are aarch64-darwin, aarch64-linux, and x86_64-linux; profiles are base, dev, mac, and linux. Duplicate profiles, unknown feature keys, unknown deploy fields, and wrong value types are rejected.

For a deployable Linux host, add an explicit deployment table to the consumer inventory.toml:

[hosts.example.deploy]
enable = true
hostname = "example.example.com"
ssh_user = "maison-deploy"
user_ssh_user = "operator"
repo_path = "/home/operator/.maison"
remote_build = false
auto_rollback = true
magic_rollback = true

Then validate and preview without activation:

maison host validate
maison system plan --host example
maison system deploy example --dry-activate

Host override directories must match an inventory host and may contain only system.nix. Host override files contain OS-level exceptions; user differences belong in consumer mise configuration or dotfiles.