Idempotent bootstrap for WSL2/Ubuntu dev environments. Installs system tools, CLI utilities, and symlinks dotfiles via GNU Stow.
curl -fsSL https://raw.githubusercontent.com/jonathanhfmills/dotfiles/master/install.sh | bashClones the repo to ~/dotfiles and runs make install. Idempotent — safe to re-run.
After install, the dotfiles command is available:
dotfiles help # list all targets
dotfiles gemini # install Google Gemini CLI
dotfiles go # install Go + gopls LSPInstall WSL2 with Ubuntu from PowerShell (run as Administrator):
wsl --installRestart when prompted, then complete Ubuntu first-run setup.
git clone https://github.com/jonathanhfmills/dotfiles.git ~/dotfiles
cd ~/dotfiles && make installmake install is idempotent — safe to run multiple times or on an existing machine.
make install installs only the essentials:
| Category | Tools |
|---|---|
| System | jq, tmux, git, curl, make, wget, stow, ripgrep, bubblewrap, socat, unzip |
| Node | nvm, node 24, @anthropic-ai/sandbox-runtime |
| Docker | docker-ce, docker compose |
| Claude Code | claude CLI + caveman skill + oh-my-claudecode plugins |
Claude Code is installed by default with caveman + oh-my-claudecode plugins, oh-my-claude-sisyphus (OMC), and Lucid Memory MCP server.
Other AI CLIs are opt-in:
make codex # @openai/codex
make gemini # @google/gemini-cli
make qwen # @qwen-code/qwen-codeEach target installs the runtime, LSP binary, and Claude Code LSP plugin together:
make php # PHP-FPM + composer + intelephense + php-lsp plugin
make go # Go + gopls + gopls-lsp plugin
make rust # Rust + rust-analyzer + rust-analyzer-lsp plugin
make csharp # .NET (LTS + 8) + PowerShell + csharp-ls + csharp-lsp plugin
make java # OpenJDK + jdtls + jdtls-lsp plugin
make python # ty (Astral) + pyright-lsp plugin
make lua # lua-language-server + lua-lsp plugin
make lsp-servers # all of the above at onceLSP binaries land in ~/.local/bin (already in PATH). Plugins install automatically when claude is in PATH.
Note:
kotlin-lspandswift-lsphave no Linux binary. Install manually if needed.
make source-code-pro # Adobe Source Code Pro OTF → ~/.fonts
make caveman # caveman token-compression skill for 30+ AI editorsmake update # apt-get update && upgrade
make link # re-stow dotfiles (git, tmux, bin, .claude, .codex, .gemini, .qwen)
make proxy # start Caddy reverse proxy stack
make apt-repos # register third-party apt repos/keys (gh, claude-code, docker)
make github # GitHub CLI + auth + git identity setup
make bun # Bun JavaScript runtime
make ssh # openssh-server on port 2222 (Claude Desktop Remote SSH)
make lucid # Lucid Memory MCP server (also auto-installed via make claude-plugins)make link symlinks dotfiles and seeds global AI config. Also copies git/.gitconfig.example to git/.gitconfig if absent — fill in your personal values:
# git/.gitconfig — gitignored, local only
[user]
name = Your Name
email = you@example.com
signingkey = ssh-rsa AAAA...See CONTRIBUTING.md.
See SECURITY.md.