Skip to content

v5-redux: Clean dotfiles rewrite — zsh, git, tmux, ghostty, install.sh#2

Open
davidstosik wants to merge 5 commits intov4from
v5-redux
Open

v5-redux: Clean dotfiles rewrite — zsh, git, tmux, ghostty, install.sh#2
davidstosik wants to merge 5 commits intov4from
v5-redux

Conversation

@davidstosik
Copy link
Owner

@davidstosik davidstosik commented Mar 2, 2026

What is this?

A complete rewrite of the dotfiles, continuing v4's philosophy of radical simplification while bringing back the best from older branches (v1-v3, wip-20241205).

Note: This PR targets v4 because the branch histories diverge. Neovim config lives in a separate PR (#3), and package management via mitamae in PR #4 — both targeting this branch.

Structure

dotfiles/
├── install.sh              # Symlink installer (idempotent)
├── README.md
├── zsh/                    # Shell config
│   ├── zshrc
│   ├── aliases.zsh
│   └── functions.zsh
├── git/                    # Git config
│   ├── gitconfig
│   └── gitignore
├── tmux/                   # tmux config
│   ├── tmux.conf
│   └── tmux.mac.conf
└── config/
    └── ghostty/config      # Ghostty terminal

What was brought back from older branches

From v1-v3:

  • Git aliases: lola (log all), lolg (log graph), addu, br, cp, up, copr (checkout PR)
  • Shell aliases: ls with colors (macOS/Linux), safety aliases (rm -i, cp -i, mv -i), navigation (.., ...)
  • Shell functions: mkcd (mkdir + cd, from v3)
  • tmux: renumber-windows (v1), synchronize-panes toggle (v3)

From wip-20241205:

  • Ruby aliases (be, r, rb)
  • Git aliases (cob, cim, cia, ciam, recent)

From v4 (all preserved):

  • Tokyo Night theme (tmux, ghostty)
  • vpn-fix function
  • Modern git config (histogram diff, zdiff3 merge, rerere, autoSquash, etc.)
  • Ghostty config (Monaspace font, transparency, ligatures)
  • tmux-resurrect, tmux-sessionx
  • mise integration

What was intentionally left out

What Why
LazyVim framework Too much hidden magic, hard to debug (neovim in separate PR #3)
Antigen / oh-my-zsh (v3) Heavy, slow startup, most plugins unused
rbenv (v1-v3) Replaced by mise
nvm (v4) Replaced by mise
The Silver Searcher (v3) Replaced by ripgrep
tmux-sensible Settings ported directly into tmux.conf
tmux-pain-control Replaced by explicit keybindings
tmux-continuum (v1) resurrect alone is enough
Hub (v1-v2) Replaced by gh CLI
base16 colors (v1) Replaced by Tokyo Night
Modular install system (v3, wip) Simpler approach with install.sh
Dockerfile (wip) Unnecessary for personal dotfiles
iCloud sync scripts (wip) Too machine-specific
Scripty (wip) Niche, doesn't belong in dotfiles

Install

git clone https://github.com/davidstosik/dotfiles ~/.dotfiles
cd ~/.dotfiles

# Link dotfiles
./install.sh

Then:

  1. Restart shell (or source ~/.zshrc)
  2. In tmux: C-a I to install plugins

Tip: For package installation, see PR #4 (mitamae).

Commits

Each commit is atomic and self-contained:

  1. feat: zsh — structured config with aliases and functions
  2. feat: git — consolidate config from all branches
  3. feat: tmux — reorganize and cherry-pick improvements
  4. feat: ghostty — move to XDG-standard config location
  5. feat: add install.sh and README

Reorganized zsh configuration from single flat file into:
- zsh/zshrc — main config (history, prompt, completions, tool integrations)
- zsh/aliases.zsh — consolidated aliases from v1-v4 (git, navigation, safety, ruby)
- zsh/functions.zsh — shell functions (mkcd from v3, vpn-fix from v4)

New in this version:
- fzf integration (was in v3 but missing from v4)
- Case-insensitive completion
- Support for ~/.zshrc.local overrides
- Better organized tool integrations (mise, fzf, op, gt)

Preserved from v4:
- Git-aware prompt with staged/unstaged indicators
- Auto-attach to tmux session
- EDITOR=nvim, emacs keybindings in shell
- Shared history between panes

Restored from older branches:
- mkcd function (v3)
- ls color aliases for macOS + Linux (v1)
- Safety aliases: rm -i, cp -i, mv -i (v1)
- Ruby/Rails aliases: be, r, rb (wip-20241205)
- Navigation aliases: .., ..., .... (new)
- Git shortcut aliases: gs, gd, gdc, gl, etc. (new)
Moved git configuration to git/ directory:
- git/gitconfig — comprehensive config merging best of v1-v4
- git/gitignore — global gitignore with .claude, tags

Preserved from v4 (modern git best practices):
- histogram diff algorithm
- zdiff3 merge conflict style
- autoSquash, autoStash, updateRefs for rebase
- fsmonitor + untrackedCache for performance
- push.autoSetupRemote, fetch.prune
- rerere enabled
- Detailed color configuration for status and diff
- column.ui = auto, help.autocorrect = prompt

Restored from older branches:
- lola alias (lol --all --graph) from v1-v3
- lolg alias (lol --graph) from wip-20241205
- addu alias (add -u) from v1-v3
- cp (cherry-pick), br (branch), up (pull) shortcuts from v1-v3
- copr alias for checking out PRs by number from v2-v3
- find-merge alias from v4

Consolidated aliases (kept best version of each):
- pushf uses --force-with-lease (v4, safer than v-wip's --force)
- lol uses --date=auto:human (v4, better than v1's --date=local)
- recent for listing branches by recent commit

Added:
- Support for ~/.gitconfig.local (machine-specific overrides)
- /tags in gitignore (from v3)
Moved tmux config to tmux/ directory:
- tmux/tmux.conf — main config
- tmux/tmux.mac.conf — macOS-specific (pbcopy integration)

Preserved from v4:
- Tokyo Night theme with datetime and battery plugins
- vim-style pane navigation (hjkl)
- Intuitive split bindings (\ and -)
- tmux-resurrect for session persistence
- tmux-sessionx for session switching (C-o)
- Mouse support
- Inactive pane dimming (Tokyo Night colors)
- VI copy mode, emacs command prompt

Cherry-picked from older branches:
- renumber-windows (v1) — auto-renumber when closing windows
- synchronize-panes toggle: prefix+y (v3) — useful for multi-server work

Removed (intentionally):
- tmux-sensible (v1-v3) — ported needed settings directly
- tmux-pain-control (v1-v3) — replaced by explicit bindings
- tmux-continuum (v1) — resurrect alone is sufficient
Moved Ghostty config from flat file to config/ghostty/config.
Install.sh links to the correct platform-specific location:
- macOS: ~/Library/Application Support/com.mitchellh.ghostty/config
- Linux: ~/.config/ghostty/config

No changes to the config itself — preserves v4 settings:
- Tokyo Night theme (light/dark auto-switching)
- Monaspace Argon font with all ligature features
- 90% background opacity
- Shift+Enter for newline
install.sh:
- Idempotent symlink installer (safe to re-run)
- Backs up existing files before overwriting
- Auto-installs TPM (tmux plugin manager) if missing
- Handles Ghostty config path differences (macOS vs Linux)
- Clear post-install instructions
- Colored output for readability

README.md:
- What's included (tools and their config locations)
- Prerequisites
- Install instructions
- Post-install steps
- Local override files explanation
- Full directory structure
- Neovim plugin list
- Design decisions and rationale
@davidstosik davidstosik changed the title v5-redux: Complete dotfiles rewrite — clean, explicit, no frameworks v5-redux: Clean dotfiles rewrite — mitamae for packages, install.sh for links Mar 3, 2026
@davidstosik davidstosik changed the title v5-redux: Clean dotfiles rewrite — mitamae for packages, install.sh for links v5-redux: Clean dotfiles rewrite — zsh, git, tmux, ghostty, install.sh Mar 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant