Skip to content

Latest commit

Β 

History

History
282 lines (230 loc) Β· 9.15 KB

File metadata and controls

282 lines (230 loc) Β· 9.15 KB

dotfiles

My Personal dotfiles for macOS, featuring a highly customized development environment with Neovim, Tmux, Zsh, Fish shell, and Cursor IDE.

πŸš€ Features

Terminal & Shell

  • Zsh with Oh My Zsh and powerlevel10k theme
  • Fish with Oh My Fish and Tide v6 theme (Powerlevel10k equivalent)
  • Tmux with clean Dracula theme and enhanced keybindings
  • Kitty terminal emulator configuration
  • Btop system monitoring with custom themes

IDE & Editor

  • Cursor IDE configuration with sound disabled and optimized settings
  • Neovim (NVIM) with Lazy.nvim plugin manager
  • LSP support with auto-completion and diagnostics
  • Tree-sitter for syntax highlighting
  • Telescope for fuzzy finding
  • Linting with nvim-lint
  • Formatting with conform.nvim
  • Git integration with gitsigns and lazygit
  • Markdown support with preserved ASCII diagrams

Tmux Configuration

  • Clean status bar with essential info only (hostname, path, date)
  • Dracula color theme with subtle separators
  • Enhanced keybindings for pane/window/session management
  • Multiple cheat sheet options:
    • Quick reference (prefix + ?)
    • Popup style (prefix + C-?) - disappears on Escape
    • Floating window (prefix + C-h) - persistent reference
  • TPM plugins: tmux-yank, tmux-open, tmux-copycat, tmux-resurrect, tmux-continuum
  • Shell integration for proper powerlevel10k prompt

Development Tools

  • Git configuration with aliases and hooks
  • LazyGit for Git operations
  • Rust toolchain setup
  • Node.js and pnpm configuration
  • Python environment management

πŸ“ Repository Structure

.config/
β”œβ”€β”€ nvim/                    # Neovim configuration
β”‚   β”œβ”€β”€ lua/bryan/          # Custom Neovim modules
β”‚   β”‚   β”œβ”€β”€ core/           # Core settings and options
β”‚   β”‚   β”œβ”€β”€ plugins/        # Plugin configurations
β”‚   β”‚   └── templates/      # File templates
β”‚   β”œβ”€β”€ after/              # Filetype-specific settings
β”‚   └── init.lua            # Neovim entry point
β”œβ”€β”€ cursor/                  # Cursor IDE configuration
β”‚   β”œβ”€β”€ config.json         # Main Cursor settings
β”‚   β”œβ”€β”€ argv.jsonc          # Cursor launch arguments
β”‚   └── mcp.json.template   # MCP configuration template
β”œβ”€β”€ fish/                    # Fish shell configuration
β”‚   β”œβ”€β”€ config.fish         # Main Fish configuration
β”‚   β”œβ”€β”€ conf.d/             # Fish configuration snippets
β”‚   β”œβ”€β”€ functions/          # Custom Fish functions
β”‚   └── themes/             # Fish theme configurations
β”œβ”€β”€ tmux/                   # Tmux configuration
β”‚   β”œβ”€β”€ tmux.conf          # Main tmux config
β”‚   └── plugins/           # TPM plugins (managed by TPM)
β”œβ”€β”€ zsh/                    # Zsh configuration
β”‚   β”œβ”€β”€ .zshrc             # Main zsh config
β”‚   └── oh-my-zsh/         # Oh My Zsh installation
β”œβ”€β”€ kitty/                  # Kitty terminal config
β”œβ”€β”€ btop/                   # Btop system monitor config
β”œβ”€β”€ scripts/                # macOS customization scripts
└── README.md               # This file

πŸ› οΈ Installation

Prerequisites

  • macOS (tested on M2 Max)
  • Homebrew installed
  • Git installed

Quick Install

# Clone the repository
git clone https://github.com/bryanwills/dotfiles.git ~/.config

# Run the installation script
cd ~/.config
./scripts/install.sh

Manual Installation

# Clone to your preferred location
git clone https://github.com/bryanwills/dotfiles.git

# Create symlinks (adjust paths as needed)
ln -s ~/path/to/dotfiles/nvim ~/.config/nvim
ln -s ~/path/to/dotfiles/tmux ~/.config/tmux
ln -s ~/path/to/dotfiles/zsh/.zshrc ~/.zshrc
ln -s ~/path/to/dotfiles/kitty ~/.config/kitty
ln -s ~/path/to/dotfiles/btop ~/.config/btop

🎯 Key Bindings

