Installation
dothaven is one static binary. It needs no interpreter and no runtime, and encryption is built in: you do not need to install age to make or open encrypted backups.
Install
The installer script is the fastest way onto a freshly wiped machine. It needs no Homebrew and no sudo:
curl -fsSL https://raw.githubusercontent.com/doguyilmaz/dothaven/main/scripts/install.sh | shIt downloads the release for your OS and CPU, checks it against the release’s published SHA-256 checksums (and refuses to install on a mismatch), and puts dothaven in ~/.local/bin. If that folder is not on your PATH yet, it prints the line to add.
Why not Homebrew here? On a new Mac, Homebrew needs the Xcode command-line tools first, which takes several minutes before you can restore anything.
You can set these before running it:
| Variable | Default | Meaning |
|---|---|---|
DOTHAVEN_VERSION | latest release | A tag such as v1.4.0 |
DOTHAVEN_BIN_DIR | ~/.local/bin | Where to install |
DOTHAVEN_BASE_URL | the GitHub releases page | Download from a mirror |
Check it works
dothaven --version
dothaven doctordoctor checks that dothaven can do its job on this machine: its folders and their permissions, free disk space, the keychain, the tools each feature uses, and GitHub if you are signed in. It changes nothing. See Doctor & troubleshooting.
Supported platforms
| OS | Architectures |
|---|---|
| macOS | amd64, arm64 |
| Linux | amd64, arm64 |
Windows is not supported.
What else you might want
dothaven runs on its own. A few features call tools you may already have; dothaven doctor shows which are present.
| Tool | Used for | If it is missing |
|---|---|---|
git | ready (finding unpushed work) | ready cannot check repositories |
| Homebrew | Listing and reinstalling Homebrew apps (macOS) | The Homebrew part of the inventory and of reinstall is skipped |
defaults | macOS settings (built into macOS) | |
gh | Signing in to GitHub without a browser | Use github login --with-token instead |
zsh, ssh | check of zsh files and SSH config | Those files are reported as unchecked |
chezmoi | The optional chezmoi sync | Only init, chezmoi-export --apply and migrate need it |
The chezmoi path also needs an age key for chezmoi (see Encryption). Encrypted dothaven backups do not.
Updating
dothaven upgrade # also: dothaven update
dothaven upgrade --check # see what is available, change nothingupgrade works out how dothaven was installed and runs that installer’s own upgrade. For Homebrew that is brew update && brew upgrade --cask dothaven; for go install it is go install …@latest. For anything else it prints the releases page. dothaven never overwrites its own binary, because Homebrew tracks the version it installed and would be left describing a file that no longer exists.
On a terminal, dothaven checks at most once a day for a newer release and prints one line on stderr when there is one. Set DOTHAVEN_NO_UPDATE_CHECK=1 to turn it off. See the update notice.
Where dothaven keeps things
| What | Where |
|---|---|
| Backups, snapshots, the restore ledger | ~/.local/share/dothaven (or $XDG_DATA_HOME/dothaven) |
| Your include list, GitHub settings | ~/.config/dothaven (or $XDG_CONFIG_HOME/dothaven) |
| The GitHub token and remembered passphrase | Your system keychain (see GitHub sync) |
| The update check cache | ~/.cache/dothaven (or $XDG_CACHE_HOME/dothaven) |
Shell completion
dothaven completion zsh # also: bash, fish, powershell
source <(dothaven completion zsh)Run dothaven completion --help for how to install it permanently.