Cross-platform dotfiles for macOS and Arch Linux systems, managed with GNU Stow.
Note: If you want to give these dotfiles a try, you should fork this repo, review the code and remove things you don't want or need.
neovim- Hyperextensible Vim-based text editor (kickstart.nvim configuration)- Plugin Manager:
lazy.nvim- Modern plugin manager with lazy loading - LSP & Completion:
mason.nvim- Automatic LSP/tool installerblink.cmp- Modern completion engineLuaSnip- Snippet engine- Pre-configured LSPs:
basedpyright(Python),lua_ls(Lua)
- Navigation & Search:
telescope.nvim- Fuzzy finder with FZF nativewhich-key.nvim- Key mapping hints
- Code Enhancement:
treesitter- Syntax highlighting and parsingconform.nvim- Formatting with ruff (Python), stylua (Lua)gitsigns.nvim- Git integration and decorations
- Key Mappings: Leader key (Space),
jk→ Escape, Vim-style navigation, system clipboard integration
- Plugin Manager:
vim- Legacy Vim configurationctrlp- Full path fuzzy file finderYouCompleteMe- Code-completion enginevim-airline- Customizable statusbar/tablinegruvbox- Retro color theme
tmux- Terminal multiplexer with custom scripts- Configuration: Vim-style navigation, mouse support, custom status bar
- Key Features: Alt+h/l window switching, project-specific session scripts
- Scripts: Automated session management (
dotfiles-tmux,studio-tmux, etc.)
zsh- Shell with advanced configuration and performance optimization- Framework:
Oh My Zshwith optimized plugin loading - Theme:
Powerlevel10k- Pure-style configuration with instant prompt - Performance Plugins:
evalcache- Caches slow command evaluations for faster startupzsh-nvm- Node.js version manager with lazy loading
- Enhancement Plugins:
zsh-autosuggestions- Fish-like command suggestionszsh-syntax-highlighting- Real-time syntax highlightingzsh-completions- Additional completion definitions
- Development Environment:
- Go: Complete setup (GOPATH, GOOS=darwin, personal workspace)
- Python: Python 3.9, UV package manager with completion
- Node.js: NVM with lazy loading and bash completion
- Tools: Protobuf compiler, IntelliJ toolbox, .NET tools, direnv integration
- Framework:
alacritty- Fast, cross-platform OpenGL terminal emulator- Font: JetBrainsMono Nerd Font (size 18) - Required for optimal display
- Theme: Gruvbox color scheme with dark background (
#1d2020) - Features: Cursor blinking, buttonless decorations (macOS), Option-as-Alt support
- Shell Integration: Zsh with login arguments, 10px horizontal padding
ranger- VIM-inspired console file manager
iTerm2- Feature-rich terminal emulator with advanced customization- Font: JetBrainsMono Nerd Font SemiBold 17pt with 1.19x vertical spacing for enhanced readability
- Visual Features: Custom color scheme, blur effects (~20px radius), unlimited scrollback
- Terminal Type: xterm-256color, Option-as-Esc for both keys, smart cursor behavior
- Ergonomics: Increased line spacing, inspiration from Zed.
yabai- Tiling window manager based on binary space partitioning- Layout: BSP (Binary Space Partitioning) with no padding/gaps
- Configuration: Mouse follows focus disabled, Alt modifier for mouse actions
- Exclusions: System Settings, Calculator, Karabiner-Elements, and utility apps
skhd- Simple hotkey daemon with comprehensive keybindings- Window Focus:
Cmd + hjklfor directional focus - Window Management:
Shift + Cmd + M- Toggle zoom fullscreenShift + Cmd + R- Balance space layoutShift + Cmd + Ctrl + hjkl- Swap windows
- Multi-Display:
Ctrl + Alt + hjklfor display focus,Alt + Shift + hjklfor moving windows - Workspaces:
Ctrl + Cmd + [1-0]for moving windows between spaces - Resizing:
Shift + Alt + o/ifor horizontal window resizing
- Window Focus:
aerospace- Alternative tiling window managerrectangle- Window management utility
i3WM- Tiling window manager for X11polybar- Fast and easy-to-use status barrofi- Window switcher and application launcherpicom- Standalone compositor for X11redshift- Blue light filter for X11
fonts- Custom fonts for system-wide installationfonts-config- Font configuration and .Xresourcesintel-graphics- Intel graphics driver configuration for Arch Linux
- GNU Stow - For managing symlinks to configuration files
macOS:
# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install essential tools
brew install neovim tmux zsh stow yabai skhdArch Linux:
# Install essential tools
sudo pacman -S neovim tmux zsh stow i3-wm i3status polybar rofi
# Install AUR helper (yay) for additional packages
git clone https://aur.archlinux.org/yay.git
cd yay && makepkg -si# Install Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Install Powerlevel10k theme
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# Install zsh plugins
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlightingClone this repository to your home directory:
cd ~
git clone https://github.com/your-username/linux-dotfiles.git dotfiles
cd dotfilesEssential Development Environment (All Platforms):
stow nvim-kickstart # Current Neovim configuration
stow tmux # Terminal multiplexer
stow zsh # Shell configuration
stow alacritty # Terminal emulator
stow vim # Legacy Vim configuration
stow ranger # File managermacOS-Specific Configurations:
stow iterm2 # Terminal emulator configuration
stow yabai # Tiling window manager
stow skhd # Hotkey daemon
stow aerospace # Alternative window manager
stow rectangle # Window management utilityLinux-Specific Configurations:
stow i3 # Tiling window manager
stow polybar # Status bar
stow rofi # Application launcher
stow picom # Compositor
stow redshift # Blue light filterSystem-Wide Configurations (requires sudo):
# Font installation
sudo stow --target=/ fonts
# Linux-specific system configurations
sudo stow --target=/ intel-graphics # Intel graphics fix for Arch
sudo stow --target=/ fonts-config # Font configuration- Repository Location: Place in home directory (
~/dotfiles) to avoid--targetflags for most configurations - Excluded Directories:
images/- Contains screenshots for README.archive/- Contains old/deprecated configurations
- System Configurations:
fonts,intel-graphics, andfonts-configrequire system-wide installation - Current Neovim: Use
nvim-kickstartdirectory (not the archived configurations)
iTerm2 (macOS):
# Import the configuration profile
# 1. Open iTerm2 → Preferences → Profiles
# 2. Click "Other Actions..." → Import JSON Profiles
# 3. Select: iterm2/iterm2_config.json
# 4. Set as default profile if desiredNeovim:
# Launch Neovim to trigger plugin installation
nvim
# Run health check
:checkhealthThe Neovim configuration is based on kickstart.nvim and can be updated periodically:
# 1. Update the configuration file
# Copy the latest init.lua from kickstart.nvim repo to:
# nvim-kickstart/.config/nvim/init.lua
# 2. Reset Neovim installation (removes all plugins and data)
rm -rf ~/.local/share/nvim
# 3. Reopen Neovim - Mason will automatically reinstall everything
nvimBenefits of this workflow:
- Updates to latest kickstart.nvim features and improvements
- Resolves plugin conflicts and installation issues
- Clean reinstall of all LSP servers and tools via Mason
- Mason automatically installs everything listed in
ensure_installed
Tmux:
# Source the configuration
tmux source-file ~/.tmux.conf
# Install custom scripts (already executable)
# Scripts available: cp-tmux, deepgram-tmux, dotfiles-tmux, etc.Zsh:
# Configure Powerlevel10k theme
p10k configure
# Restart shell to apply changes
exec zsh- Terminal Choice (macOS):
- Alacritty: Lightweight, Gruvbox theme, consistent across platforms
- iTerm2: Feature-rich, custom color scheme, ergonomic spacing (1.19x), blur effects
- Tmux Scripts: Project-specific session scripts are available in
tmux/.scripts/- Example:
dotfiles-tmuxcreates windows for yabai, skhd, nvim, alacritty, and tmux configs - Scripts follow pattern:
<project>-tmuxwith predefined window layouts
- Example:
- Window Management:
- macOS: Choose between
yabai,aerospace, orrectanglebased on preference - Linux:
i3configuration includes custom keybindings and polybar integration
- macOS: Choose between
- Neovim: Configuration uses kickstart.nvim approach - modify
nvim-kickstart/.config/nvim/init.lua - Terminal Colors: Configurations assume 256-color terminal support
- Font Requirements: JetBrainsMono Nerd Font required for icons and proper display
- Performance: Zsh includes timing functions (
timezsh,timePlugins) to monitor startup performance
Neovim:
Leader Key: Space
jk/JK/Jk → Escape (Insert mode)
<leader>e → File explorer
<leader>y → Copy to system clipboard
<leader>f → Format buffer
<C-hjkl> → Window navigation
Tmux:
Prefix: Ctrl+b
hjkl → Pane navigation
Alt+hl → Window switching
| → Split horizontal
_ → Split vertical
macOS (skhd):
Cmd+hjkl → Window focus
Shift+Cmd+M → Toggle fullscreen
Shift+Cmd+R → Balance layout
Ctrl+Cmd+[1-0] → Move to workspace
Common Issues:
- Fonts not displaying properly: Install JetBrainsMono Nerd Font
- Tmux colors incorrect: Ensure
TERM='xterm-256color'is set - Neovim LSP not working: Run
:checkhealthand:Masonto verify installations - Neovim plugin issues: Use the reset workflow:
rm -rf ~/.local/share/nvimthen reopen nvim - Zsh slow startup: Use
timezshfunction to identify slow plugins - Yabai not working: Check SIP status and permissions with
yabai --check-sa
- Kickstart.nvim - Neovim configuration template
- GNU Stow Manual - Dotfiles management
- Yabai Documentation - macOS window management
- i3 User's Guide - Linux window management
- Mathias's dotfiles - Inspiration and best practices
- Webpro's dotfiles - Community dotfiles collection



