A carefully curated collection of configuration files for a modern, productive development environment
This dotfiles repository transforms your terminal into a powerful, beautiful, and efficient development environment. All configurations are managed through GNU Stow for easy symlink management.
| Tool | Purpose | Benefits |
|---|---|---|
| π Neovim | Modern text editor | Lightning-fast editing with LSP support |
| β Starship | Cross-shell prompt | Beautiful, informative prompt with git integration |
| π FZF | Fuzzy finder | Blazing fast file/command searching |
| π Zoxide | Smart cd command | Jump to directories with intelligent frequency ranking |
| π¨ Eza | Modern ls replacement | Colorful, tree-view file listings |
| π¦ Bat | Cat with wings | Syntax highlighting and git integration |
| π Fastfetch | System info | Beautiful system information display with custom images |
| π Lolcat | Rainbow text | Add some fun to your terminal output |
- Python: Managed with
pyenvandpyenv-virtualenv - Node.js: Managed with
nvm - Rust: Full toolchain with
rustup - Java: Managed with
SDKMAN!(macOS) - AI Tools:
aider-chat,claude-cli,claude-code, andollamaintegration
Personal + work profiles managed in .claude/, mirroring the OpenCode setup:
# Pick a profile (creates symlink ~/.claude/settings.json β dotfiles)
~/dotfiles/.claude/use-profile.sh personal # or `work`
# Install MCP servers (idempotent, safe to re-run)
~/dotfiles/.claude/install-mcps.sh # personal MCPs
~/dotfiles/.claude/install-mcps.work.sh # work MCPs (gitignored)
# Shell aliases (loaded from .zshrc)
ccp # switch to personal profile
ccw # switch to work profile
ccstatus # show which profile is activeSubagents in .claude/agents/ (code-reviewer, adversarial-reviewer, git-pick) are auto-discovered. The work settings file and work MCP installer are gitignored.
- Tokyo Night theme across all applications
- Consistent color scheme for terminal, editor, and tools
- Custom Starship prompt with gradient colors
- Beautiful ASCII art and system info on startup
- macOS: Xcode Command Line Tools
- Ubuntu: Build essentials and curl
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles
cd ~/dotfiles
./setup.shThe setup script will:
- π¦ Install all dependencies based on your OS
- π Create symlinks using GNU Stow
- βοΈ Configure shell and tools
- π Set up your development environment
If you prefer to install step by step:
# Install GNU Stow
# macOS
brew bundle
# Dump new file
brew bundle dump
# Install standalone package
brew install stow
# Ubuntu
sudo apt install stow
# Clone and setup
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles
cd ~/dotfiles
stow .dotfiles/
βββ bin/ # π§ Custom binaries and scripts
βββ .config/
β βββ nvim/ # π Neovim configuration
β βββ kitty/ # π± Terminal emulator
β βββ starship.toml # β Shell prompt
β βββ bat/ # π¦ Syntax highlighter
β βββ eza/ # π File listing
β βββ fastfetch/ # π System info with custom image
β βββ lazygit/ # πΏ Git TUI
β βββ yazi/ # π File manager
β βββ zellij/ # π² Terminal multiplexer
βββ .zshrc # π Shell configuration
βββ .gitconfig # π Git settings
βββ setup.sh # π οΈ Installation script
The .zshrc includes many useful aliases:
# System updates
update # Update package manager (brew/apt)
# File operations
ll # Detailed file listing with eza
la # All files including hidden
tree # Directory tree view
# Fastfetch shortcuts
ff # Quick fastfetch with custom config and image
fastfetch # Function that handles zellij compatibility
# Git shortcuts
gs # git status
ga # git add
gc # git commit
gp # git pushKey environment variables are configured:
EDITOR="nvim"- Default editorAIDER_EDITOR="nvim"- AI coding assistant editorMANPAGER="nvim +Man!"- Use Neovim for man pages
Fastfetch renders a custom image logo natively via the kitty graphics protocol. Uses the stock Homebrew fastfetch (the vendored custom-compiled binary was removed); image decoding comes from the ImageMagick support already bundled in that build.
- Custom Image Display: Shows your custom image (
~/.config/nvim/assets/rosie-3-brutus.png) instead of the default OS logo - Zellij Image Rendering: Native kitty graphics protocol (zellij >= 0.45), true pixels rather than ASCII approximation
kitty-directtransmission: fastfetch sends the file path instead of base64-inlining the PNG (214 bytes vs ~4.5 MB per shell start)
# Quick fastfetch with your custom config
ff
# Standard fastfetch
fastfetch --config "$HOME/dotfiles/.config/fastfetch/config.jsonc"Zellij 0.45.0 implements the kitty graphics protocol, so images render natively inside panes and survive scroll/move/resize/stack. Requirements:
- Zellij >= 0.45.0 and a host terminal that speaks the protocol (WezTerm)
- fastfetch >= 2.61 - the old
getenv("ZELLIJ")block on image logos was removed upstream; onlyTERM=screendisables images now - imagemagick - fastfetch dlopens it to decode/scale the PNG
The logo type is kitty-direct (was sixel). No env-var stripping wrapper is
needed: the previous fastfetch() shell function, bin/fastfetch-zellij, and
the vendored fastfetch 2.60 binary were all removed.
--pipe false is required (baked into the ff alias). fastfetch disables image
logos when it thinks output is not a TTY and silently falls back to the built-in
ASCII art; the flag forces image output.
Verified against zellij 0.45 by querying the protocol directly:
| Query | Zellij response | Meaning |
|---|---|---|
\e[>q (XTVERSION) |
Zellij(4500) |
identifies as zellij, not the host term |
\e_Ga=q,t=d,... |
OK |
kitty graphics supported |
\e_Ga=q,t=f,... |
OK |
file-path transmission supported (kitty-direct) |
\e_Ga=T,U=1,... |
ENOTSUPPORTED |
unicode placeholders not supported |
Your fastfetch config (~/.config/fastfetch/config.jsonc) includes:
- Custom image path rendered via the kitty graphics protocol
- Tokyo Night color scheme integration
- Optimized layout for your terminal setup
# Remove existing symlinks
stow -D .
# Clean up conflicting files
rm ~/.zshrc ~/.gitconfig
# Recreate symlinks
stow .# Make zsh default shell
chsh -s $(which zsh)
# Reload shell configuration
source ~/.zshrc# Re-run setup script
./setup.sh
# Or install specific tools manually
brew install nvim starship zoxide fzf eza bat # macOS
sudo apt install neovim zsh git curl # Ubuntu# Clear Neovim cache
rm -rf ~/.local/share/nvim
rm -rf ~/.cache/nvim
# Reinstall plugins
nvim +Lazy# Reinstall FZF
~/.fzf/install --all
# Or via package manager
brew reinstall fzf # macOS# Check if running in zellij (should show custom image)
ff
# Confirm versions support native kitty graphics
zellij --version # need >= 0.45.0
fastfetch --version # need >= 2.61
# Verify image file exists
ls -la ~/.config/nvim/assets/rosie-3-brutus.png
# Check fastfetch can decode images
fastfetch --list-features
# Should show: imagemagick7- Check the troubleshooting section
- Review tool-specific documentation in
.config/ - Open an issue with your system info and error message
- Smart Navigation: Jump to any directory with
z <partial-name> - Fuzzy Everything: Find files, commands, and history with
Ctrl+R,Ctrl+T - Git Integration: Visual git status in prompt, easy git commands
- AI Assistance: Integrated AI tools for coding help
- Consistent Theming: Tokyo Night everywhere
- Rich File Listings: Icons, colors, and git status in file lists
- Beautiful Prompt: Multi-line prompt with git, time, and system info
- Syntax Highlighting: Code highlighting in terminal and editor
- Fast Startup: Optimized shell configuration
- Lazy Loading: Plugins and tools load only when needed
- Smart Caching: Reduced redundant operations
Feel free to fork this repository and customize it for your needs! If you have improvements or fixes, pull requests are welcome.
This project is licensed under the MIT License - see the LICENSE file for details.
Happy Coding! π
Made with β€οΈ and lots of β


