##########################################################
# ___ #
# /\_ \ #
# __ __ __ __ ____\//\ \ __ __ __ #
# /\ \/\ \/\ \ /'__`\ /',__\ \ \ \ /'__`\/\ \/\ \ #
# \ \ \_/ \_/ \/\ __//\__, `\ \_\ \_/\ __/\ \ \_\ \ #
# \ \___x___/'\ \____\/\____/ /\____\ \____\\/`____ \ #
# \/__//__/ \/____/\/___/ \/____/\/____/ `/___/> \ #
# __ __ ___ ___ /\___/ #
# /\ \ /\ \__ /'___\ __ /\_ \ \/__/ #
# \_\ \ ___\ \ ,_\/\ \__//\_\\//\ \ __ ____ #
# /'_` \ / __`\ \ \/\ \ ,__\/\ \ \ \ \ /'__`\ /',__\ #
# /\ \_\ \/\ \_\ \ \ \_\ \ \_/\ \ \ \_\ \_/\ __//\__, `\#
# \ \___,_\ \____/\ \__\\ \_\ \ \_\/\____\ \____\/\____/#
# \/__,_ /\/___/ \/__/ \/_/ \/_/\/____/\/____/\/___/ #
# #
##########################################################
This repository contains my personal dotfiles, configuration scripts, and custom settings for a streamlined development environment across multiple tools and operating systems.
These dotfiles configure various aspects of my system, including:
- Shell: Zsh with Oh-My-Zsh and Zplugin
- Terminal: Kitty and Ghostty
- Editor: Neovim (Lua-based) and VS Code (with Vim extension)
- AI: Opencode and Gemini
- Version Control: Git
- Multiplexer: Tmux
- Window Manager: Aerospace (macOS)
- Fonts: Microsoft Cascadia Code with ligatures
Aliases & Key mappings:
The install.sh script automates the symlinking of configuration files and the installation of Neovim plugins.
Prerequisites:
- Xcode Command Line Tools:
xcode-select --install - Homebrew (for macOS):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - FZF:
brew install fd fzf the_silver_searcher ripgrep
- Python deps and Pylint:
pip install --user pynvimpip3 install --user pynvimpip3 install neovim-remote
Steps:
- Clone the repository:
git clone https://github.com/wesleyegberto/dotfiles.git ~/.dotfiles - Run the installation script:
This script will:
cd ~/.dotfiles ./install.sh
- Create symlinks for
.gitconfig,.zshrc,.tmux.conf, Kitty, Ghostty, and Neovim configurations. - Backup existing configuration files before creating symlinks.
- Run macOS-specific setup scripts, if on a Darwin system, to install all tools needed.
- Install Neovim's Packer plugin manager and then all Neovim plugins.
- Create symlinks for
My Neovim setup (version 0.11+) is entirely configured with Lua, emphasizing modularity and ease of maintenance.
Key Features & Plugins:
- LSP Integration:
nvim-lspconfig,mason.nvimfor language server management, enhanced UI withnavbuddy,lspkind,lsp_signature,lsp-lens,fidget.nvim,trouble.nvim. - Fuzzy Finding:
telescope.nvimfor efficient file, buffer, and command searching, with custom extensions for Git and language-specific tools. - Syntax & Editing: Advanced syntax highlighting (
nvim-treesitter), automatic pairing (nvim-autopairs), text objects (nvim-surround), and commenting (Comment.nvim). - Debugging: Integrated debugging with
nvim-dapandnvim-dap-ui. - AI Integration:
sidekickfor CLI AI interaction. - Filetype-Specific Configs: Custom settings for Java, C#, Python, TypeScript in
nvim/ftplugin. - Custom Snippets: Personal code snippets for various languages.
Configuration Structure:
The nvim/ directory is structured as follows:
init.lua: Main entry point for Neovim configuration.plugins.lua: Manages all plugins using Packer.lua/: Core Lua configurations.config/: Base settings (options, keybindings, colorscheme).plug-config/: Specific plugin configurations (telescope, treesitter, lsp, completion).custom/: Utility functions and buffer hooks.telescope/: Custom Telescope extensions.
ftplugin/: Filetype-specific settings (e.g.,java.lua,typescript.lua).keybindings.vim&options.vim: Legacy Vimscript for broader compatibility. Used in others softwares that support Neovim-like configuration.snippets/: JSON-defined code snippets.
VS Code is configured with the Vim extension, mirroring many Neovim keybindings and features for a consistent editing experience. Custom settings and key mappings are available in the linked Gist in the original README.
VS Code config files:
- Settings: configuration to enable the same behavior (configs with prefix
vim.). - Keybindings: key mappings to navigate between panes, double
jon insert mode, go to definition and implementation, so on.
- Oh-My-Zsh
- Tmux
- Kitty Terminal
- Ghostty Terminal
- Neovim
- Microsoft Cascadia Code Font
- Aerospace (macOS Window Manager)
- Inspirations:
- Tutorials: