Skip to content

danielsalles/dotfile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 macOS Dotfiles

Modern development environment with Zsh, Oh My Zsh, Starship, LazyVim, and iTerm2

macOS Shell Terminal

✨ Features

  • 🎨 Dracula Theme - Dark theme support for compatible tools
  • ⚡ Fast Shell - Optimized plugins with async loading
  • 🔧 Automated Setup - Single command installation
  • 📦 Homebrew Bundle - Reproducible package management
  • 🚀 Modern CLI Tools - eza, bat, ripgrep, fd, and more
  • 🧠 Smart Navigation - Zoxide for intelligent directory jumping
  • 💻 LazyVim IDE - Full Neovim IDE experience in terminal
  • 🔍 Dynamic Paths - Works from any clone location

🚀 Quick Install

# Clone and install
git clone https://github.com/danielsalles/dotfile.git ~/dotfiles && cd ~/dotfiles && ./install.sh

# Or using Make
git clone https://github.com/danielsalles/dotfile.git ~/dotfiles && cd ~/dotfiles && make install

⚠️ Required Manual Configuration

iTerm2 Font Setup

After installation, configure iTerm2 to display icons correctly:

  1. Open iTerm2 → Preferences (Cmd+,)
  2. Go to Profiles → Text
  3. Font: Select FiraCode Nerd Font (NOT Mono or Propo variants)
  4. Non-ASCII Font: Select FiraCode Nerd Font (same as Font)
  5. Recommended size: 12-13pt
  6. Restart iTerm2

Without this, you'll see boxes/question marks instead of icons.

📋 What's Included

Shell & Plugins

Oh My Zsh plugins configured:

  • git - Git aliases and functions
  • extract - Extract any archive format
  • nvm - Node Version Manager integration
  • thefuck - Command correction
  • eza - Integration with eza command
  • fzf-tab - Fuzzy completion
  • zsh-autosuggestions - Fish-like suggestions
  • you-should-use - Alias reminders
  • zsh-syntax-highlighting - Command highlighting

Terminal Tools

  • eza - Modern ls replacement with icons
  • bat - Enhanced cat with syntax highlighting
  • starship - Cross-shell prompt
  • zoxide - Smarter cd command
  • fzf - Fuzzy finder
  • ripgrep - Ultra-fast grep
  • fd - User-friendly find
  • thefuck - Command correction

Development Tools

  • Git - Version control with custom aliases
  • Node.js - JavaScript runtime
  • Python - For various CLI tools
  • Neovim - Modern Vim fork
  • Lazygit - Terminal UI for Git

LazyVim IDE (Neovim)

  • Full IDE experience with LSP support
  • Language servers for JS/TS, Python, Lua, and more
  • Telescope fuzzy finder
  • Treesitter syntax highlighting
  • Git integration with Gitsigns
  • Pre-configured with custom settings and plugins

📁 Repository Structure

dotfiles/
├── Brewfile              # Homebrew packages
├── Makefile              # Automation commands
├── README.md             # This file
├── install.sh            # Main installation script
├── config/               # Application configurations
│   ├── starship.toml     # Starship prompt config
│   ├── nvim/             # Neovim/LazyVim config
│   └── iterm2/           # iTerm2 configurations
│       └── key-mappings.json
├── git/                  # Git configuration
│   ├── .gitconfig        # Git config
│   └── .gitignore_global # Global gitignore
├── macos/                # macOS specific
│   └── set-defaults.sh   # macOS preferences
├── scripts/              # Helper scripts
│   ├── install-plugins.sh     # Oh My Zsh plugins
│   ├── install-lazyvim.sh     # LazyVim setup
│   └── setup-iterm2.sh        # iTerm2 config
└── zsh/                  # Zsh configuration
    ├── .zshrc            # Main Zsh config
    ├── aliases.zsh       # Custom aliases
    └── functions.zsh     # Custom functions

🛠️ Installation Details

The install script will:

  1. ✅ Install Homebrew (if not installed)
  2. ✅ Install all packages from Brewfile (including Neovim & FiraCode Nerd Font)
  3. ✅ Install Oh My Zsh framework
  4. ✅ Clone and install custom Zsh plugins
  5. ✅ Create symlinks for all configurations
  6. ✅ Configure dynamic DOTFILES_DIR for portability
  7. ✅ Install NVM for Node.js management
  8. ✅ Set up iTerm2 key mappings
  9. ✅ Configure LazyVim IDE with custom settings
  10. ✅ Apply macOS defaults (optional)

⚙️ Configuration

Key Aliases

eza (ls replacement):

  • ls - List files vertically with icons
  • ll - Long format with details
  • la - Show all including hidden
  • lt - Tree view (2 levels)
  • tree - Full tree with icons

bat (cat replacement):

  • b - Quick view with Dracula theme
  • bcat - Plain output (cat compatible)
  • bathelp - List available themes

Navigation:

  • .. - Go up one directory
  • ... - Go up two directories
  • - - Go to previous directory

Custom Functions

  • mkd - Create directory and enter it
  • extract - Extract any archive format
  • ff - Find files by name
  • fd - Find directories by name

Adding Your Own

# Add aliases to zsh/aliases.zsh
alias myalias='my command'

# Add functions to zsh/functions.zsh
function myfunction() {
    # your code
}

# Add packages to Brewfile
brew "package-name"

🎨 Themes

The Dracula dark theme is available for:

  • Bat syntax highlighting (configured)
  • LazyVim editor theme
  • iTerm2 (manual import required)

Note: Starship uses the nerd-font-symbols preset for optimal icon display

To import iTerm2 Dracula theme:

  1. Download from draculatheme.com/iterm
  2. iTerm2 → Preferences → Profiles → Colors → Import

💻 LazyVim Usage

Key Bindings

  • Space - Leader key
  • Space e - File explorer
  • Space ff - Find files
  • Space fg - Live grep
  • Space gg - Open Lazygit
  • K - Hover documentation
  • gd - Go to definition

First Time Setup

  1. Run nvim after installation
  2. Wait for plugins to install automatically
  3. Restart Neovim
  4. Run :checkhealth to verify

🔧 Useful Commands

# Update everything
make update

# Backup current configs
make backup

# Check installation status
make doctor

# Clean broken symlinks
make clean

🐛 Troubleshooting

Icons not showing?

Ensure iTerm2 is using "FiraCode Nerd Font" (see Required Manual Configuration above)

Plugins not loading?

./scripts/install-plugins.sh
source ~/.zshrc

Command not found?

brew bundle --file=Brewfile
source ~/.zshrc

Permission denied?

chmod +x install.sh scripts/*.sh macos/*.sh

📝 Post-Installation

  1. Configure Git:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
  1. Import iTerm2 theme (optional - see Themes section)

  2. Customize as needed (see Configuration section)

🤝 Contributing

Feel free to fork and customize for your own use!

📄 License

MIT - See LICENSE file

🙏 Acknowledgments

Inspired by:


⭐ If you find this useful, please consider giving it a star!

About

for MacOS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors