Configuration for Zsh, Neovim, Ghostty, AeroSpace, and related tools. This repository uses your home directory as its work tree.
Install yadm and clone into your home directory:
yadm clone git@github.com:edrenck/dotfiles.gitRun the bootstrap (yadm also offers to run it after cloning):
yadm bootstrapPreview changes or choose a server setup by invoking the script directly:
~/.config/yadm/bootstrap --dry-run
~/.config/yadm/bootstrap --cli
~/.config/yadm/bootstrap --dockerThe bootstrap installs missing tools and can be rerun after pulling updates. It uses Homebrew on macOS (installing Homebrew if needed) and apt on Debian/Ubuntu. On a fresh Mac, finish the Xcode Command Line Tools installation if prompted, then rerun. Run as your normal user; apt requests sudo when needed.
- Shell: Zsh, Antidote and the declared plugins, Starship, fzf, zoxide, thefuck.
- Terminal utilities: eza, bat, fd, ripgrep, lazygit, lazydocker, btop, lf.
- Editor: Neovim >= 0.11.2, Tree-sitter CLI >= 0.25, Node/npm, Python and build tools.
- Repository: Git, yadm, Gitleaks >= 8.19 and the enabled pre-commit hook.
- Desktop: Ghostty; on macOS also AeroSpace, Borders and Space Mono Nerd Font.
- With
--docker: Docker Desktop on macOS, or docker.io and Compose on Linux.
--cli skips desktop apps and fonts. Docker host installation is opt-in because
many machines already use a remote Docker host. Start Docker Desktop after
installation, or configure Linux daemon access separately; bootstrap does not
add your user to the root-equivalent docker group or change existing daemons.
It leaves your login shell unchanged. To switch it, use chsh -s "$(command -v zsh)";
your distribution may require that path to be listed in /etc/shells.
On Linux, apt is preferred. If apt lacks a tool or its Neovim/Tree-sitter/Gitleaks
version is too old, the bootstrap installs a GitHub release under ~/.local,
verifying SHA-256 before extraction. Release fallbacks support x86_64 and arm64.
Existing suitable tools are retained. It also supplies bat and fd symlinks
when Debian calls them batcat and fdfind.
Ghostty uses apt where available (Ubuntu 26.04+). Otherwise it uses the
community .deb builds linked by Ghostty,
matched to Ubuntu 24.04/25.10/26.04 or Debian trixie/forky and compatible derivatives.
Older unsupported desktop distributions stop with an explanation; use --cli
or install Ghostty manually. No third-party apt repository is added.
Neovim installs LazyVim/Mason plugins on first launch. Language-specific JDKs, SDKs, credentials and development environments remain project/machine choices. The custom Osaka-Mono font is not redistributed here: install it separately or select an available font in Ghostty. Linux users can install a Nerd Font for Neovim/eza icons; the Starship prompt uses standard Unicode symbols.
The pre-commit hook scans an exact snapshot of the staged tree (including binary
contents) and blocks commits when Gitleaks is missing. Its output is redacted.
Bootstrap enables it on each machine via yadm config core.hooksPath.
.zshrc: interactive entry point and ignored.zshrc.localoverrides..config/zsh/: shared environment, shell options, aliases, and plugins..config/starship.toml: prompt configuration..zsh_plugins.txt: Antidote plugin list..config/yadm/bootstrap: macOS/Linux dependency installation..config/yadm/install-release.py: verified Linux release fallbacks..config/nvim/: LazyVim configuration and plugin locks..aerospace.toml: macOS window-manager configuration.
The home-level .gitignore permits only selected configuration paths. Add a new
path deliberately when you want to manage another tool. Never use yadm add -f
for credentials. Stage specific files and inspect yadm diff --cached --stat.
Authentication stores, Anytype API keys, editor prompt databases, histories,
logs, and environment files must remain local. Store shell secrets in
~/.zshrc.local or use a password manager. An ignore rule does not untrack files
already committed, remove old history, or revoke a leaked credential.