Skip to content

✨ feat: per-OS package lists — Brewfile mac-only, apt list for Linux/WSL - #13

Merged
hadees merged 3 commits into
masterfrom
feat/per-os-packages
Jul 13, 2026
Merged

✨ feat: per-OS package lists — Brewfile mac-only, apt list for Linux/WSL#13
hadees merged 3 commits into
masterfrom
feat/per-os-packages

Conversation

@hadees

@hadees hadees commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

Phase 2 of the cross-platform plan. Homebrew stays deliberately macOS-only; Linux/WSL get the distro's native package manager with native names — no name-mapping layer, per the settled design.

  • .chezmoiscripts/darwin/ runs brew bundle on chezmoi apply whenever the Brewfile's embedded hash changes.
  • .chezmoiscripts/linux/ installs packages-apt.txt the same way: per-package (a name missing from a distro skips with a message instead of aborting), and degrades gracefully when apt or sudo is absent (prints the manual command instead).
  • Scripts are OS-gated in .chezmoiignore; the ephemeral class never runs any script.
  • Seed apt list = the tools the shell config actually references; lazygit/k9s noted as not-in-Ubuntu-repos.
  • CLAUDE.md gains the sync rule: adding/removing a tool updates every list where it's available, native name per distro.
  • Test applies pass --exclude scripts so CI never actually installs packages; new packages.bats sanity-checks the list.

Test plan

  • bats tests — 19/19 locally
  • Dry-run on the live mac config shows the darwin script rendering with hash + guard, linux script correctly absent on a darwin host
  • First post-migration signed commit verified (Good "git" signature) — closes the Phase 1 acceptance checklist
  • CI green on all four platforms

🤖 Generated with Claude Code

hadees and others added 3 commits July 13, 2026 11:59
…or Linux

.chezmoiscripts/darwin runs brew bundle when the Brewfile hash changes;
.chezmoiscripts/linux installs packages-apt.txt (native Ubuntu/Debian
names, per-package so distro drift skips instead of aborting), degrading
gracefully without apt or sudo. Scripts are OS-gated in .chezmoiignore
and never run on the ephemeral class. Test applies now pass --exclude
scripts so CI never actually installs packages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Non-empty, one package per line, no duplicates; also asserts
packages-apt.txt itself never deploys to $HOME.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codifies the convention that keeps the Brewfile and packages-apt.txt
from drifting: any tool added or removed gets updated in every list
where it's available, under each distro's native name.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@hadees hadees self-assigned this Jul 13, 2026
@hadees
hadees merged commit 77c2866 into master Jul 13, 2026
4 checks passed
@hadees
hadees deleted the feat/per-os-packages branch July 13, 2026 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant