Skip to content

chafilin/dotfiles

Repository files navigation

Modern Dotfiles

A blazingly fast, modern development environment built from scratch with performance and developer experience in mind.

Philosophy

  • Speed First: Shell loads in <50ms, every tool optimized for performance
  • Modern Tools: Rust-based replacements, GPU-accelerated terminal, async everything
  • Zero Conflicts: Carefully designed keybindings across all layers
  • Beautiful: Catppuccin Macchiato theme everywhere
  • Productive: AI assistance, smart navigation, fuzzy everything

The Stack

Category Tool Why
Shell Zsh + Antidote Fast plugin manager, no OMZ bloat
Prompt Starship Rust-based, 5-10ms overhead
History Atuin SQLite-based, searchable, sync-able
Terminal Ghostty Modern, GPU-accelerated, Zig-based
Multiplexer Zellij Rust-based, better UX than tmux
Editor Neovim + LazyVim Fast, extensible, modern plugins
Versions Mise Rust-based asdf replacement
Git UI Lazygit Fast TUI for git operations
Git Diff Delta Beautiful syntax-highlighted diffs
Theme Catppuccin Macchiato Consistent across all tools

Features

Shell

  • ⚑ <50ms startup time (vs 200ms+ with Oh My Zsh)
  • πŸ” Atuin history - Full-text search, statistics, optional sync
  • 🌟 Starship prompt - Shows git status, language versions, execution time
  • πŸš€ Modern CLI tools: eza, bat, fd, ripgrep, zoxide, and more
  • πŸ“¦ Smart completions - fzf-tab for fuzzy tab completion

Terminal & Multiplexer

  • πŸ–₯️ Ghostty - Latest terminal tech, GPU-accelerated
  • 🧩 Zellij - Modern multiplexer with Alt-key bindings (no conflicts!)
  • 🎨 Catppuccin theme - Beautiful, easy on the eyes

Editor (Neovim)

  • πŸ“Œ Harpoon - Lightning-fast file bookmarking
  • ⚑ Flash.nvim - Jump anywhere with 2-3 keystrokes
  • 🎨 Conform.nvim - Modern async formatting
  • πŸ”§ Enhanced LSP - Full IDE features, fast
  • πŸ“Š Trouble - Better diagnostics and quickfix

Git

  • 🎨 Delta - Beautiful side-by-side diffs with syntax highlighting
  • 🎯 Lazygit - Full-featured TUI for complex operations
  • πŸ“ Gitsigns - Inline git status, hunk operations
  • πŸ”€ Diffview - Advanced diff and merge tool

Installation

Fresh System

# Clone with submodules
git clone --recurse-submodules https://github.com/YOUR_USERNAME/dotfiles.git ~/dotfiles
cd ~/dotfiles

# Run full setup
sh ./scripts/install.sh

The installer will:

  1. Install Homebrew and all tools
  2. Interactively stow configurations
  3. Optionally install language tools
  4. Set up everything automatically

Existing System

# Update tools
sh ./scripts/brew.sh

# Stow specific configs
stow -t ~/. zsh
stow -t ~/. nvim
stow -t ~/. git
stow -t ~/. starship
stow -t ~/. atuin
stow -t ~/. ghostty
stow -t ~/. zellij

Structure

dotfiles/
β”œβ”€β”€ atuin/          # Modern shell history
β”œβ”€β”€ git/            # Git config with delta
β”œβ”€β”€ ghostty/        # Terminal configuration
β”œβ”€β”€ nvim/           # Neovim + LazyVim
β”œβ”€β”€ scripts/        # Installation scripts
β”‚   β”œβ”€β”€ brew.sh     # All tools installation
β”‚   β”œβ”€β”€ install.sh  # Main installer
β”‚   β”œβ”€β”€ stow.sh     # Interactive stow
β”‚   β”œβ”€β”€ langs.sh    # Language tools
β”‚   └── cleanup.sh  # Uninstall script
β”œβ”€β”€ starship/       # Prompt configuration
β”œβ”€β”€ tmux/           # Tmux (optional)
β”œβ”€β”€ zellij/         # Zellij multiplexer
└── zsh/            # Zsh with Antidote
    β”œβ”€β”€ .zshrc      # Main config
    └── .zsh_plugins.txt  # Plugin list

Keybindings

No conflicts by design! Each tool uses distinct modifier keys:

  • Ghostty: Cmd (macOS) for terminal operations
  • Zellij: Alt (Option) exclusively for multiplexer
  • Neovim: Space leader + Ctrl combinations

