A modern, cross-platform dotfiles configuration for developers that works seamlessly on macOS and Linux.
- Shell: Zsh with Oh My Zsh and Starship prompt (Catppuccin Powerline preset)
- Editor: Vim with modern plugins via vim-plug + Neovim configuration
- Terminal: Tmux with custom configuration, plugins, and seamless vim integration
- Git: Enhanced Git configuration with delta diff viewer and useful aliases
- Modern CLI Tools: bat, ripgrep, fd, fzf, eza for enhanced productivity
- Development: ESLint, Prettier, EditorConfig, and language-specific configs
- Cross-platform: Automatic OS detection and package management
- Modern tooling: Delta, Starship, syntax highlighting, and auto-suggestions
- VS Code: Settings and recommended extensions
- Themes: Consistent Catppuccin theme across all tools
git clone https://github.com/agoconcept/dotfiles.git ~/.dotfiles && cd ~/.dotfiles && ./install.sh# Clone the repository
git clone https://github.com/agoconcept/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
# Run the installation
./install.sh- Zsh with Oh My Zsh framework
- Starship prompt with Catppuccin Powerline preset
- Delta for enhanced git diffs
- Bat - modern cat replacement with syntax highlighting
- Ripgrep - faster grep alternative
- Fd - modern find replacement
- Fzf - fuzzy finder for files and commands
- Eza - modern ls replacement with git integration
- Vim-plug for vim plugin management
- Tmux Plugin Manager with curated plugins
- Zsh plugins: autosuggestions and syntax highlighting
- All dotfiles symlinked to appropriate locations
- macOS: Homebrew (auto-installed if missing)
- Linux: apt-get, dnf, or pacman (auto-detected)
- macOS (Intel and Apple Silicon)
- Ubuntu/Debian Linux
- Fedora/RHEL Linux
- Arch Linux
If you prefer to install components individually or the automatic script fails:
# Clone the repository
git clone https://github.com/agoconcept/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
# Create symlinks manually
ln -sf ~/.dotfiles/zsh/zshrc ~/.zshrc
ln -sf ~/.dotfiles/git/gitconfig ~/.gitconfig
ln -sf ~/.dotfiles/tmux/tmux.conf ~/.tmux.conf
ln -sf ~/.dotfiles/vim/vimrc ~/.vimrc
# ... etc-
Install a Nerd Font from Nerd Fonts
- Recommended: FiraCode Nerd Font, JetBrains Mono Nerd Font, or Sauce Code Pro
- Required for proper Starship prompt display
-
Configure Git with your information:
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
-
Restart your terminal or source the new configuration:
source ~/.zshrc
- Install additional development tools:
# FZF (fuzzy finder) - if not auto-installed git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install
| Tool | Config File | Description |
|---|---|---|
| Zsh | zsh/zshrc |
Shell configuration with Oh My Zsh and plugins |
| Zsh | zsh/aliases.zsh |
Modern shell aliases and shortcuts |
| Starship | starship/starship.toml |
Modern prompt configuration (auto-generated) |
| Git | git/gitconfig |
Git aliases, settings, and delta integration |
| Git | git/gitconfig_delta |
Delta-specific configuration for enhanced diffs |
| Tmux | tmux/tmux.conf |
Terminal multiplexer with plugins and themes |
| Vim | vim/vimrc |
Vim editor with modern plugins |
| Neovim | nvim/init.lua |
Neovim configuration in Lua |
| SSH | ssh/config |
SSH client configuration |
| Bat | bat/config |
Modern cat replacement configuration |
| Ripgrep | ripgrep/.ripgreprc |
Modern grep configuration |
| FZF | fzf/.fzf.zsh |
Fuzzy finder configuration and key bindings |
| VS Code | vscode/settings.json |
VS Code editor settings |
| VS Code | vscode/extensions.txt |
Recommended VS Code extensions |
| EditorConfig | editorconfig/.editorconfig |
Cross-editor coding style |
| ESLint | eslint/.eslintrc.js |
JavaScript/TypeScript linting rules |
| Prettier | prettier/.prettierrc |
Code formatting configuration |
| Python | python/.pythonrc |
Enhanced Python REPL configuration |
| Node.js | node/.npmrc |
NPM configuration and defaults |
| Rust | rust/config.toml |
Cargo configuration |
| Docker | docker/.dockerignore |
Docker ignore template |
| Homebrew | homebrew/Brewfile |
macOS package management |
git d- Enhanced diff with deltagit dt- Diff tool (vimdiff) for side-by-side editinggit ll- Beautiful log with graphgit st- Short statusgit fpush- Force push with lease (safer)
- Starship prompt with git status, language versions, and more
- Zsh autosuggestions based on history
- Syntax highlighting for commands
- Vi mode for command line editing
- Tmux integration with seamless vim navigation
- Modern plugin manager (vim-plug)
- Git integration (fugitive, gitgutter)
- File navigation (CtrlP, NERDTree alternatives)
- Syntax checking and code completion
- Tmux navigation integration
- bat -
catwith syntax highlighting and git integration - ripgrep -
grepthat's faster and more user-friendly - fd -
findalternative that's simpler and faster - fzf - fuzzy finder for files, commands, and history
- eza -
lsreplacement with git status and icons - delta - enhanced git diffs with syntax highlighting
Install all recommended tools at once:
brew bundle --file=~/.dotfiles/homebrew/BrewfileInstall recommended extensions:
cat ~/.dotfiles/vscode/extensions.txt | xargs -L 1 code --install-extensionAfter installation, install tmux plugins:
# In tmux, press prefix + I (usually Ctrl-a + I)
# Or run:
~/.tmux/plugins/tpm/bin/install_pluginsCtrl-T- Find filesCtrl-R- Search command historyAlt-C- Change directory
The configuration includes smart aliases that use modern tools when available:
cat→bat(if installed)grep→ripgrep(if installed)find→fd(if installed)ls→eza(if installed)
- Create a new directory:
mkdir newtool - Add your config file:
newtool/config - Update
install.shto create the symlink - Test the installation
All configurations are modular. Edit files in their respective directories and changes are reflected immediately (or after restarting the application).
Copy development tool configs to your projects:
# Copy to a JavaScript project
cp ~/.dotfiles/eslint/.eslintrc.js ~/my-project/
cp ~/.dotfiles/prettier/.prettierrc ~/my-project/
cp ~/.dotfiles/editorconfig/.editorconfig ~/my-project/- Lazy loading of plugins and tools
- Optimized history settings for large histories
- Smart aliases that only activate when tools are available
- Safe rm/cp/mv aliases with confirmation prompts
- SSH configuration with security best practices
- Git configuration with safe force-push (
--force-with-lease) - Comprehensive .gitignore to prevent credential leaks
- Telemetry disabled in VS Code configuration
- No tracking in shell or editor configurations
- Local-first approach - all configurations stored locally
Homebrew installation fails on macOS:
# Install Homebrew manually
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Package manager not supported:
# Install packages manually, then run:
./install.shZsh not loading properly:
# Reset zsh configuration
rm ~/.zshrc
ln -sf ~/.dotfiles/zsh/zshrc ~/.zshrc
source ~/.zshrcVim plugins not working:
# Reinstall vim plugins
vim +PlugInstall +qallTmux plugins not loading:
# Plugins are installed automatically during setup
# If you need to reinstall manually:
rm -rf ~/.tmux/plugins
./install.sh # This will reinstall tmux pluginsModern CLI tools not working:
# Check which tools are installed
which bat rg fd fzf eza delta
# Install missing tools manually or re-run install scriptTo remove all dotfiles symlinks:
./uninstall.shThis will safely remove all symlinks while preserving your original files (which were backed up during installation).
Git delta not working:
# Check if delta is installed
which delta
# If not, install manually:
# macOS: brew install git-delta
# Linux: cargo install git-deltaStarship prompt not showing:
# Check if starship is installed
which starship
# Install manually if needed:
curl -sS https://starship.rs/install.sh | shPrompt symbols not displaying correctly:
- Install a Nerd Font from nerdfonts.com
- Set your terminal to use the Nerd Font
- Restart your terminal
# Test zsh config syntax
zsh -n ~/.dotfiles/zsh/zshrc
# Test vim config
vim -c "source ~/.dotfiles/vim/vimrc" -c "q"
# Test git config
git config --list- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Test on both macOS and Linux if possible
- Update documentation if needed
- Submit a pull request
MIT License - feel free to use and modify as needed.
Note: This configuration is opinionated and reflects personal preferences. Feel free to fork and customize to your needs!