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
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
"""Package definitions consumed by bootstrap_environment.py.
|
||||
|
||||
System and Flatpak packages are flat lists of names.
|
||||
|
||||
Custom packages declare a URL template plus an optional ``fetch_latest`` hint.
|
||||
At install time the bootstrap script will attempt to look up the most recent
|
||||
release and fall back to the pinned (version, sha256) tuple on failure.
|
||||
|
||||
URL templates use ``str.format`` with the following substitutions:
|
||||
{version} pkg.version (or the latest resolved version)
|
||||
{arch} "x86_64" or "aarch64"
|
||||
{arch_go} Go-style: "amd64" or "arm64"
|
||||
"""
|
||||
|
||||
SYSTEM_PACKAGES: list[str] = [
|
||||
"ansible",
|
||||
"ansible-core",
|
||||
"aria2",
|
||||
"bashtop",
|
||||
"build-essential",
|
||||
"buildah",
|
||||
"containerd.io",
|
||||
"docker-buildx-plugin",
|
||||
"docker-ce-cli",
|
||||
"docker-ce-rootless-extras",
|
||||
"docker-ce",
|
||||
"docker-compose-plugin",
|
||||
"dotnet-sdk-10.0",
|
||||
"ffmpeg-free",
|
||||
"gcc",
|
||||
"gh",
|
||||
"git",
|
||||
"github-desktop",
|
||||
"google-chrome-stable",
|
||||
"lua",
|
||||
"minisign",
|
||||
"minikube",
|
||||
"obs-studio",
|
||||
"obsidian",
|
||||
"pipx",
|
||||
"poetry",
|
||||
"podman",
|
||||
"qemu",
|
||||
"restic",
|
||||
"rg",
|
||||
"shutter",
|
||||
"temurin-25-jdk",
|
||||
"vagrant",
|
||||
"virt-manager",
|
||||
"vivaldi-stable",
|
||||
"webcamoid",
|
||||
"wireshark",
|
||||
"yt-dlp",
|
||||
"zoom",
|
||||
"bzip2",
|
||||
"bzip2-devel",
|
||||
"gdbm-libs",
|
||||
"libffi-devel",
|
||||
"libnsl2",
|
||||
"libuuid-devel",
|
||||
"libzstd-devel",
|
||||
"make",
|
||||
"openssl-devel",
|
||||
"patch",
|
||||
"readline-devel",
|
||||
"sqlite",
|
||||
"sqlite-devel",
|
||||
"tk-devel",
|
||||
"xz-devel",
|
||||
"zlib-devel",
|
||||
]
|
||||
|
||||
FLATPAK_PACKAGES: list[str] = [
|
||||
"com.obsproject.Studio",
|
||||
"fr.handbrake.ghb",
|
||||
"io.github.webcamoid.Webcamoid",
|
||||
"one.ablaze.floorp",
|
||||
"com.vivaldi.Vivaldi",
|
||||
"org.darktable.Darktable",
|
||||
]
|
||||
|
||||
CUSTOM_PACKAGES: list[dict] = [
|
||||
{
|
||||
"name": "go",
|
||||
"version": "1.26.3",
|
||||
"url_template": "https://go.dev/dl/go{version}.linux-{arch_go}.tar.gz",
|
||||
"sha256": "2b2cfc7148493da5e73981bffbf3353af381d5f93e789c82c79aff64962eb556",
|
||||
"fetch_latest": "go",
|
||||
},
|
||||
{"name": "neovim"},
|
||||
{
|
||||
"name": "firecracker",
|
||||
"version": "1.15.1",
|
||||
"url_template": (
|
||||
"https://github.com/firecracker-microvm/firecracker/releases/download/"
|
||||
"v{version}/firecracker-v{version}-{arch}.tgz"
|
||||
),
|
||||
"sha256": "d4a32ab2322d887ca1bc4a4e7afa9cc35393e6362dfc2b3becb389d362e4275a",
|
||||
"fetch_latest": "firecracker",
|
||||
},
|
||||
{
|
||||
"name": "zig",
|
||||
"version": "0.16.0",
|
||||
"url_template": "https://ziglang.org/download/{version}/zig-{arch}-linux-{version}.tar.xz",
|
||||
"sha256_url_template": (
|
||||
"https://ziglang.org/download/{version}/zig-{arch}-linux-{version}.tar.xz.minisig"
|
||||
),
|
||||
"minisign_key": "RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U",
|
||||
"fetch_latest": "zig",
|
||||
},
|
||||
{"name": "nvm"},
|
||||
{"name": "pyenv"},
|
||||
]
|
||||
Reference in New Issue
Block a user