See KEYBINDINGS.md for complete reference.

Quick Reference

Zellij (Multiplexer)

  • Alt+P β†’ Pane mode
  • Alt+T β†’ Tab mode
  • Alt+H/J/K/L β†’ Navigate panes
  • Alt+N β†’ New pane

Neovim (Editor)

  • Space β†’ Leader key
  • Ctrl+H/J/K/L β†’ Navigate windows
  • <leader>ff β†’ Find files
  • <leader>a β†’ Add to Harpoon
  • s β†’ Flash jump

Shell

  • Ctrl+R β†’ Search history (Atuin)
  • Ctrl+T β†’ Find files (fzf)

Modern CLI Tools

All Rust-based for maximum performance:

ls      β†’ eza        # Better ls with git integration
cat     β†’ bat        # Syntax highlighting
find    β†’ fd         # Simpler, faster
grep    β†’ ripgrep    # Faster, smarter
cd      β†’ zoxide     # Smart cd with frecency
top     β†’ bottom     # Better system monitor
du      β†’ dust       # Visual disk usage
df      β†’ duf        # Colorful disk free
sed     β†’ sd         # Simpler syntax

Benchmarks

# Shell startup
zsh-bench          # Should be <50ms

# Neovim startup
nvim --startuptime /tmp/nvim-startup.log +q && cat /tmp/nvim-startup.log

Post-Installation

First Time Setup

  1. Restart your shell

    exec zsh
  2. Configure Git

    git config --global user.name "Your Name"
    git config --global user.email "your@email.com"
  3. Open Neovim - Plugins install automatically

    nvim
  4. Try Zellij

    zellij  # or alias: z
  5. Set up Atuin (optional sync)

    atuin register
    atuin sync

Language Tools (Mise)

# Install Node.js
mise install node@20
mise use -g node@20

# Install Python
mise install python@3.12
mise use -g python@3.12

# Install Go
mise install go@latest
mise use -g go@latest

# List installed
mise ls

# List available versions
mise ls-remote node

Customization

Theme

All tools use Catppuccin Macchiato. To change:

  • Ghostty: Edit ghostty/.config/ghostty/config
  • Zellij: Edit zellij/.config/zellij/config.kdl
  • Neovim: Edit nvim/.config/nvim/lua/plugins/theme.lua
  • Starship: Edit starship/.config/starship.toml

Plugins

Zsh: Edit zsh/.zsh_plugins.txt Neovim: Add files to nvim/.config/nvim/lua/plugins/

Aliases

Edit zsh/.zshrc - look for the "Aliases" section.

Cleanup & Uninstall

To remove dotfiles configurations:

# Run cleanup script
sh ./scripts/cleanup.sh

The cleanup script will:

  • Unstow all configurations (interactive)
  • Remove cache files and generated data
  • Optionally uninstall Homebrew packages
  • Clean up shell and editor state

Note: This is interactive and safe - you'll be prompted for each step.

Troubleshooting

Zsh plugins not loading

# Regenerate plugin bundle
antidote bundle < ~/.zsh_plugins.txt > ~/.zsh_plugins.zsh

Slow shell startup

# Enable profiling in .zshrc
zmodload zsh/zprof
# ... (at end of .zshrc)
zprof

Neovim plugins not working

# In Neovim
:Lazy sync
:checkhealth

Starship not showing

# Check if starship is in PATH
which starship

# Reinstall
brew reinstall starship

What's Different from Traditional Setups?

No Oh My Zsh

  • OMZ adds 100-200ms to shell startup
  • Antidote loads plugins in parallel, much faster
  • Manual configuration gives you full control

Mise instead of asdf

  • Written in Rust (asdf is bash - slow)
  • Drop-in replacement, same commands
  • Faster tool installation and switching

Zellij instead of Tmux

  • More intuitive UI and keybindings
  • Better defaults
  • Written in Rust, actively developed
  • No conflicts with Neovim by using Alt keys

Modern CLI Tools

  • All Rust-based: faster, safer, better UX
  • eza, bat, fd, rg, zoxide, delta - all provide better output and performance
  • But kept compatible (aliases maintain familiar commands)

Performance Targets

  • βœ… Zsh startup: <50ms
  • βœ… Neovim startup: <100ms
  • βœ… Starship prompt: <10ms
  • βœ… All tools: Instant response

Credits

Built on the shoulders of giants:

License

MIT - Feel free to use and modify!

About

Personal dotfiles

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •