Skip to content

jesse-spevack/dotfiles

Repository files navigation

Jesse Spevack's Dotfiles

Modern dotfiles managed with GNU Stow for easy installation and maintenance across machines.

What's Included

  • zsh - Zsh shell configuration
  • git - Git configuration and global ignore file
  • tmux - tmux terminal multiplexer with Catppuccin theme
  • nvim - Neovim with LazyVim setup
  • ghostty - Ghostty terminal emulator
  • starship - Cross-shell prompt
  • ssh - SSH client configuration

Prerequisites

Install GNU Stow

macOS:

brew install stow

Linux (Debian/Ubuntu):

sudo apt install stow

Installation

Quick Start (fresh machine)

One command installs Homebrew (if missing), runs brew bundle, installs Oh My Zsh + tpm, adds asdf plugins, and stows everything:

git clone https://github.com/jesse-spevack/dotfiles.git ~/dotfiles
cd ~/dotfiles && ./bootstrap.sh

bootstrap.sh is idempotent — safe to re-run after pulling updates.

Manual install (existing tooling)

  1. Clone this repository:
git clone https://github.com/jesse-spevack/dotfiles.git ~/dotfiles
cd ~/dotfiles
  1. Install dependencies:
brew bundle
  1. Stow all packages:
stow zsh git tmux nvim ghostty starship ssh

Or stow packages selectively:

stow zsh git nvim

Existing Dotfiles

If you already have dotfiles in place, you'll need to back them up or remove them first:

# Backup existing configs
mv ~/.zshrc ~/.zshrc.backup
mv ~/.gitconfig ~/.gitconfig.backup
# etc...

# Then run stow
cd ~/dotfiles
stow zsh git

How GNU Stow Works

GNU Stow creates symlinks from this repo to your home directory. For example:

~/dotfiles/zsh/.zshrc  →  ~/.zshrc
~/dotfiles/nvim/.config/nvim/  →  ~/.config/nvim/

This means you can edit files directly in your home directory, and changes are automatically tracked in the git repo.

Making Changes

  1. Edit your config files as normal (e.g., ~/.zshrc)
  2. Changes are immediately reflected in the repo
  3. Commit and push:
cd ~/dotfiles
git add .
git commit -m "Update zsh config"
git push

Uninstalling

To remove symlinks for a package:

cd ~/dotfiles
stow -D zsh  # Removes zsh symlinks

Setting Up a New Machine

See Quick Start above — ./bootstrap.sh handles it.

After bootstrap completes, finish these manual steps:

  1. Open a new shell so ~/.zshrc loads.
  2. Run nvim once — LazyVim auto-installs plugins.
  3. In tmux, press <prefix> + I to install tpm plugins.
  4. gh auth login (if not done).
  5. ssh-keygen -t ed25519 -C "<email>" and add to GitHub.
  6. asdf install ruby <version> / asdf install nodejs <version> as needed.
  7. Install Ghost-CLI (requires Node.js from step 6): sudo npm install -g ghost-cli@latest (binary is ghost).
  8. Authenticate the CLIs:
    • podread auth login (browser device-code flow)
    • fizzy setup (token + default board) — fizzy is installed to ~/.local/bin/fizzy; make sure that's on $PATH.

Package Structure

Each directory represents a "package" that mirrors your home directory structure:

dotfiles/
├── zsh/
│   └── .zshrc
├── nvim/
│   └── .config/
│       └── nvim/
│           └── init.lua
└── git/
    ├── .gitconfig
    └── .config/
        └── git/
            └── ignore

Notes

  • SSH keys are not tracked (see .gitignore)
  • Generated files like lazy-lock.json are excluded
  • Old dotfiles from previous setup are in old/ directory

Resources

About

Jesse Spevack's Dotfiles

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors