Writing a config
Every key of the zc-workstation config file, per provider.
The config is found in this order: -config, $ZC_WORKSTATION_CONFIG,
./zc-workstation.yaml, then ~/.config/zc-workstation/zc-workstation.yaml.
-config - reads standard input.
Keep the config in your dotfiles repository next to the manifests it names.
Relative paths are relative to the config file, and ~ is your home
directory, so the same file works on every machine.
version: 1
targets:
- name: brew
provider: packages
os: [darwin]
file: packages/Brewfile
- name: dotfiles
provider: dotfiles
source: home
mode: symlink
- name: runtimes
provider: tools
file: mise.toml
Every target
| Key | Meaning |
|---|---|
|
Always |
|
Lowercase kebab case, unique. |
|
|
|
The systems the target is for: |
Per provider
| Provider | Key | Meaning |
|---|---|---|
|
|
Required. The manifest: a Brewfile, a package list, or a winget import file. |
|
|
|
|
Also plan an |
|
|
|
Required. The chezmoi source directory. |
|
Where the files land. Empty means your home directory. |
|
|
|
|
|
|
Required. The mise config file whose tools to install. |
|
Also plan an |
|
|
|
The picture to show on every desktop. |
|
The web page for WebViewScreenSaver to show. Set this, |
|
|
The macOS accent colour: |
|
|
|
Required on macOS. A macOS preferences domain, such as |
|
Required on Linux. A GNOME schema, such as |
|
|
Required on Windows. A registry key under |
|
|
|
Homebrew services to keep running. Set this, |
|
launchd agent plists to keep loaded, the label being the file name without |
|
|
|
Required. The keyd config to install as |
|
|
Required. The directory to keep. |
|
File name to content. Names must stay inside |
|
|
Also delete files in |
Providers describes what each one reads and runs.
Mistakes are errors
An unknown key is an error, not a warning: a typo should not silently mean the
default. A key a provider ignores, such as mode on a packages target, is
an error too. validate reports every problem at once:
$ zc-workstation validate
zc-workstation.yaml: target brew: manager "pacman" is not one of brew, apt, dnf, winget
target dotfiles: source is required for provider dotfiles
Edit this page Last updated