Debian dotfiles for a WSL2-based setup.
In WSL, install apt packages and basic Bash profile in one command:
curl -s https://raw.githubusercontent.com/dannybrown37/dotfiles/main/bootstrap.sh | bashThe output of just in the root directory:
Usage: just [option]
Start Here:
bootstrap Full machine setup (apt, bash, cli-tools, python, password-store)
extras Languages, editors, and opt-in tools, with ✓ for installed
Environment-Specific:
vscode Link VS Code settings, then pick extensions (✓ = installed)
windows Windows-side tools (winget, npm, uv, win32yank, net-rescue), with ✓ for installed
gnome Install Gnome extensions (dash-to-dock, just-perfection)
Secrets (requires GPG keys):
secrets-save Save local secrets to password-store, push to private repo
secrets-load Pull private repo, load secrets from password-store to local files
Verification:
qa Run every prek hook, then all tests (also callable alone: just check, just test)
audit Audit this machine against every dotfiles dependency (read-only)
git-doctor Diagnose a refused git push -- credentials, remotes, transport (read-only)
net-doctor Diagnose a dead network -- link, IP, gateway, internet, DNS (read-only, works offline)
bench-shell Benchmark interactive shell startup time
Commands are auto-documented with a # @doc comment on the same line as the command definition.
| Directory | Description |
|---|---|
ahk/ |
AutoHotkey v2 scripts for Windows, run as one process from main.ahk |
aws/ |
AWS helper scripts and configuration |
bin/ |
Sourced shell scripts loaded into the current session |
config/ |
Dotfiles (.bashrc, .gitconfig, .inputrc, .ruff.toml, .secrets) symlinked to ~ |
docs/ |
Long-form documentation extracted from the README |
githooks/ |
Tracked git hooks (core.hooksPath) -- forward pre-commit, commit-msg and pre-push to prek |
install/ |
Bootstrap install scripts invoked via justfile recipes |
nvim/ |
Neovim configuration (lazy.nvim, Lua) |
references/ |
Reference documentation — mental models, LLM rules, and other persistent reference material |
scripts/ |
Non-sourced standalone executable scripts |
windows/ |
Windows PowerShell network-rescue verbs and the offline rescue cheat sheet |
wsl/ |
WSL-specific settings, functions, and komorebi config |
- Use Ctrl+J/Ctrl+K to scroll up and down through command history
- Use escape to clear current prompt entry
- bash-preexec hooks provide smart warnings, context awareness, and auto-activation
Updated with just bench-shell:
10 runs — min: 0.042s · median: 0.044s · avg: 0.045s · max: 0.052s (updated 2026-09-18)
- Handling Secrets — password-store sync, manifest format, new machine setup
- Multiple GitHub Accounts — identity routing, credential helpers,
gitdoctor - Git Workflow — branch, PR, auto-merge on green CI (
gitwfto view)
For when you're truly starting from scratch. just windows --all installs Windows Terminal, VS Code, AutoHotkey v2, and the rest of the winget-managed toolchain (plain just windows picks items one by one); only Chrome and the WSL distro itself are manual.
After WSL is up and this repo is cloned, run just windows --all, then ahk && ahk startup from WSL.
The fix for a dead network can't live on the internet, so it lives here. Run just windows net-rescue once, while things work: it copies windows/ to C:\Users\<you>\.dotfiles, loads it from the PowerShell profile, and takes a first snapshot. The copy is on C: so it still works when WSL won't start.
| Command | Where | What |
|---|---|---|
net-doctor (or just net-doctor) |
bash, PowerShell | Checks link, IPv4, gateway, internet by IP, DNS in order; prints the fix per failure with the real adapter name. Under WSL a failure hands over to the Windows doctor. |
rescue (or refs net-rescue) |
bash, PowerShell | Offline cheat sheet (windows/net-rescue.md): network recovery, Hyper-V console, restarting WSL |
net-show |
PowerShell | Adapter / IP / gateway / DNS at a glance |
net-snapshot |
PowerShell | Save the current config to ~\.net-snapshots |
net-restore [file] [-Full] [-Yes] |
PowerShell | Reapply the latest snapshot's DNS to the adapter that now holds the gateway; -Full adds IP + gateway when the adapter name still matches |
dns-set <ip>... |
PowerShell | Set DNS on the adapter holding the default route |
The write verbs print the exact command and self-elevate through UAC. just windows shows net-rescue unticked, and just audit warns, when the C: copy is stale.
In PowerShell, choose a distro:
wsl --set-default-version 2
wsl --install -d DebianTo reset a WSL distro (for example):
wsl --unregister kali-linux