Commit Graph

1240 Commits

Author SHA1 Message Date
Alex Haydock 4d07beaf15 chore: Remove Tails from legacy boot list 2026-03-04 09:53:09 +00:00
Ricardo N Feliciano 67a6d0dc6c fix(quickget): arm64 support for Fedora editions
Maybe it was accurate in this past but the current Quickget release
suggest that only Fedora Server has arm64 support. That's not the case.
In fact checking the `releases.json` file that `quickget` already uses
shows us that every edition other than Onyx supports arm64.

This PR makes that change.

The command ran to check this info was:

```bash
curl -sL https://getfedora.org/releases.json | jq -r
'group_by(.variant)[] | "\(.[0].variant): \(map(.arch) | unique |
join(", "))"'

COSMIC-Atomic: aarch64, x86_64
Cloud: aarch64, ppc64le, s390x, x86_64
Container: aarch64, ppc64le, s390x, x86_64
Everything: aarch64, ppc64le, s390x, x86_64
IoT: aarch64, ppc64le, s390x, x86_64
KDE: aarch64, ppc64le, x86_64
Kinoite: aarch64, ppc64le, x86_64
Labs: aarch64, x86_64
Onyx: x86_64
Sericea: aarch64, x86_64
Server: aarch64, ppc64le, s390x, x86_64
Silverblue: aarch64, ppc64le, x86_64
Spins: aarch64, x86_64
Workstation: aarch64, ppc64le, x86_64
2026-02-20 18:22:19 +00:00
Phil Clifford 81d038cbae docs: align manual pages with release 4.9.8
chore: align doc submodule commit

docs(quickget): adapt whitespace in help_message()

needed in manual page regeneration to retain filtering of needed lines
currently omits the new flag for --disable-unattended

Signed-off-by: Phil Clifford <philip.clifford@gmail.com>
2026-02-10 12:41:59 +00:00
Martin Wimpress 25d1f09452 fix(quickget): pin macOS OpenCore and OVMF downloads to last-good commit
- Pin OSX-KVM URLs to commit da4b23b5e92c5b939568700034367e8b7649fe90
- Use pinned URLs for OpenCore.qcow2, OVMF_CODE.fd and
OVMF_VARS-1920x1080.fd
- Prevent breakage after upstream removed OVMF_CODE.fd from master (26
Jan 2026)

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-27 16:42:49 +00:00
Martin Wimpress 7825f33527 fix(quickemu): remove integrated OpenCore support, require OpenCore.qcow2
- Remove integrated OpenCore creation/extraction code from quickget:
  require_mtools/sgdisk helpers, create_macos_disk_with_opencore,
  download_opencore and related logic
- Simplify quickemu macOS boot flow to expect a separate OpenCore.qcow2
  or ESP.qcow2; streamline device/drive argument construction
- Remove mtools and gptfdisk from devshell.nix and package.nix
- Always download OpenCore.qcow2 via legacy method and update status
  messages

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-26 02:31:33 +00:00
Martin Wimpress 38817e1e6b
fix(quickget): resolve shellcheck warnings in azurelinux and rockylinux 2026-01-25 23:18:33 +00:00
Martin Wimpress 0a16748db6 feat(quickget): add architecture-aware output and filenames
- Display supported architectures when running ./quickget <os> (shows
"Archs: amd64 arm64")
- Add get_supported_archs() helper to enumerate available architectures
- Add arch_suffix() helper and append architecture suffix to VM
dir/config names
  for foreign architectures (e.g., alpine-v3.23-arm64/)
- Add NORMALISED_HOST_ARCH variable to detect foreign vs native
architecture
- Include arch="x86_64" or arch="aarch64" in config files for foreign
downloads
2026-01-25 18:36:03 +00:00
Martin Wimpress 9b54b36492 fix: use local ISO variable for azurelinux
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-01-25 15:45:26 +00:00
Martin Wimpress 5504fdf4cc feat(quickget): add Azure Linux (3.0) support
- Add os_info() case entry with a description for Azure Linux
- Add Azure Linux to os_support() list
- Implement releases_azurelinux() returning "3.0"
- Implement arch_azurelinux() returning "amd64 arm64"
- Implement get_azurelinux() using stable aka.ms download URLs:
  - https://aka.ms/azurelinux-3.0-x86_64.iso
  - https://aka.ms/azurelinux-3.0-aarch64.iso
Fixes #1459

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 15:45:26 +00:00
Phil Clifford 727c853461 fix: adjust rockylinux 10.0 dvd
Fix rockylinux 10.0 dvd iso naming

Signed-off-by: Phil Clifford <philip.clifford@gmail.com>
2026-01-25 14:52:12 +00:00
Phil Clifford 8a9cb55934 fix: restore rockylinux dynamic releases
The website was changed and the old parse was not cutting it
2026-01-25 13:43:47 +00:00
Martin Wimpress a56a43342d fix(quickget): exit on curl failure in web_get
Add exit 1 after curl failure handling in web_get

- Exit immediately when a download via curl fails
- Prevent continuing to build invalid VM configs after failed download

Fixes #1625
2026-01-25 13:41:46 +00:00
Martin Wimpress 2324d96303 refactor: quote expansions and add ShellCheck directive
- Quote URL argument passed to web_pipe in quickget to prevent
word-splitting
- Quote echoed variables in quickget (echo "${...}") for safe output
when values contain whitespace
- Add shellcheck disable=SC2054 in quickemu vm_boot to silence a
spurious ShellCheck warning

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 01:11:25 +00:00
Martin Wimpress 1991306df3 fix(quickget): prefer macOS-friendly hash commands in check_hash
- Prefer GNU coreutils g* hash commands on macOS when available; fall
back to native shasum/md5 otherwise
- Handle MD5 on macOS using 'md5 -r' and parse its output for comparison
- Warn and skip b2sum verification when GNU b2sum is not installed on
macOS
- Use a selected hash command variable when printing status and
performing checks

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress 6c957f6529 feat(quickget): support Ubuntu desktop ARM64 from 25.10
- Add arch_ubuntu() to enumerate supported architectures and gate ARM64
by release
- Validate architecture once RELEASE is known and exit/skip if
unsupported
- Use UBUNTU_ARCH when selecting ISO lines and hashes instead of
hardcoded amd64
- Use cdimage.ubuntu.com releases path for Ubuntu ARM64 desktop ISOs
- Default non-numeric releases (daily, dvd, etc.) to amd64 only

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress f1c66b45b9 fix(quickget): skip unsupported architectures for test/show operations
- If architecture is unsupported and OPERATION is "test" or "show",
  call test_result with SKIP and exit 0
- Keep existing error and exit 1 for non-test/show operations

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress 61d0bec3ba fix(quickget): validate architecture support after edition selection
- Skip early architecture check for OSes with editions_<os> to avoid
  rejecting valid edition-specific combinations
- Perform architecture validation after EDITION is known and show a
  descriptive error when the chosen edition isn't available on ARCH
- Preserve test/show behaviour (report SKIP) and keep previous flow for
  OSes without editions_<os>

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress 78fc1c93e6 fix(quickget): skip unsupported architectures for all operations
- Remove the OPERATION == "test" guard so is_arch_supported() is
evaluated
  unconditionally
- Apply the unconditional arch check in test_all() for editions loop,
  ubuntu-server, ubuntu desktop (ubuntu*), and the default case
- Skip generating URLs / running further logic when an OS is not
available
  for the requested ARCH
IMPACT: quickget will no longer attempt to generate or test downloads
for
architectures that the distro does not support, preventing incorrect URL
generation and false-positive test attempts.

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress 5bbfdd1b54 fix(quickget): validate architecture before attempting download
Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress 1f7ec7e52c feat(quickget): add --check-all-arch to test amd64 and arm64
- Add CLI flag --check-all-arch with help text and CHECK_ALL_ARCH var
- Implement loop to run checks for both amd64 and arm64, setting ARCH
per run
- Validate architecture and release/edition before generating URLs; skip
Windows
- Generate and check URLs per-arch, reporting PASS / FAIL / SKIP per
entry
- Update CI workflow to call ./quickget --check-all-arch for distro
matrix tests

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress 1e194c6941 feat(quickget): add per-distro architecture support and validation
- Add arch_*() functions declaring supported architectures for several
distros
- Add is_arch_supported() helper; default to amd64 when no arch_* exists
- Validate architecture before generating URLs or running tests
(web_get, zsync_get, test_all)
- Update test_result() to accept and display an optional reason when
skipping
- Prevent false failures by skipping tests for unsupported architectures
IMPACT: quickget now respects requested architectures and reports clear
SKIP reasons for distros that do not support the selected arch.

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress fe4364c7e1 fix(quickget): use ARCH for Debian ISOs and validate arm64 editions
- Use ARCH as DEBIAN_ARCH when constructing ISO filename and cdimage URL
- Update DEBCURRENT handling to select arch-specific iso-hybrid path
- Add explicit error and exit if arm64 is requested with a non-netinst
edition
  (Debian provides netinst images only for ARM64)

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress b62c144480 fix(quickget): select correct arch for Fedora and Ubuntu server ISOs
- Add FEDORA_ARCH and set to aarch64 when ARCH == arm64
- Use FEDORA_ARCH in jq filter to pick the correct Fedora ISO/sha256
- Add UBUNTU_ARCH and switch Ubuntu daily/releases URL for arm64
- Use UBUNTU_ARCH when parsing SHA256SUMS/MD5SUMS instead of hardcoded
amd64
Fixes incorrect ISO selection on ARM64 hosts and enables arm64
downloads.

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress 57f753a21d feat(quickget): detect host architecture and add --arch flag
- Add HOST_ARCH detection and set ARCH default (arm64 → arm64, others →
amd64)
- Add parse_arch_flag() and support --arch/-arch before or after
operation args
- Inject arch="aarch64" into generated VM configs when ARCH=arm64
- Use QEMU_ARCH in distro helpers (AlmaLinux, Alpine, etc.) to build
correct ISO names/URLs
- Update help text to document --arch and reorder flags display
- Tidy Alpine release parsing (use first match) and simplify Rocky URL
assignment
Note: quickget now defaults ARCH from the host; pass --arch to override
if you
need a different target architecture.

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 00:54:57 +00:00
Martin Wimpress 086128530f fix(quickget): support algorithm-prefixed hashes and b2sum
- Accept hashes in the form "algo:hash" and normalise prefix to
lowercase
- Map common prefixes (md5, sha1, sha256, sha512, b2sum|blake2|blake2b)
to tools
- Warn and skip verification for unknown prefixes
- Add macOS GNU coreutils mapping for gb2sum when using b2sum
- Use printf '%s  %s\n' to produce a stable "hash  filename" input for
--check

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-24 14:42:11 +00:00
Martin Wimpress 7668519b8d fix: prevent FAT directory name munging
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-01-24 12:42:51 +00:00
Martin Wimpress c96a2484e6 fix: prevent FAT direectory name munging
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-01-24 12:42:51 +00:00
Martin Wimpress f9249d657f fix: verify all mtools are available
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-01-24 12:42:51 +00:00
Martin Wimpress 1783381e29 feat(quickget): integrate OpenCore into macOS disk image by default
Create macOS VMs with OpenCore embedded in the EFI partition of disk.qcow2
instead of using a separate OpenCore.qcow2 file. This simplifies VM management
by reducing from two disk images to one.

Implementation:
- Add create_macos_disk_with_opencore() using mtools/sgdisk for cross-platform
  EFI partition creation without mounting or root privileges
- Add download_opencore() to extract OpenCore files from OSX-KVM image
- Use LC_ALL='' with mcopy to prevent FAT directory name mangling
- Adjust disk size threshold for macOS integrated mode (1GB vs 1.5MB)

Backwards compatibility:
- If OpenCore.qcow2 exists, use legacy two-disk boot method
- If mtools/sgdisk unavailable, fall back to legacy method automatically

New dependencies: mtools, gptfdisk (added to devshell.nix and package.nix)

Closes #1720
2026-01-24 12:42:51 +00:00
Martin Wimpress a2539d3c56 fix(quickget): resize Batocera image for GPT expansion 2026-01-24 02:10:49 +00:00
Martin Wimpress c66827ccb1 fix(quickget): extract Archcraft version folder from redirect URL
The hash URL was incorrectly using 'v${RELEASE}' (e.g., 'vlatest')
instead of extracting the actual version folder from the redirect URL.
Since releases_archcraft returns 'latest', the download redirect goes
to a versioned folder like 'v25.10', but the hash file lookup used
'vlatest' which doesn't exist.

Extract the version folder from the redirect URL to construct the
correct hash file path.
2026-01-24 01:43:24 +00:00
Martin Wimpress 7a59041120 fix(quickget): add hash verification for Mabox Linux 2026-01-24 01:43:24 +00:00
Martin Wimpress 9d4171b0d6 fix(quickget): add hash verification for KolibriOS 2026-01-24 01:43:24 +00:00
Martin Wimpress 2e5b29ad43 fix(quickget): add hash verification for Archcraft 2026-01-24 01:43:24 +00:00
Martin Wimpress 848ed99ef6
feat(quickget): add macOS Tahoe support and update board IDs. fixes #1731 2026-01-24 00:04:07 +00:00
Martin Wimpress e7c17eded2 fix(quickget): address PR review feedback
- Fix misleading comment in releases_fedora() to match actual behaviour
- Fix editions_zorin() to handle unset RELEASE in csv_data() context
2026-01-23 23:52:27 +00:00
Martin Wimpress 7dc93266c9 fix(quickget): remove Athena OS (no longer getting updates) 2026-01-23 23:52:27 +00:00
Martin Wimpress 083ae65ae3 fix(quickget): remove VX Linux (project website down) 2026-01-23 23:52:27 +00:00
Martin Wimpress 5b67c0808f fix(quickget): handle Solus Xfce beta naming for older releases
Xfce was a beta edition with uppercase naming (XFCE-Beta) in releases
prior to 2025-11-29. Fall back to beta naming when standard fails.
2026-01-23 23:52:27 +00:00
Martin Wimpress e560c22d69 fix(quickget): update Zorin OS download method and editions
- Use direct mirror URL instead of unreliable shortlink redirects
- Remove lite64 edition from Zorin 18 (now Pro-only)
- Automatically detect latest revision for each version
2026-01-23 23:52:27 +00:00
Martin Wimpress cb67f82e6c fix(quickget): dynamically find PCLinuxOS edition releases
Different editions have different release dates. Changed to 'latest'
release with dynamic ISO discovery per edition.
2026-01-23 23:52:27 +00:00
Martin Wimpress b1ccbe9e61 fix(quickget): update Parrot Security releases and editions
- Only list releases that have ISO files available
- Remove htb edition (discontinued in 7.0 series)
- Filter out releases with empty ISO directories
2026-01-23 23:52:27 +00:00
Martin Wimpress a10864541b fix(quickget): remove unavailable KolibriOS Italian locale
The it_IT locale no longer has ISO builds available.
2026-01-23 23:52:27 +00:00
Martin Wimpress 08f8313a96 fix(quickget): update Garuda Linux editions
Remove discontinued editions: kde-git, lxqt-kwin, mate, qtile, wayfire
Add new editions: hyprland, mokka
2026-01-23 23:52:27 +00:00
Martin Wimpress b94bc69728 fix(quickget): update MX Linux Xfce ISO naming
Xfce edition now uses 'MX-VERSION_Xfce_x64.iso' naming convention.
2026-01-23 23:52:27 +00:00
Martin Wimpress c67a9971f6 fix(quickget): remove discontinued KDE Neon developer edition
The developer edition no longer provides ISO images.
2026-01-23 23:52:27 +00:00
Martin Wimpress e08e84c720 fix(quickget): update Guix releases to 1.5.0 and 1.4.0
Remove EOL 1.3.0 which has unreliable mirror availability.
Add latest 1.5.0 release.
2026-01-23 23:52:27 +00:00
Martin Wimpress 98735ad60a fix(quickget): only list Debian archive versions with live images
Filter archive releases to only include those with -live directories,
ensuring live image editions are actually available for download.
2026-01-23 23:52:27 +00:00
Martin Wimpress f725c1998b fix(quickget): fix Artix Linux editions parsing
Community editions now include init system suffix (e.g., community-gtk-openrc).
Updated parsing to correctly extract full edition-init combinations.
2026-01-23 23:52:27 +00:00
Martin Wimpress 542987bdbc fix(quickget): update Athena OS ISO naming for v23.11+
Newer releases use 'athenaos-rolling' prefix instead of 'athena-rolling'.
Detect which naming scheme to use by checking URL availability.
2026-01-23 23:52:27 +00:00