Configuration
Guisu reads .guisu.toml from the source directory. The file can itself be a template (.guisu.toml.j2), which lets you vary config per machine without committing per-machine files.
Quick start
[general]
color = true
progress = true
editor = "nvim"
[age]
identity = "~/.config/guisu/key.txt"
derive = true
[bitwarden]
provider = "rbw"
[variables]
email = "user@example.com"
editor = "nvim"
[ignore]
global = [".git", ".DS_Store"]
darwin = ["Thumbs.db"]
linux = ["*~"]
Sections
| Section | Purpose |
|---|---|
[general] | Top-level behaviour: paths, output, editor. |
[age] | Encryption identity and recipients. |
[bitwarden] | Password-manager provider selection. |
[ui] | Pager and diff tool overrides. |
[ignore] | Files to skip, with per-platform variants. |
[variables] | Free-form key/value map exposed as template variables. |
[hooks] | (Optional) Hook execution defaults. |
The full schema with type, default, and notes per key is in Reference — Configuration.
Templated configuration
A .guisu.toml.j2 is rendered with the same context as a regular template. Use this for per-machine values:
[general]
editor = "{{ env("EDITOR") | default(value="nvim") }}"
[variables]
hostname = "{{ hostname }}"
The file is rendered before being parsed, so the resulting TOML is what the rest of the system sees.
Note
Config file is rendered with the same context as templates
hostname,os,arch, env vars, and user variables are all available in.guisu.toml.j2. This means a config file can be both a config and a small template at the same time.
Validation
guisu info prints the resolved configuration. Use it to debug:
guisu info --all
guisu info prints the resolved configuration, the version, public keys, and a validation summary. Use --json for machine-readable output. There is no separate guisu config get / guisu config set subcommand — edit .guisu.toml directly.
See also
- Reference — Configuration — every key with type and default.
- Templates — variables and templated config.
- Encryption — the
[age]section.