A comprehensive configuration setup for macOS development environments, featuring Fish shell configuration, Neovim (NvChad), tmux, and modern development tools.
- Shell Setup: Fish shell with powerful aliases, abbreviations, and functions
- Editor: Neovim with NvChad configuration and modular plugin architecture
- Terminal Multiplexer: tmux with Catppuccin theme and Warp AI integration
- Development Tools: fzf, ripgrep, bat, eza, fd, lazygit, and more
- Git Integration: Enhanced git workflow with lazygit and useful aliases
- Package Management: Homebrew integration with curated package list
- Utilities: Weather scripts, tmux sessionizer, and development helpers
curl -fsSL https://raw.githubusercontent.com/lgarest/dotfile/main/install.sh | bash-
Clone the repository:
git clone https://github.com/lgarest/dotfile.git cd dotfile -
Run the installer:
./install.sh
-
Restart your terminal or source your shell configuration
- Shell: Fish shell with custom configuration
- Editor: Neovim with NvChad and custom plugin organization
- Terminal: Warp (AI-powered terminal)
- Multiplexer: tmux with custom key bindings and plugins
- File Management: eza (modern ls), fd (find alternative), fzf (fuzzy finder)
- Code Search: ripgrep, universal-ctags
- Git Tools: git-delta, lazygit, tig
- Languages: Python (via pyenv), Node.js, Deno
- Package Managers: Homebrew, pnpm, yarn
- Utilities: bat (cat with syntax highlighting), jq, cloc, tree
- Editors: Zed
- API Testing: Insomnia
- Fonts: JetBrains Mono, Meslo LG Nerd Font, Hack Nerd Font
- Utilities: HiddenBar, CakeBrew
dotfile/
├── install.sh # Main installer script
├── manage.sh # Management utility script
├── install/
│ ├── macos.sh # macOS-specific installation
│ └── ubuntu.sh # Ubuntu-specific installation (legacy)
├── config.fish # Fish shell configuration
├── tmux.conf # tmux configuration
├── Brewfile # Homebrew packages and casks
├── nvim-lua2/ # Neovim configuration (NvChad)
│ ├── core/ # Core utilities and keymaps
│ ├── configs/ # Plugin configurations
│ ├── plugins/ # Modular plugin definitions
│ └── options.lua # Neovim options
├── scripts/ # Utility scripts
│ ├── tmux-sessionizer.sh # Quick tmux session management
│ ├── warp-ai-activate.sh # Warp AI integration
│ └── ... # Various utilities
├── my_snippets/ # Personal code snippets
└── docs/ # Documentation
Use the manage.sh script for easy dotfiles management:
# Install dotfiles
./manage.sh install
# Install without backing up existing files
./manage.sh install --skip-backup
# Update dotfiles and packages
./manage.sh update
# Show status of dotfiles and tools
./manage.sh status
# Clean up old backups and broken symlinks
./manage.sh cleanup
# Uninstall dotfiles
./manage.sh uninstall
# Show help
./manage.sh help- Modern Tools: Aliases for eza (ls), bat (cat), and other modern replacements
- Git Abbreviations: Quick git commands (gs, gd, gp, etc.)
- FZF Integration: Fuzzy finding for files, directories, and command history
- Development Helpers: Node.js, Python, and JavaScript specific commands
- Custom Functions: Package.json scripts runner, directory navigation, weather
- Productivity: Smart abbreviations for common development tasks
- Modern Key Bindings: Intuitive navigation and window management
- Plugin System: TPM (Tmux Plugin Manager) with useful plugins
- Theme: Catppuccin theme for beautiful appearance
- Warp AI Integration: Special bindings for Warp terminal AI features
- NvChad Base: Modern Neovim setup with performance optimizations
- Modular Plugins: Organized by category (LSP, editor, git, UI, completion)
- Language Support: LSP configurations for multiple languages
- Plugin Management: Lazy.nvim with optimized lazy loading
- Key Features: Telescope, Treesitter, Git integration, Copilot
- Performance: ~150ms startup time with lazy loading
- Existing dotfiles are automatically backed up before installation
- Backup directory:
~/.dotfiles_backup_YYYYMMDD_HHMMSS - Cleanup command removes backups older than 30 days
- All dotfiles are symlinked, not copied
- Easy to update and maintain
- Broken symlinks are automatically cleaned up
- Automatic OS detection
- Platform-specific package installation
- Consistent experience across macOS and Ubuntu
- Add your configuration file to the dotfiles directory
- Update the appropriate installer script to symlink it
- Add it to the status check in
manage.sh
- macOS: Edit
Brewfileto add/remove Homebrew packages - Ubuntu: Modify the package list in
install/ubuntu.sh
- Fish: Edit
config.fishfor Fish shell customizations - Functions: Fish functions are stored in
~/.config/fish/functions/
The following items exist in the repository but are not actively used:
- Network Tools: bandwhich, wireshark
- Java/JVM: gradle
- Database: postgresql, mysql-client
- System Monitoring: glances, procs, ytop (using htop instead)
- Novelty: cmatrix, sl
- Other: macvim, liquidprompt, watchman
- vimrc: Not present (using Neovim exclusively)
- zshrc: Not present (using Fish shell exclusively)
- Ubuntu support: The ubuntu.sh installer exists but focus is on macOS
-
Permission Denied: Make sure scripts are executable
chmod +x install.sh manage.sh
-
Symlink Conflicts: Use
--skip-backupor manually remove conflicting files -
Package Installation Failures: Check network connection and package manager status
- Check the status:
./manage.sh status - View installation logs:
cat install.log - Check symlinks:
ls -la ~/ | grep -E '\->'
- Open tmux:
tmux - Install plugins:
prefix + I(Ctrl+Space + I)
- Open neovim:
nvim - Install/update plugins:
:Lazy sync
- Restart terminal or source configuration
- For Fish:
source ~/.config/fish/config.fish - For Zsh:
source ~/.zshrc
- Fork the repository
- Create a feature branch
- Add your improvements
- Test on both macOS and Ubuntu if possible
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.