A comprehensive dotfiles configuration managed with chezmoi, featuring automated setup for development environments including Cursor, VSCode, terminal configurations, and various development tools.
This repository contains my personal dotfiles and configuration files for:
- Editors: Cursor, VSCode/VSCodium, Neovim
- Terminal: Fish shell, Wezterm, Ghostty
- Development Tools: Git, Atuin, Bat, K9s
- Window Management: Aerospace, Hammerspoon, Karabiner
- Package Management: Devbox (Nix-based)
- AI Development: Cursor rules for enhanced coding assistance
- chezmoi - Dotfiles manager
- macOS (primary target platform)
-
Install chezmoi (if not already installed):
sh -c "$(curl -fsLS get.chezmoi.io)" -
Initialize with this repository:
chezmoi init --apply https://github.com/USERNAME/dotfiles.git
-
Apply configurations:
chezmoi apply
This dotfiles setup uses a modular approach to manage Cursor and VSCode settings:
Architecture Note: The
vscode-settings/directory is located at the repository root (not inprivate_dot_config/) because it contains management tools and source files that should not be deployed by chezmoi. The actual settings are deployed via templates to the proper editor locations.
vscode-settings/
├── 01-base.json # Core editor settings
├── 02-vim.json # Vim keybindings and behavior
├── 03-navigation.json # File navigation and search
├── 03-theme.json # UI theme and appearance
├── 04-languages.json # Language-specific settings
├── 05-keybindings.json # Custom keybindings
├── 06-whichkey.json # Which-key menu configuration
├── 99-overrides.json # Final overrides
└── bin/
├── manage-vscode-settings.fish
└── vscode-manager-aliases.fish
The settings are automatically merged and applied using the management script:
# Apply settings to specific editor
vscode-settings/bin/manage-vscode-settings.fish apply cursor
vscode-settings/bin/manage-vscode-settings.fish apply codium
# Apply settings to all editors
vscode-settings/bin/manage-vscode-settings.fish apply all
# Show differences before applying
vscode-settings/bin/manage-vscode-settings.fish diff cursor
vscode-settings/bin/manage-vscode-settings.fish diff allExtensions are managed through text files that list required extensions:
vscode-settings/
├── cursor-extensions.txt # Cursor-specific extensions
├── codium-extensions.txt # VSCodium-specific extensions
├── shared-extensions.txt # Extensions for both editors
├── cursor-global-rules.txt # Legacy global Cursor rules
└── cursorrules-template.txt # Project-specific rules template
The management script provides convenient commands for extension installation:
# Install extensions for specific editor
vscode-settings/bin/manage-vscode-settings.fish install-extensions cursor
vscode-settings/bin/manage-vscode-settings.fish install-extensions codium
# Install extensions for all editors
vscode-settings/bin/manage-vscode-settings.fish install-extensions all
# Sync extensions (install missing, keep existing)
vscode-settings/bin/manage-vscode-settings.fish sync-extensions cursor
vscode-settings/bin/manage-vscode-settings.fish sync-extensions allAI-powered development assistance through Cursor rules:
private_dot_config/cursor/rules/
├── core/
│ └── personal-preferences.mdc # Personal development environment and workflow preferences
└── development/
└── coding-standards.mdc # General coding standards and best practices
- Personal Preferences: Development environment setup, code style preferences, and workflow guidelines
- Coding Standards: Best practices for code quality, function design, performance, and security
- Modular Structure: Rules organized by category with frontmatter configuration for conditional application
- Unified Settings: Consistent configuration across Cursor and VSCode
- Modular Configuration: Easy to customize individual aspects
- Extension Sync: Automated extension installation and management
- AI Enhancement: Cursor rules for improved coding assistance
- Fish Shell: Modern shell with intelligent autocompletion
- Wezterm/Ghostty: GPU-accelerated terminal emulators
- Atuin: Enhanced shell history with sync capabilities
- Bat: Syntax-highlighted
catreplacement
- Aerospace: Tiling window manager for macOS
- Hammerspoon: Lua-based automation and window management
- Karabiner: Advanced keyboard customization
- Git: Comprehensive git configuration with templates
- Devbox: Nix-based development environment management
- K9s: Kubernetes cluster management
- Neovim: Highly configured editor setup
# Edit a file
chezmoi edit ~/.config/fish/config.fish
# Apply changes
chezmoi apply
# Add a new file
chezmoi add ~/.new-config-file
# Check status
chezmoi status
# View differences
chezmoi diff
# Update from repository
chezmoi update- Settings Updates: Modify JSON files in
vscode-settings/ - Apply Changes: Run
vscode-settings/bin/manage-vscode-settings.fish apply all - Extension Management: Update extension lists and run
vscode-settings/bin/manage-vscode-settings.fish sync-extensions all - Cursor Rules: Add new
.mdcfiles to enhance AI assistance, deploy withchezmoi apply ~/.config/cursor/ - Complete Setup: Use
vscode-settings/bin/manage-vscode-settings.fish setup allfor new installations
-
Add extension ID to appropriate file:
shared-extensions.txtfor both editorscursor-extensions.txtfor Cursor onlycodium-extensions.txtfor VSCodium only
-
Install the new extensions:
# Sync extensions (installs any missing extensions) vscode-settings/bin/manage-vscode-settings.fish sync-extensions all # Or install for specific editor vscode-settings/bin/manage-vscode-settings.fish install-extensions cursor
The script provides several other useful extension management commands:
# List currently installed extensions
vscode-settings/bin/manage-vscode-settings.fish list-extensions cursor
vscode-settings/bin/manage-vscode-settings.fish list-extensions all
# Export currently installed extensions to a file
vscode-settings/bin/manage-vscode-settings.fish export-extensions cursor
# Complete setup (settings + extensions)
vscode-settings/bin/manage-vscode-settings.fish setup cursor
vscode-settings/bin/manage-vscode-settings.fish setup all
# Check status of all editors
vscode-settings/bin/manage-vscode-settings.fish status
# Cursor Rules Management
vscode-settings/bin/manage-vscode-settings.fish cursor-rules-status # Show Cursor rules configuration status
vscode-settings/bin/manage-vscode-settings.fish apply-cursor-rules # Apply global Cursor rules (legacy)
vscode-settings/bin/manage-vscode-settings.fish backup-cursor-rules # Backup current Cursor rulesThis configuration builds upon and integrates with several excellent open-source projects:
- chezmoi - Dotfiles manager
- Cursor - AI-powered code editor
- VSCode - Microsoft's code editor
- Neovim - Hyperextensible Vim-based text editor
- Fish Shell - Smart and user-friendly command line shell
- Wezterm - GPU-accelerated terminal emulator
- Ghostty - Fast, native terminal emulator
- Atuin - Magical shell history
- Devbox - Instant, easy, predictable development environments
- Nix - Purely functional package manager
- Aerospace - Tiling window manager for macOS
- Hammerspoon - Desktop automation for macOS
- Karabiner-Elements - Keyboard customizer
- awesome-cursorrules - Collection of Cursor rules
- Conventional Commits - Commit message specification
-
Add files to chezmoi:
chezmoi add ~/.config/new-tool/config.yaml -
Edit with chezmoi:
chezmoi edit ~/.config/new-tool/config.yaml -
Apply changes:
chezmoi apply
-
Structured Rules: Create new
.mdcfiles inprivate_dot_config/cursor/rules/core/orprivate_dot_config/cursor/rules/development/ -
Use the frontmatter format:
--- description: Rule description globs: alwaysApply: false ---
-
Deploy Rules: Run
chezmoi apply ~/.config/cursor/to deploy changes -
Legacy Support: Global rules file and project templates available via
vscode-settings/bin/manage-vscode-settings.fishcommands
- Modify the appropriate JSON file in
vscode-settings/ - Run
vscode-settings/bin/manage-vscode-settings.fishto apply changes - Settings are merged in numerical order (01, 02, 03, etc.)
While this is a personal dotfiles repository, contributions and suggestions are welcome:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request with a clear description
This project is licensed under the MIT License - see the LICENSE file for details.
- The chezmoi project for excellent dotfiles management
- The awesome-cursorrules community for AI development enhancements
- All the upstream projects that make this configuration possible
- The open-source community for continuous inspiration and improvement
This README is maintained as part of the dotfiles repository for documentation purposes.