Skip to content
Installation

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 | sh

It 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:

VariableDefaultMeaning
DOTHAVEN_VERSIONlatest releaseA tag such as v1.4.0
DOTHAVEN_BIN_DIR~/.local/binWhere to install
DOTHAVEN_BASE_URLthe GitHub releases pageDownload from a mirror

Check it works

dothaven --version
dothaven doctor

doctor 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

OSArchitectures
macOSamd64, arm64
Linuxamd64, 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.

ToolUsed forIf it is missing
gitready (finding unpushed work)ready cannot check repositories
HomebrewListing and reinstalling Homebrew apps (macOS)The Homebrew part of the inventory and of reinstall is skipped
defaultsmacOS settings (built into macOS)
ghSigning in to GitHub without a browserUse github login --with-token instead
zsh, sshcheck of zsh files and SSH configThose files are reported as unchecked
chezmoiThe optional chezmoi syncOnly 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 nothing

upgrade 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

WhatWhere
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 passphraseYour 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.

Next steps