Refactor package list to Python module with dynamic versions #1

Merged
JMR-dev merged 3 commits from claude/refactor-packages-python-20kcR into main 2026-05-18 14:10:36 +00:00
3 Commits
Author SHA1 Message Date
Claude 8acdb30e83 Add zsh + oh-my-zsh, set default shell per distro family
- Add zsh to SYSTEM_PACKAGES
- Detect RHEL-family vs Debian-family from /etc/os-release ID/ID_LIKE
  (falls back to PKG_MGR if os-release is unreadable)
- ensure_zsh_default sets zsh as the invoking user's login shell after
  system install: usermod -s on RHEL-family (chsh under default
  authselect refuses other-user changes), chsh -s elsewhere; SUDO_USER
  is preferred so sudo invocations target the real user
- Add oh-my-zsh to CUSTOM_PACKAGES; the installer runs the official
  unattended script (requires zsh + git, which are already installed by
  this point) and rewrites ZSH_THEME to "gnzh" in ~/.zshrc
- As a final step, run 'zsh -c "source ~/.zshrc"' to validate the rc
  file (the user's interactive shell is unaffected — they need a new
  terminal to pick up the new default shell)
2026-05-18 14:05:09 +00:00
Claude a05df917f7 Add pip as a custom package via python -m ensurepip
pip is unusual among the custom packages because it ships inside CPython
itself, so it doesn't need a URL or archive. The handler bootstraps it
from the standard-library wheel via 'python3 -m ensurepip --upgrade' and
then self-upgrades to the latest version. Detection uses
'python3 -m pip --version' instead of a filesystem path.
2026-05-18 13:54:46 +00:00
Claude a4d1dfb9fb Refactor package list to Python module with dynamic versions
- Move SYSTEM_PACKAGES, FLATPAK_PACKAGES, and CUSTOM_PACKAGES into
  formatted_packages.py as typed Python data; drop the bespoke parser
- Custom package URLs are now string templates with {version}, {arch},
  and {arch_go} substitutions, so the same entry works on x86_64 and
  aarch64 without hand-editing the URL
- Add best-effort latest-version resolvers for Go, Firecracker, and Zig
  (using go.dev JSON, GitHub releases, and ziglang index.json
  respectively); on any failure the pinned version + sha256 are used
  and the fallback is logged
- Make Neovim's archive name and install dir arch-aware (x86_64/arm64)
- Document that --no-gui skips the entire Flatpak section, including
  installing flatpak itself
2026-05-18 13:44:39 +00:00