Skip to content

IvanWng97/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

637 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to Ivan's dotfiles 👋

lint bootstrap brewfile MIT License

💻 ghostty, neovim, zsh, tmux, starship, lazygit, homebrew — my whole world

IMG_1059

Initial Setup and Installation

All shell commands manage globally installed packages (Homebrew, npm, pipx, cargo, mas).

The repo lives at ~/dotfiles/ and uses GNU stow to symlink each package into $HOME$HOME itself is not a git working tree.

Fresh Mac

xcode-select --install        # one-time, GUI prompt
git clone https://github.com/IvanWng97/dotfiles.git ~/dotfiles
cd ~/dotfiles && make bootstrap

make bootstrap installs Homebrew + stow, backs up any conflicting files in $HOME to ~/.dotfiles-pre-stow-<timestamp>/, stows the dotfile packages, and runs make install. Pass SKIP_INSTALL=1 to skip the package install step.

Workflows

Command What it does
make bootstrap Fresh-machine setup: brew + stow + symlinks + make install. Idempotent.
make install Installs everything from Backup/Brewfile, Npmfile, Pipfile, Cargofile, Fishfile, plus tpm + plugins.
make install-links Re-run stow to (re)create symlinks under $HOME.
make uninstall-links Remove the symlinks (configs stay safe in ~/dotfiles/).
make relink uninstall-links then install-links — useful after adding a new file to a package.
make symlinks-check Verify every package file has a matching, correctly-resolved symlink in $HOME; reports orphans too. Exits non-zero on issues.
make doctor Run every health check at once: zsh syntax on each script, symlinks-check, Brewfile parses, git working tree clean.
make update Upgrades brew/npm/pipx/cargo/mas/tmux packages and re-dumps Backup/Brewfile so it matches reality.
make backup Re-dumps every package list into Backup/ for committing.

All five scripts (bootstrap, install, update, backup, check-links) live in scripts/ and share a small set of helpers (set -euo pipefail, colored output, per-tool guards).

Stow packages

Each tool gets its own top-level package. All packages stow into $HOME; each one carries the right .config/, .aria2/, etc. structure inside it so stow puts files in the correct XDG location.

~/dotfiles/
  alacritty/.config/alacritty/...
  fish/.config/fish/...
  nvim/.config/nvim/...
  ...                              ← 13 XDG packages
  aria2/.aria2/aria2.conf
  claude/.claude/settings.json
  bash/.bashrc
  czrc/.czrc
  vim/.vimrc  vim/.ideavimrc
  zsh/.zshrc

The Makefile auto-discovers packages (every top-level dir except scripts/, Backup/, .github/, .git/) and runs a single stow -v -t ~ <packages...> call. Run make print-packages to see the current list.

Scripts under scripts/ are written in zsh (#!/usr/bin/env zsh); the lint workflow runs zsh -n on each to catch syntax errors.

Pre-commit hooks (optional)

The same checks the CI runs (gitleaks, actionlint, zsh -n, plus trailing-whitespace / EOF / YAML / merge-conflict) are available as pre-commit hooks. Opt-in per clone:

brew install pre-commit
pre-commit install

Local Settings

Shell

Zsh is the daily driver — kept lean, with eza/zoxide/fzf/bat/starship glue.

Starship handles the prompt — see config.toml.

Editors

Vim Neovim
Main Configuration File ~/.vimrc ~/.config/nvim/init.lua
Configuration directory ~/.vim ~/.config/nvim

Helix is also set up for quick edits.

Multiplexer

Tmux config lives in tmux.conf. Prefix is C-Space; C-h/j/k/l navigates panes (vim-aware), M-h/j/k/l resizes them. Zellij is configured as an alternative.

Terminals

Configs for Ghostty, Kitty, and Alacritty — Ghostty is the daily driver.

Other tools

lazygit, tealdeer, lf, xplr, helix.

Color scheme

Everything is Dracula!

Fonts

JetBrains Mono Nerd Font — installed via the font-jetbrains-mono-nerd-font cask in Backup/Brewfile.

Author

👤 Ivan@IvanWng97

License

MIT — feel free to fork, copy, and rip out whatever's useful.

Show your support

Give a ⭐️ if this project helped you!

About

macOS dotfiles managed with GNU stow — ghostty, neovim, zsh, tmux, starship, lazygit, homebrew

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors