Skip to content

Repository layout

A dotfix repository is an ordinary Git repository. Nothing in it is generated behind your back, and every file is meant to be read and edited by hand.

dotfix.toml
machines/
mbp.toml
imac.toml
sets/
core/
set.toml
files/
gitconfig
shell/
10-path.zsh
web/
set.toml

Marks the directory as a dotfix repository and records the schema version:

schema_version = 1

One file per machine. This is where a machine’s own decisions live:

sets = ["core", "web"]
secret_provider = "1password"
vault = "Private"
ignore = ["node"]
[vars]
email = "you@example.com"
[secrets]
smtp_password = "op://Private/mail/password"
KeyMeaning
setsWhich sets this machine takes
secret_providerkeychain, 1password, or age
vault1Password vault name; ignored by the other providers
ignorePackages never reported as unmanaged on this machine
[vars]Template variables, available in files as {{ name }}
[secrets]Where a named secret lives, when the provider’s default location is not right
description = "Web toolchain"
[[files]]
source = "files/gitconfig"
target = "~/.gitconfig"
[packages]
brew = ["node", "pnpm"]
cask = ["figma"]

source is relative to the set directory; target is where the rendered file belongs on the machine.

Every *.zsh file here becomes part of the assembled .zshrc, ordered by filename across all active sets. See Files and shell configuration.

PathWhat it is
~/.config/dotfix/config.tomlPoints this machine at its repository and records its name
~/Library/LaunchAgents/dev.noix.dotfix.plistThe hourly background check