These are my dotfiles used on both Arch and Mac. I use chezmoi to manage them.
First install chezmoi: install chezmoi
Then run:
chezmoi init --apply https://github.com/sandepten/dotfiles.git- Neovim
- Tmux
- Zsh
- eza (ls replacement)
- yazi (TUI file manager)
- fzf (fuzzy finder)
- bat (cat replacement with syntax highlighting)
- zoxide (cd command replacement)
- atuin (command line tool for remembering and suggesting commands)
- niri (scrollable wayland compositor)
- ghostty
- starship
This repo is the chezmoi source for personal dotfiles used on Arch Linux and macOS.
dot_*entries map to paths in$HOME.- Most config lives under
dot_config/, especiallynvim,hypr,niri,tmux,kitty,ghostty,bat,btop,yazi, andstarship. - Shell setup is centered around
dot_zshrc.tmpl,dot_zsh/,dot_profile, anddot_gitconfig. dot_config/nvim/has its ownREADME.md;dot_config/opencode/is bundled agent/skill content, not core machine config.
dot_: becomes a dotfile or dot-directory in the target home directory.private_: private/sensitive content; treat carefully and avoid committing secrets.executable_: installed with the executable bit..tmpl: Go template source. Keep template syntax valid. Two keys are required and are referenced directly rather than through ahasKeyguard, so a machine missing them fails with the key name instead of rendering a silently different shell:is_workanddefault_node_agent..chezmoiignoreis also templated. Its entries are destination-relative, so.config/hyprand notdot_config/hypr. A source-relative entry matches nothing and is dropped without warning..newfiles are alternate/reference configs and deploy as separate files with the.newsuffix.private_templates reference their values from[data]in the local~/.config/chezmoi/chezmoi.tomlrather than storing them here, so no PAT enters this repository.missingkey=errormakes a machine that has not set them fail loudly.
chezmoi init on a new machine stops with map has no entry for key "is_work" until these are set. Create ~/.config/chezmoi/chezmoi.toml (mode 600) before the first apply:
[template]
options = ["missingkey=error"]
[data]
is_work = false
default_node_agent = "npm"is_work gates the corporate TLS workaround, the OMZ snippet skip, and the Azure DevOps credential file. default_node_agent is what ni uses. A work box also needs ADO_ORG, ADO_ORG_URL, ADO_PROJECT, ADO_PROJECT_ID, ADO_PAT, and ADO_PAT_RW; a personal box does not, because the credential template renders empty and chezmoi then creates no file.
The default is catppuccin, in two layers.
On Linux, omarchy owns the palette. Terminals import ~/.local/state/omarchy/current/theme/, neovim and starship follow omarchy theme set, and btop and kitty read the generated files. Set the active one with omarchy theme set catppuccin. The omarchy installer seeds "Tokyo Night" on a fresh machine, so run that once after install.
On macOS there is no omarchy, so the values are stated in the source: theme = "Catppuccin Mocha" in the ghostty config, --theme="Catppuccin Mocha" in bat, @catppuccin_flavor "mocha" in tmux, catppuccin mocha syntax themes for yazi, and the catppuccin nvim colorscheme as the neovim fallback.
- Prefer editing the chezmoi source here, then verify with
chezmoi diffand apply withchezmoi apply. - Be careful with OS-specific branches in templates so Linux and macOS behavior do not drift accidentally.
- Hyprland is the omarchy layout.
dot_config/hypr/hyprland.lualoads omarchy defaults then yourmonitors,input,bindings,looknfeel, andautostartmodules. Omarchy readshypr/from your config directory at login, so a new file needs a matchingrequireline here. dot_zsh/path.zsh.tmplcontains work-only Node/npm TLS relaxations; do not broaden them casually.dot_zshrc.tmplhas a markedchezmoi managed toolchainregion. CLI installers append PATH lines inside those markers. An installer appending outside them will be deleted by the next apply.- Shell startup is pinned by an equivalence harness. Before changing
path.zsh,zinit.zshorzshrc, capture the shell state and diff it, and re-check startup timing. A change that only removes a subprocess is worth more than one that adds structure.
Note: Home ~/AGENTS.md is not managed by chezmoi (HCMP agent standing policy). Do not re-add AGENTS.md to this source.