Skip to content

Raphael67/dotfiles

Repository files navigation

🏠 dotfiles

Cross-platform dotfiles managed with GNU Stow — macOS, Arch Linux, and Windows.

macOS Arch Linux Windows

Features

  • 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

What's Inside

Terminal & Shell

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)

Editor

Tool Description
Neovim Primary editor — lazy.nvim, LSP, DAP, Telescope, Treesitter
VSCode GUI editor with synced settings

Terminal Multiplexer

Tool Description
tmux Session management with TPM, resurrect, continuum, fzf integration

CLI Replacements

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

Dev Tools

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

AI Tools

Tool Purpose
Claude Code AI coding assistant with custom skills & hooks

macOS Extras

Tool Purpose
Karabiner-Elements Keyboard customization
Hammerspoon macOS automation
AltTab Windows-style alt-tab
BoringNotch Notch utility
pam-reattach Touch ID in tmux

Security & Backup

Tool Purpose
Bitwarden CLI Password management
gitleaks Pre-commit secret scanning
rclone Cloud storage sync

🎨 Catppuccin Macchiato

A consistent Catppuccin Macchiato theme applied across:

  • Ghostty
  • Neovim
  • tmux
  • Starship prompt
  • Zsh syntax highlighting
  • fzf
  • bat
  • btop
  • lazygit
  • atuin
  • television
  • glow
  • VSCode

Installation

macOS

git clone https://github.com/Raphael67/dotfiles.git ~/Projects/dotfiles
cd ~/Projects/dotfiles
./setup_macos.sh    # Xcode CLI, Homebrew, Brewfile, oh-my-zsh, stow

Arch Linux / WSL

git clone https://github.com/Raphael67/dotfiles.git ~/Projects/dotfiles
cd ~/Projects/dotfiles
./setup_archlinux.sh    # pacman packages, oh-my-zsh, zsh plugins

Windows (PowerShell as Admin)

.\setup_windows.ps1                   # Full setup
.\setup_windows.ps1 -SkipApps        # Skip Chocolatey packages
.\setup_windows.ps1 -SkipWSL         # Skip WSL configuration

After any setup script, apply symlinks:

stow .

How It Works

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>.

Shell Performance

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.

Key Aliases

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

Neovim

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

tmux

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

Claude AI Integration

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

Tips

Ghostty SSH terminfo

Copy Ghostty terminal info to remote servers:

infocmp -x xterm-ghostty | ssh user@server 'tic -x -'

Karabiner troubleshooting

If Karabiner-Elements stops working after a macOS update, see: karabiner-elements#3620

Inspired By

Built with GNU Stow, Catppuccin, lazy.nvim, TPM, and Oh-My-Zsh.


Buy Me A Coffee

About

My dotfiles

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors