Skip to content

Universal SWE Dotfiles (Neovim/Wezterm/zsh/pwsh, ClaudeCode/Git Hooks, Linux/Windows) - Battery Included

License

Notifications You must be signed in to change notification settings

lavantien/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

615 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Universal Dotfiles

Security Linux Windows License: MIT

Production-grade portable one-click dotfiles for Linux and Windows 11 software engineering environment.

Auto-detecting, auto-bootstraping, idempotent, gracefully degrading, full terminal tooling, fully vibecoding-enabled.


Core Features

Editor & Terminal

  • Neovim 0.12+ with built-in package manager, LSP/Treesitter config, and native completion
  • WezTerm GPU-accelerated terminal (IosevkaTerm Nerd Font)
  • Rose Pine theme across all configs

Development Tools

  • 20 LSP servers for complete language intelligence
  • 30 Treesitter parsers for advanced syntax highlighting
  • 40+ CLI tools for modern development workflows (fzf, yazi, zoxide, bat, eza, lazygit, gh, ripgrep, fd, tokei, btop, repomix, docker-compose, helm, kubectl)

AI-Native Agentic Development

  • Full support for Claude Code and OpenCode
  • 4 MCP servers: context7, playwright, repomix, serena
  • Hookify rules: Per-language quality check reminders (16 languages/formats)
  • Auto-detect & trigger format/lint/check: Git pre-commit/commit-msg + Claude Code PostToolUse & Stop hooks
  • System instruction sync across all repos (CLAUDE.md, AGENTS.md, GEMINI.md, RULES.md)

Automation & Safety

  • Idempotent bootstrap and update-all (safe to run multiple times)
  • Auto-detection with graceful degradation
  • OneDrive-aware on Windows
  • Timestamped backup/restore before major changes

Tested Platforms

  • Linux (Ubuntu 26.04+)
  • Windows 11 (PowerShell 7+)

Quick Start

Required Clone Location: This repository MUST be cloned to ~/dev/github/dotfiles.

For Docker/Kubernetes setup, see DOCKER_K8S.md.

Linux

git clone https://github.com/lavantien/dotfiles.git ~/dev/github/dotfiles
cd ~/dev/github/dotfiles
chmod +x allow.sh && ./allow.sh
./bootstrap.sh
chsh -s $(which zsh)
exec zsh

macOS

git clone https://github.com/lavantien/dotfiles.git ~/dev/github/dotfiles
cd ~/dev/github/dotfiles
chmod +x allow.sh && ./allow.sh
./bootstrap.sh
exec zsh

Windows (PowerShell 7+)

git clone https://github.com/lavantien/dotfiles.git $HOME/dev/github/dotfiles
cd $HOME/dev/github/dotfiles
.\bootstrap.ps1
. $PROFILE

Verify Installation

which n  # Should point to nvim
which lg  # Should point to lazygit
up  # Runs update-all

Available Commands

Script Purpose
bootstrap Initial setup - installs package managers, SDKs, LSPs, tools, deploys configs
deploy Deploy configuration files (Neovim, git hooks, shell, Claude Code)
update-all (up) Update all package managers and system packages (20+ managers)
git-update-repos Clone/update ALL GitHub repos via gh CLI, optionally sync system instructions
sync-system-instructions Sync AI system instructions (CLAUDE.md, AGENTS.md, etc.) to all repos
healthcheck Check system health - verify tools, configs, git hooks
backup Create timestamped backup before major changes
restore Restore from a previous backup
uninstall Remove deployed configs (keeps installed packages)

Windows uses .ps1 scripts, Linux/macOS uses .sh scripts.

Bootstrap Options

Option Bash PowerShell Default
Non-interactive -y, --yes -Y Prompt for confirmation
Dry-run --dry-run -DryRun Install everything
Categories --categories sdk -Categories sdk full
Skip update --skip-update -SkipUpdate Update package managers
Verbose --verbose -VerboseMode Show detailed output

Installation Categories

Category Description
minimal Package managers + git + CLI tools only
sdk Minimal + programming language SDKs
full SDK + all LSPs + linters/formatters (default)

Configuration (Optional)

All scripts use hardcoded defaults by default (categories: full, interactive prompts).

cp .dotfiles.config.yaml.example ~/.dotfiles.config.yaml
vim ~/.dotfiles.config.yaml
./bootstrap.sh  # Auto-detects config

Configuration Priority: Command-line flags > Config file > Hardcoded defaults

Setting Values Default
categories minimal, sdk, full full
editor nvim, vim, code, nano (none)
theme rose-pine, rose-pine-dawn, rose-pine-moon (none)
github_username your github username lavantien
base_dir path to git repos ~/dev/github
auto_commit_repos true, false false

Health & Troubleshooting

./healthcheck.sh

# JSON output (for CI/CD)
./healthcheck.sh --format json
Issue Solution
Git hooks not running git config --global core.hooksPath ~/.config/git/hooks
PowerShell execution policy Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Neovim plugins not installing In Neovim run :PackUpdate
zoxide not jumping Use directories normally for a few days to let zoxide learn

Complete Tools/Packages Matrix

Language LSP Tester Formatter Linter Type Check
Bash bashls bats shfmt shellcheck -
PowerShell powershell_es Pester Invoke-Formatter PSScriptAnalyzer PSScriptAnalyzer
Go gopls go test gofmt, goimports golangci-lint go vet
Rust rust-analyzer cargo test rustfmt clippy cargo check
Python pyright pytest ruff, black ruff mypy
JavaScript/TypeScript ts_ls jest prettier eslint tsc
HTML html - prettier - -
CSS/SCSS/SASS cssls - prettier stylelint -
Svelte svelte - prettier - svelte-check
C/C++ clangd Catch2 clang-format clang-tidy, cppcheck compiler
C# csharp_ls dotnet test dotnet format Roslyn analyzers dotnet build
Java jdtls (Linux/macOS only) JUnit checkstyle checkstyle javac
PHP intelephense php, PHPUnit pint PHPStan, Psalm -
Scala metals ScalaTest scalafmt scalafix scalac
Lua lua_ls busted stylua selene -
Typst tinymist built-in tinymist tinymist -
Dockerfile docker_ls - - hadolint -
Docker Compose docker_ls - prettier - -
Helm helm_ls - prettier - -
Kubernetes YAML yamlls kubectl prettier yamllint -
YAML yamlls - prettier yamllint -
TOML tombi - taplo - -

CLI Tools

fzf, yazi, zoxide, bat, eza, lazygit, gh, ripgrep, fd, tokei, btop, repomix, docker-compose, helm, kubectl

MCP Servers (Claude Code & OpenCode)

context7, playwright, repomix, serena

Diagram Generation

mermaid-cli (mmdc) - Generate Mermaid diagrams from command line

AI Applications (Windows)

ComfyUI Desktop - AI image generation (requires comfy install after bootstrap)


Hooks & Config Merging

Git Hooks

Pre-commit: auto-format, lint, type-check, re-stage fixed files

Commit-msg: enforce Conventional Commits (feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert)

Platform-specific: .sh for Linux/macOS, .ps1 for Windows

Claude Code Hooks

PostToolUse hooks are deprecated - replaced by Hookify rules for quality checks.

Statusline hook is still active and auto-registered in ~/.claude/settings.json.

Hookify Rules

Hookify provides per-language quality check reminders that trigger automatically when editing files. Rules are stored in .claude/hookify.*.local.md and work immediately after deployment - no restart needed.

Available Rules:

  • hookify.quality-go.local.md - Go (gofmt, goimports, golangci-lint, go vet, go test)
  • hookify.quality-rust.local.md - Rust (rustfmt, cargo check, clippy, test)
  • hookify.quality-python.local.md - Python (ruff, mypy, pytest)
  • hookify.quality-typescript.local.md - TS/JS (prettier, eslint, tsc, npm test)
  • hookify.quality-csharp.local.md - C# (dotnet format, build, test)
  • hookify.quality-php.local.md - PHP (pint, phpstan, psalm, phpunit)
  • hookify.quality-shell.local.md - Shell (shfmt, shellcheck)
  • hookify.quality-lua.local.md - Lua (stylua, selene)
  • hookify.quality-c-cpp.local.md - C/C++ (clang-format, clang-tidy, cppcheck)
  • hookify.quality-markdown.local.md - Markdown (prettier, markdownlint)
  • hookify.quality-yaml.local.md - YAML (prettier, yamllint)
  • hookify.quality-json.local.md - JSON (prettier, jq)
  • hookify.quality-svelte.local.md - Svelte (prettier, svelte-check)
  • hookify.quality-typst.local.md - Typst (typst check)
  • hookify.quality-toml.local.md - TOML (taplo)

Managing Rules:

  • Enable/Disable: Set enabled: true/false in the rule frontmatter
  • Create new: Add .claude/hookify.{name}.local.md files to your dotfiles
  • View active: Use /hookify:list command in Claude Code

OpenCode Config Merging

~/.config/opencode/opencode.json is merged (not overwritten):

  • Adds missing MCP servers
  • Updates existing ones
  • Preserves any existing settings not managed by dotfiles

Claude Code Windows LSP Patching

npm-installed LSPs (typescript-language-server, pyright-langserver, intelephense) need cmd.exe /c wrapper. Auto-patches marketplace.json to fix spawn EINVAL errors.

MCP Server Manual Patching (Windows)

On Windows, MCP servers that use npx (like zai-mcp-server) also need the cmd.exe /c wrapper in ~/.claude.json:

"mcpServers": {
  "zai-mcp-server": {
    "command": "cmd.exe",
    "args": ["/c", "npx", "-y", "@z_ai/mcp-server"]
  }
}

This fixes the "Windows requires 'cmd /c' wrapper to execute npx" warning in MCP diagnostics.

GUI Applications Post-Installation

ComfyUI Desktop (Windows): After bootstrap via winget, run comfy install to complete setup:

comfy install

This installs required models and dependencies for AI image generation.


Neovim Keybindings

Leader key is Space.

Keybinding Action
- Oil (file browser)
<leader>q Quit
<leader>x Write and source
<leader>' Alternate file
<leader>pt Toggle Typst preview
<leader>ps Start live preview
<leader>pc Close live preview
<leader>; Pick live preview
<leader>b LSP format
<leader>u Pack update
<leader>e FzfLua global
<leader>n FzfLua combine
<leader>/ Grep current buffer
<leader>z Live grep native
<leader>f Files
<leader>h Help tags
<leader>k Keymaps
<leader>l Loclist
<leader>m Marks
<leader>t Quickfix
<leader>gf Git files
<leader>gs Git status
<leader>gd Git diff
<leader>gh Git hunks
<leader>gc Git commits
<leader>gl Git blame
<leader>gb Git branches
<leader>gt Git tags
<leader>gk Git stash
<leader>\ LSP finder
<leader>dd LSP document diagnostics
<leader>dw LSP workspace diagnostics
<leader>, LSP incoming calls
<leader>. LSP outgoing calls
<leader>a LSP code actions
<leader>s LSP document symbols
<leader>w LSP workspace symbols
<leader>r LSP references
<leader>i LSP implementations
<leader>o LSP type definitions
<leader>j LSP definitions
<leader>v LSP declarations

Changelog

See CHANGELOG.md for version history and changes.


License

MIT