Welcome to my dotfiles repository! This project provides an automated setup for a complete development environment with configurations for Neovim, Zsh, Tmux, and Kitty terminal. It's designed to help developers quickly bootstrap a consistent and efficient workspace across machines.
This repository automates the setup of a modern development environment with:
- Automated Installation: Single command setup for all development tools and dependencies
- Neovim IDE Configuration: Modern Neovim setup with LSP, debugging, auto-completion, and AI assistance
- Shell Environment: Zsh with oh-my-zsh, plugins, and custom configurations
- Terminal Configuration: Kitty terminal with themes and optimizations
- Version Managers: Automated setup of Python (pyenv), Node.js (nvm), and Go (gvm)
- Symlink Management: Dotbot-based automatic symlinking of configuration files
- Neovim - Modern text editor with IDE features
- Git - Version control
- Homebrew packages: curl, wget, ripgrep, asdf, pnpm
- Kitty terminal - GPU-accelerated terminal emulator
- Go 1.23 - Via gvm (Go Version Manager) with complete bootstrap chain
- Python 3.10 - Via pyenv with poetry package manager
- Node.js - Via nvm (Node Version Manager)
- Zsh - Default shell
- Oh-my-zsh - Shell framework
- Zsh plugins: zsh-completions, zsh-syntax-highlighting, zsh-autosuggestions, autojump
- Modular Lua Configuration: Well-organized plugin structure in
nvim/lua/plugins/ - Plugin Manager: Lazy.nvim for efficient plugin management
- Modern LSP: Uses Neovim 0.11+ native vim.lsp APIs, while keeping nvim-lspconfig for Mason integration and server defaults.
-
Language Server Protocol (LSP): Multi-language support via Mason and nvim-lspconfig
- Supported languages: Bash, C/C++, Deno, Python, Rust, Go, Lua, Elixir, JavaScript/TypeScript
- Auto-installation of LSP servers via mason-lspconfig
- Native Neovim 0.11+ LSP configuration
-
AI-Assisted Development: GitHub Copilot integration with chat support
-
Auto-Completion: nvim-cmp with multiple sources (LSP, buffer, path, snippets)
-
Syntax Highlighting: Treesitter with curated parser list
- Languages: Lua, Vim, JavaScript/TypeScript, Python, Go, Rust, C/C++, Bash, Markdown, YAML, SQL, Elixir
- Automatic error recovery for problematic parsers
-
Code Quality Tools:
- Formatting: conform.nvim with prettier, stylua, black, isort
- Linting: nvim-lint with pylint, eslint_d
-
Debugging: nvim-dap with support for multiple languages
-
File Navigation:
- telescope.nvim for fuzzy finding
- nvim-tree for file explorer
-
Git Integration: diffview.nvim for enhanced Git operations
-
UI Enhancements:
- Custom dashboard
- Status line with airline
- Onedark color scheme
- Indent guides
- Lazy.nvim - Plugin manager
- nvim-treesitter - Syntax highlighting
- mason.nvim - LSP/DAP/linter/formatter installer
- nvim-lspconfig - LSP configurations
- nvim-cmp - Completion engine
- nvim-dap - Debugging
- telescope.nvim - Fuzzy finder
- conform.nvim - Code formatting
- nvim-lint - Linting
- diffview.nvim - Git diff viewer
- github-copilot - AI pair programming
- macOS (tested on macOS with ARM64)
- Internet connection
- Homebrew (will be used to install packages)
-
Clone this repository:
git clone https://github.com/klee1611/dotfiles.git cd dotfiles -
Run the installation script:
./install.sh
This will:
- Install Homebrew packages
- Set up language version managers (gvm, pyenv, nvm)
- Install Go 1.23 with complete bootstrap chain (1.4 β 1.17.13 β 1.20.14 β 1.23)
- Install Python 3.10 and poetry
- Set up oh-my-zsh with plugins
- Symlink all configuration files to your home directory
- Install Kitty terminal with theme
-
Restart your shell or source the new configuration:
source ~/.zshrc
-
Open Neovim and install plugins:
nvim
Lazy.nvim will automatically install all plugins on first launch.
-
Install LSP servers, formatters, and linters:
Open Neovim and run:
:Mason
The configured tools will be automatically installed via mason-lspconfig.
The installation creates symlinks for:
~/.zshrcβzshrc~/.config/zsh/βzsh/*~/.config/nvim/βnvim/*~/.tmux.confβtmux/tmux.conf~/.tmux.conf.localβtmux/tmux.conf.local~/.config/kitty/kitty.confβkitty.conf
Note: Existing files will be replaced (backed up by dotbot if needed).
dotfiles/
βββ _scripts/ # Installation and setup scripts
β βββ init.sh # Main system setup (brew, gvm, pyenv, etc.)
β βββ zsh_init.sh # Oh-my-zsh and plugin setup
β βββ nvim_cleanup.sh # Utility to clean corrupted Neovim caches
βββ nvim/ # Neovim configuration
β βββ init.lua # Entry point
β βββ lua/
β βββ core/ # Core settings (options, keymaps)
β βββ plugins/ # Plugin configurations (modular)
βββ zsh/ # Zsh configuration files
βββ tmux/ # Tmux configuration
βββ dotbot/ # Dotbot submodule for symlink management
βββ install.conf.yaml # Dotbot configuration
βββ install.sh # Main installation script
βββ README.md # This file
Leader key: Space
-
LSP:
gD- Go to declarationgd- Go to definitionK- Hover documentationgi- Go to implementation<Space>rn- Rename symbolgr- Find references<Space>f- Format code<Space>df- Next diagnostic
-
File Navigation:
<Space>fm- Format file/selection
-
Linting:
<Leader>l- Trigger linting
The installation sets up a complete Go bootstrap chain:
- Installs gvm (Go Version Manager)
- Builds Go 1.4 (binary bootstrap)
- Uses Go 1.4 to build Go 1.17.13
- Uses Go 1.17.13 to build Go 1.20.14
- Uses Go 1.20.14 to build Go 1.23 (final version)
This ensures gopls and other Go tools work correctly with Mason.
If Mason fails to install gopls:
- Ensure Go 1.23 is installed:
go version - Check GOPATH is set:
echo $GOPATH - Manually install:
go install golang.org/x/tools/gopls@latest
If Treesitter parsers fail:
- Run the cleanup script:
./_scripts/nvim_cleanup.sh - Reopen Neovim to reinstall parsers
If symlinks fail:
- The
force: trueoption ininstall.conf.yamlwill overwrite existing files - Backup important configs before running
./install.sh
Contributions are welcome! If you have ideas for improvement:
- Fork this repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is open-source and available under the MIT License.
For issues, questions, or suggestions:
- Open an issue on GitHub
- Check existing issues for solutions
- Review the troubleshooting section above
If you find this project helpful, consider supporting its development:
Or visit: https://www.buymeacoffee.com/klee1611
Happy coding! π
