My dotfiles: zshrc, aliases, functions, gitconfig, tmux.conf, ripgreprc, p10k.zsh, and more.
Uses Nix and Home Manager for declarative, cross-distro package management and dotfile symlinking.
Vim is managed separately by vimrc.
sh <(curl -L https://nixos.org/nix/install) --daemonRestart your terminal (or source /etc/profile).
nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
nix-channel --update
nix-shell '<home-manager>' -A installgit clone <this-repo> ~/workspace/dotfiles
cd ~/workspace/dotfiles
./install.shThe install script is idempotent - safe to run multiple times.
What it does:
- Installs packages via Home Manager (ripgrep, fzf, bat, tmux, git, etc.)
- Symlinks all dotfiles to
$HOMEvia Home Manager - Installs oh-my-zsh if not present
- Clones/updates the zsh theme and plugins
- Installs fonts for powerlevel10k
- Installs TPM (tmux plugin manager)
Edit home.nix and add/remove packages from home.packages, then run:
home-manager switchTheme: powerlevel10k
Dependencies (installed by scripts/_fonts.sh):
- MesloLGS NF font - required for icons/glyphs
Terminal font: Inconsolata Nerd Font (installed via Home Manager)
Config: ~/.p10k.zsh (run p10k configure to regenerate)
Plugins (third-party, cloned by install.sh):
Plugins (built-in to oh-my-zsh):
- git
- kubectl
- aws
Edit a dotfile (aliases, functions, zshrc, etc.):
- Edit the file in this repo (the symlink points here)
- Commit and push
- On other machines:
git pull
Change powerlevel10k prompt:
- Run
p10k configure - This overwrites
~/.p10k.zsh(symlinked to this repo) - Commit and push if you want to keep the changes
Add a new zsh plugin:
- Add the
clone_or_pullline toscripts/_zsh-plugins.sh - Add the plugin name to the
plugins=()array inzshrc - Run
./install.shto install it
TPM (plugin manager) is installed by scripts/_tmux.sh.
After install, start tmux and press prefix + I to install the plugins.
Plugins:
- tpm: plugin manager
- tmux-powerline: status bar with segments
- tmux-yank: system clipboard
- tmux-mem-cpu-load: memory/cpu display
- tmux-fingers: copy with hints
- tmux-prefix-highlight: prefix key indicator
- tmux-urlview: quick URL open (depends on
urlview)
Powerline customization:
tmux-powerline.conf.sh- segment settings (colors, symbols, API configs)tmux-powerline-theme.sh- which segments to show and their order
After editing, run home-manager switch and restart tmux.
Some features require API keys. These are stored in secrets.sh which is gitignored.
To set up:
cp secrets.sh.example secrets.sh
# Edit secrets.sh with your valuesCurrently used for:
- Air quality segment: OpenWeather API key (free) + your lat/lon