Personal dotfiles managed with GNU Stow.
git clone https://github.com/justincdavis/.dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.shThis will:
- Install
stowif not found - Install Starship prompt if not found
- Install JetBrainsMono Nerd Font for Starship icons
- Install Alacritty terminal emulator if not found
- Back up any existing config files to
~/.dotfiles-backup-<timestamp>/ - Symlink all stow packages into
$HOME - Copy
~/.bashrc_localtemplate if it doesn't exist
./install.sh --only deps # only install dependencies (stow)
./install.sh --only starship # install starship binary + nerd font only
./install.sh --only alacritty # install alacritty binary only
./install.sh --only stow # only create symlinks + bashrc_local template
./install.sh --cuda # install everything + add CUDA paths to ~/.bashrc_localEach directory is a stow package that mirrors the home directory structure.
| Package | Contents | Symlinks |
|---|---|---|
bash/ |
.bashrc, .bash_aliases |
~/.bashrc, ~/.bash_aliases |
starship/ |
.config/starship.toml |
~/.config/starship.toml |
git/ |
.gitconfig |
~/.gitconfig |
alacritty/ |
.config/alacritty/alacritty.toml |
~/.config/alacritty/alacritty.toml |
Helper scripts in scripts/:
| Script | Purpose |
|---|---|
install_starship.sh |
Installs Starship binary to ~/.local/bin |
install_nerd_font.sh |
Installs JetBrainsMono Nerd Font to ~/.local/share/fonts |
install_alacritty.sh |
Installs Alacritty via system package manager |
starship_palette.sh |
Switch Starship color palette (run with --help for options) |
The Starship config includes multiple built-in color palettes. Switch with:
./scripts/starship_palette.sh <palette>Available: pastel, ocean, sunset, forest, cyberpunk, monochrome, dracula, nord, gruvbox, tokyo-night, berry, lava
~/.bashrc_local is copied from templates/bashrc_local on first install — it is not symlinked. Edit it freely for machine-specific paths (CUDA, NVM, Bun, etc.). It won't be overwritten on re-runs.
The --cuda flag appends CUDA path setup to ~/.bashrc_local automatically.
- Create a directory named after the package (e.g.
vim/) - Mirror the home directory structure inside it (e.g.
vim/.vimrc) - Add the package name to the
PACKAGESarray ininstall.sh - Add the config files to the backup list in
install.sh - Run
./install.sh --only stow