Cross-platform dotfiles managed with GNU Stow — macOS, Arch Linux, and Windows.
- Multi-platform — one repo for macOS, Arch Linux, and Windows
- GNU Stow — declarative symlink management with
dot-prefix convention - Catppuccin Macchiato — consistent theme across 9+ tools
- Lazy-loaded shell — fast Zsh startup with deferred nvm/pyenv/jenv loading
- AI-augmented — Claude Code skills, hooks, MCP servers, and Copilot integration
- 60+ CLI tools — curated Brewfile with modern replacements for classic Unix tools
- Session persistence — tmux-resurrect + tmux-continuum survive reboots
- Security — gitleaks pre-commit hook, Bitwarden CLI, rclone cloud backup
| Tool | Description |
|---|---|
| Ghostty | GPU-accelerated terminal emulator |
| Zsh + Oh-My-Zsh | Shell with plugins (autosuggestions, syntax highlighting) |
| Starship | Cross-shell prompt |
| atuin | Shell history database with fuzzy search |
| direnv | Per-directory environment variables |
| fzf-tab | Fuzzy tab completion for zsh |
| Nushell | Structured data shell (secondary) |
| Tool | Description |
|---|---|
| Neovim | Primary editor — lazy.nvim, LSP, DAP, Telescope, Treesitter |
| VSCode | GUI editor with synced settings |
| Tool | Description |
|---|---|
| tmux | Session management with TPM, resurrect, continuum, fzf integration |
| Classic | Replacement | Description |
|---|---|---|
ls |
eza | Modern ls with icons and git status |
cat |
bat | Syntax-highlighted cat |
cd |
zoxide | Smarter cd with frecency |
find |
fd | Simpler, faster find |
grep |
ripgrep | Faster grep |
top |
btop | Resource monitor |
git (TUI) |
lazygit | Terminal UI for git |
| — | fzf | Fuzzy finder for everything |
Ctrl+R |
atuin | Shell history with fuzzy search, sync, per-directory filtering |
| — | television | TUI data browser (git, docker, brew, sessions) |
| — | glow | Terminal markdown renderer |
| — | fastfetch | System info |
| Tool | Purpose |
|---|---|
| Docker | Containers |
| k9s | Kubernetes TUI |
| Postman | API testing |
| nvm / pyenv / jenv / chruby | Version managers (Node, Python, Java, Ruby) |
| rustup | Rust toolchain |
| Go, Lua | Additional languages |
| uv | Python package manager |
| bun | JavaScript runtime & bundler |
| Tool | Purpose |
|---|---|
| Claude Code | AI coding assistant with custom skills & hooks |
| Tool | Purpose |
|---|---|
| Karabiner-Elements | Keyboard customization |
| Hammerspoon | macOS automation |
| AltTab | Windows-style alt-tab |
| BoringNotch | Notch utility |
| pam-reattach | Touch ID in tmux |
| Tool | Purpose |
|---|---|
| Bitwarden CLI | Password management |
| gitleaks | Pre-commit secret scanning |
| rclone | Cloud storage sync |
A consistent Catppuccin Macchiato theme applied across:
- Ghostty
- Neovim
- tmux
- Starship prompt
- Zsh syntax highlighting
- fzf
- bat
- btop
- lazygit
- atuin
- television
- glow
- VSCode
git clone https://github.com/Raphael67/dotfiles.git ~/Projects/dotfiles
cd ~/Projects/dotfiles
./setup_macos.sh # Xcode CLI, Homebrew, Brewfile, oh-my-zsh, stowgit clone https://github.com/Raphael67/dotfiles.git ~/Projects/dotfiles
cd ~/Projects/dotfiles
./setup_archlinux.sh # pacman packages, oh-my-zsh, zsh plugins.\setup_windows.ps1 # Full setup
.\setup_windows.ps1 -SkipApps # Skip Chocolatey packages
.\setup_windows.ps1 -SkipWSL # Skip WSL configurationAfter any setup script, apply symlinks:
stow .This repo uses GNU Stow with a dot- prefix convention.
- Source files live in
dotfiles/— e.g.,dotfiles/dot-zshrc - Stow creates symlinks in
~/— e.g.,~/.zshrc → dotfiles/dot-zshrc - The
dot-prefix is converted to.automatically - Configuration in
.stowrc:
--dir=./dotfiles
--target=~/
--dotfiles
--ignore='\.DS_Store'
Always run stow . from the repo root, never stow <package>.
Zsh loads fast thanks to lazy loading of version managers:
# nvm, pyenv, and jenv are NOT loaded at shell startup.
# They initialize on first use of node/npm/python/java commands.
# This keeps shell startup under ~200ms.
| Alias | Command | Description |
|---|---|---|
ls |
eza |
Icons, git status, grouped dirs |
cat |
bat |
Syntax highlighting |
lg |
lazygit |
Git TUI |
v / vi |
nvim |
Neovim |
g |
git |
Git shorthand |
gs |
git status |
Status |
gc |
git commit |
Commit |
gp |
git push |
Push |
gap |
git add --patch |
Interactive staging |
gqc |
quick commit | Auto-prepends ticket ID from branch |
c |
clear |
Clear terminal |
e |
exit |
Exit shell |
More aliases
| Alias | Command |
|---|---|
ga |
git add |
gco |
git checkout |
gd |
git diff |
gds |
git diff --staged |
gl |
git log --graph (pretty) |
gf |
git fetch |
gb |
git branch |
gm |
git merge |
gup |
git pull --rebase |
gafzf |
fzf-powered git add |
gcofzf |
fzf-powered branch checkout |
r |
ranger |
Plugin manager: lazy.nvim — plugins load on demand.
Highlights:
- LSP + blink.cmp — language servers with ghost text completion, fuzzy matching
- DAP — debug adapter protocol
- Telescope — fuzzy finder for files, grep, buffers
- Treesitter — syntax highlighting and code objects
- Neo-tree — file explorer
- Harpoon — quick file navigation
- Aerial — symbol outline
- Gitsigns — inline git blame/hunks
- Bufferline — tab-style buffer management
- Lualine — statusline
- vim-tmux-navigator — seamless tmux/nvim pane switching
- mini.surround — add/delete/replace surroundings (quotes, brackets, tags)
- flash.nvim — label-based motions and jumps
- noice.nvim — floating cmdline, notifications, LSP UI
- Claude + Copilot — AI code assistance
Plugins (via TPM):
- tmux-resurrect — save/restore sessions across reboots
- tmux-continuum — auto-save every 15 min, auto-restore on start
- tmux-fzf — fzf integration for sessions, windows, panes
- tmux-fzf-url — open URLs from scrollback with fzf
- tmux-yank — clipboard integration
- tmux-cpu / tmux-battery — status bar widgets
- tmux-sessionx — fuzzy session manager with zoxide integration
- tmux-floax — floating popup panes
- vim-tmux-navigator — seamless Ctrl+h/j/k/l across tmux/nvim
- catppuccin/tmux — themed status bar
This repo includes a full Claude Code setup deployed via stow to ~/.claude/:
- 14+ custom skills — dotfiles management, document generation (docx, xlsx, pptx, pdf), visual assets, browser automation, prompt engineering, and more
- Damage control hooks — safety hooks that review Bash, Edit, and Write tool calls against destructive patterns
- MCP servers — Atlassian, Playwright, Context7 (library docs), iCal, and more
- Custom commands — context priming, parallel agent orchestration
Copy Ghostty terminal info to remote servers:
infocmp -x xterm-ghostty | ssh user@server 'tic -x -'If Karabiner-Elements stops working after a macOS update, see: karabiner-elements#3620
Built with GNU Stow, Catppuccin, lazy.nvim, TPM, and Oh-My-Zsh.