Tmux Keybindings

  • prefix + r - Reload tmux configuration
  • prefix + ? - Show quick cheat sheet
  • prefix + C-? - Show popup cheat sheet (Escape to close)
  • prefix + C-h - Toggle floating cheat sheet window
  • prefix + v - Vertical split
  • prefix + s - Horizontal split
  • prefix + h/j/k/l - Navigate panes
  • prefix + c - New window
  • prefix + n/p - Next/previous window
  • prefix + d - Detach session

Neovim Keybindings

  • <leader>e - Toggle file explorer
  • <leader>ff - Find files
  • <leader>fg - Live grep
  • <leader>fb - Find buffers
  • <leader>gd - Go to definition
  • <leader>gr - Go to references
  • <leader>ca - Code actions
  • <leader>rn - Rename symbol

πŸ”§ Configuration

Tmux Setup

  1. Install TPM (if not already installed):

    git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm
  2. Install plugins:

    • Start tmux
    • Press prefix + I (Ctrl+a, then Shift+i)
  3. Reload configuration:

    • Press prefix + r (Ctrl+a, then r)

Neovim Setup

  1. Install dependencies:

    # Install language servers
    npm install -g typescript typescript-language-server
    npm install -g @tailwindcss/language-server
    npm install -g prettier
  2. First launch:

    • Neovim will automatically install plugins on first run
    • Wait for installation to complete

Zsh Setup

  1. Install Oh My Zsh:

    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  2. Install powerlevel10k:

    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Fish Shell Setup

  1. Install Fish shell:

    brew install fish
  2. Install Oh My Fish:

    curl -L https://get.oh-my.fish | fish
  3. Install Tide theme:

    omf install tide@v6
  4. Set Fish as default shell (optional):

    echo /opt/homebrew/bin/fish | sudo tee -a /etc/shells
    chsh -s /opt/homebrew/bin/fish

Cursor IDE Setup

  1. Configuration location: ~/.config/cursor/
  2. Sound settings: All audio cues and notifications are disabled by default
  3. Launch arguments: Optimized for performance and stability
  4. MCP integration: Template provided for Model Context Protocol setup

πŸ“š macOS Customization Scripts

Available Scripts

  • scripts/install.sh - Complete installation script
  • scripts/uninstall.sh - Uninstallation and cleanup
  • scripts/macos-customizations.sh - macOS system preferences
  • scripts/dependencies.sh - Dependency checker
  • scripts/clean-ds-store.sh - Clean up .DS_Store files

macOS Customizations Applied

  • Screenshot settings (PNG format, custom save location)
  • Dock preferences (auto-hide, fast animations)
  • File system settings (show extensions, iCloud preferences)
  • .DS_Store prevention on network and USB drives

πŸ”„ Maintenance

Updating Plugins

  • Tmux: prefix + I to install/update plugins
  • Neovim: Plugins update automatically via Lazy.nvim
  • Zsh: omz update to update Oh My Zsh
  • Fish: omf update to update Oh My Fish

Reloading Configurations

  • Tmux: prefix + r
  • Neovim: Restart or :Lazy sync
  • Zsh: source ~/.zshrc
  • Fish: source ~/.config/fish/config.fish
  • Cursor: Restart application for config changes

Backup and Restore

  • Install script creates backups automatically
  • Uninstall script restores original configurations
  • Git history tracks all configuration changes

🎨 Themes and Appearance

Color Schemes

  • Dracula theme for tmux
  • Custom Neovim color scheme
  • powerlevel10k for Zsh prompt
  • Tide v6 for Fish shell (Powerlevel10k equivalent)
  • Dark mode optimized for development

Fonts

  • JetBrains Mono recommended for Neovim
  • SF Mono for macOS terminal
  • Nerd Fonts for icons and symbols

πŸ› Troubleshooting

Common Issues

  1. Tmux plugins not working: Run prefix + I to install
  2. Neovim slow startup: Check plugin installation with :Lazy
  3. Zsh prompt issues: Verify powerlevel10k installation
  4. Permission errors: Check file ownership and symlinks

Getting Help

  • Check the generated log files from install scripts
  • Review the cheat sheets (prefix + ? in tmux)
  • Check Neovim health with :checkhealth

🀝 Contributing

This is a personal dotfiles repository, but suggestions and improvements are welcome:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Neovim community for the excellent editor
  • Tmux developers and plugin authors
  • Oh My Zsh and powerlevel10k teams
  • Homebrew maintainers for package management

Note: These dotfiles are configured for macOS and may need adjustments for other operating systems. Todo: Need to create Windows dotfiles from MacOS dotfiles and remove apps that aren't on Windows