On a fresh Windows machine:
- Set up a local account: upon initial boot, open command prompt (
Shift + F10) and runOOBE\BYPASSNRO. - Run in PowerShell (as admin):
irm https://raw.githubusercontent.com/budmonde/dotfiles/main/bootstrap.ps1 | iexThis ensures winget is on PATH, installs git and python via winget, configures git to use Windows OpenSSH, and enables the ssh-agent service.
Then follow the printed next steps to add SSH keys, clone, and run install.ps1.
Dotbot profiles select and order lifecycle-aware resource installers from install/.
See install/README.md for the protocol, shared backends, version ownership, custom-script requirements, and verification commands.
Run the common environment suite from the repository root:
./test.sh
List the named groups declared in the YAML contract:
./test.sh --list-checks
Run one common group:
./test.sh --check git
Repeat --check to run a small set of groups:
./test.sh --check git --check github-cli
On Windows, use the equivalent PowerShell entry point:
.\test.ps1 --check gitTest a profile with the same name used by its installer:
./test-profile agentic
.\test-profile.ps1 agenticProfile commands pass only the selected profile's shared and platform test files to envtest.
The default output shows one color-coded status line for every group, expands failures to the failed primitive names, and ends with a summary.
Pass --verbose to add detailed diagnostics, durations, and unexpected tracebacks.
Status labels use terminal colors automatically; set NO_COLOR to disable them.
The generic test engine is pinned as the envtest/ submodule.
The root launchers own platform and profile orchestration and pass the selected YAML files to that engine explicitly.
test.conf.yaml, test.unix.conf.yaml, and test.windows.conf.yaml hold the common and platform contracts.
Profile contracts live next to their corresponding profile configuration as <profile>.test.conf.yaml.
test.conf.yaml contains the platform-neutral command and configuration checks shared by the supported runtime installers.
Platform and profile contracts contain only assertions whose runtime behavior or setup differs by platform or profile.
Use a shared profile contract when its runtime assertions are identical on every platform; add a platform profile contract only when they differ.
Pass --config <path> after the standard layers to add a machine-specific overlay.
Run ./test.sh --check ssh to verify GitHub SSH authentication.
The SSH command is non-interactive and never accepts or writes host keys.
Other local-only credentials and snapshot publication will be added by the local suite or a later publication phase.
Quality of life plugins that may be worth adding:
| Plugin | Purpose |
|---|---|
| nvim-autopairs | Auto-close brackets, quotes |
| indent-blankline.nvim | Visual indent guides |
| todo-comments.nvim | Highlight TODO/FIXME/NOTE comments |
| trouble.nvim | Better diagnostics list |
| harpoon | Quick file marks/navigation |
| undotree | Visual undo history |
| noice.nvim | Fancy cmdline/messages UI |
| oil.nvim | Edit filesystem like a buffer |