My dotfiles for Linux and macOS, managed by mise and compliant with the XDG Base Directory spec. One command takes a fresh machine to a working environment.
An opinionated bootstrap.
| Category | Source | Config |
|---|---|---|
| Terminal | Alacritty | alacritty.toml |
| Shell | Fish | config.fish |
| Plugin Manager | Fisher | fish_plugins |
| Prompt | Pure | fish_plugins |
| Multiplexer | Herdr | config.toml |
| Editor | Neovim/LazyVim | nvim |
| Tool Manager | mise | mise.toml |
| Version Control | Git | config |
| Search | ripgrep | ripgreprc |
| Fuzzy Finder | Television | --- |
and some other stuff worth mentioning:
git and curl.
install.sh acquires mise, and mise installs everything else
(even system packages via pacman on Arch and brew on macOS).
git clone https://github.com/nettlesh/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.shOn first run you will be prompted for a git email and name. To skip the prompt, set them beforehand:
GIT_EMAIL=you@example.com GIT_NAME="Your Name" ./install.shEither way they are written to mise.local.toml,
which is gitignored and never leaves your machine.
Arguments are forwarded to mise bootstrap,
so ./install.sh --dry-run previews the run
and ./install.sh --only dotfiles restricts it.
mise refuses to replace config files it does not manage,
so on a machine that already has an Alacritty or Fish config
(like CachyOS) the run stops and names them.
Confirm the list is what you expect,
then re-run with ./install.sh --force-dotfiles.
- Installs mise to
~/.local/bin/mise - Marks this repo as trusted, so mise will read its config without prompting
- Installs system packages, then the tools in mise/config.toml
- Symlinks configs into
~/.config, replacing existing Alacritty and Fish configs when--force-dotfilesis passed - Sets Fish as the login shell
~/.config/git/config is rendered from a template rather than symlinked,
because the git identity is injected from machine-local values.
So git config --global ... writes to the rendered file
and is overwritten on the next apply.
To keep such a change, capture it back into the repo:
mise bootstrap dotfiles add ~/.config/git/configEvery other config in this repo is symlinked and stays live-editable.