Commit Graph

2305 Commits

Author SHA1 Message Date
github-actions[bot] 23d18ac090 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/0726a0e' (2026-04-22)
  → 'github:nixos/nixpkgs/64c08a7' (2026-05-23)
2026-05-28 14:45:52 +00:00
github-actions[bot] 2d9f6c9458 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/4c1018d' (2026-04-09)
  → 'github:nixos/nixpkgs/0726a0e' (2026-04-22)
2026-04-30 11:22:08 +01:00
github-actions[bot] 52da5f9bf7 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-schemas':
    'https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.3.0/019c9f61-e746-760e-a1fe-53f05b10d026/source.tar.gz' (2026-02-27)
  → 'https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.4.2/019d5cf2-ee3c-7313-964e-f3f83c35d509/source.tar.gz' (2026-04-03)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/2fc6539' (2026-02-23)
  → 'github:nixos/nixpkgs/4c1018d' (2026-04-09)
2026-04-19 11:25:33 +01:00
dependabot[bot] 2e2d8478dd build(deps): bump DeterminateSystems/nix-installer-action from 21 to 22
Bumps [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action) from 21 to 22.
- [Release notes](https://github.com/determinatesystems/nix-installer-action/releases)
- [Commits](https://github.com/determinatesystems/nix-installer-action/compare/v21...v22)

---
updated-dependencies:
- dependency-name: DeterminateSystems/nix-installer-action
  dependency-version: '22'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-19 08:34:21 +01:00
Arusekk b541fe1c58 docs(quickemu): update ArchWiki link
No functional changes; comments only.

Signed-off-by: Arusekk <floss@arusekk.pl>
2026-03-04 09:55:39 +00:00
dependabot[bot] 30509e17b6 build(deps): bump actions/download-artifact from 7 to 8
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 09:54:55 +00:00
dependabot[bot] 5344b2edfb build(deps): bump crazy-max/ghaction-import-gpg from 6 to 7
Bumps [crazy-max/ghaction-import-gpg](https://github.com/crazy-max/ghaction-import-gpg) from 6 to 7.
- [Release notes](https://github.com/crazy-max/ghaction-import-gpg/releases)
- [Commits](https://github.com/crazy-max/ghaction-import-gpg/compare/v6...v7)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-import-gpg
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 09:54:39 +00:00
github-actions[bot] ab73f043d5 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-schemas':
    'https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz' (2025-10-27)
  → 'https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.3.0/019c9f61-e746-760e-a1fe-53f05b10d026/source.tar.gz' (2026-02-27)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/a82ccc3' (2026-02-13)
  → 'github:nixos/nixpkgs/2fc6539' (2026-02-23)
2026-03-04 09:53:49 +00:00
Alex Haydock 4d07beaf15 chore: Remove Tails from legacy boot list 2026-03-04 09:53:09 +00:00
dependabot[bot] a6771fb636 build(deps): bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 09:52:02 +00:00
Alex Haydock 2ddbe4cd4d fix: Use correct paths for Secure Boot OVMF_VARS on NixOS hosts 2026-02-27 14:35:27 +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
github-actions[bot] b986819fe2 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/bfc1b8a' (2026-01-26)
  → 'github:nixos/nixpkgs/a82ccc3' (2026-02-13)
2026-02-17 02:54:47 -06: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
github-actions[bot] 879d0ba885 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/c5296fd' (2026-01-23)
  → 'github:nixos/nixpkgs/bfc1b8a' (2026-01-26)
2026-01-29 08:48:12 +00:00
Martin Wimpress c2d8c96074 feat(quickemu): prefer GTK display backend and add GTK->SDL fallback
- Set default --display to 'gtk' instead of 'sdl'
- Add runtime check to fall back to 'sdl' when QEMU lacks GTK support
  and print a note to the user
- Update usage text to show 'gtk' as the default display option

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-27 19:43:51 +00:00
Martin Wimpress 7cbc062a57 fix(quickemu): disable serial by default for macOS and Windows
- Remove noisy "Serial: (off)" echo and add explanatory comment
- Stop forcing serial="${serial:-socket}" early; leave unset and set
per-guest after config
- Set serial="none" for macOS and Windows guests, otherwise default to
"socket"
- Reduce terminal clutter for guests that do not emit useful serial
output
- Document how to override: use --serial or set serial=socket in the VM
.conf

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-27 18:23:58 +00:00
Martin Wimpress eb98ce1160 fix(quickemu): use vmware-svga display for macOS guests
- Replace previous VGA default with vmware-svga to align with macOS
  native VMware display driver and OSX-KVM expectations
- Improve resolution handling and mouse integration for macOS VMs

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-27 17:47:36 +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 ac4b75f46d feat(quickemu): enable local SPICE over Unix sockets with VirGL
- Use Unix sockets for local --display spice to allow GL/VirGL
acceleration
- Use egl-headless backend to provide GL context for virtio-gpu-gl; do
not
  enable SPICE gl=on (avoids blocking QEMU main loop)
- Add -vga none for SPICE modes to prevent duplicate scanouts
- Update start_viewer() to support spice+unix:// and
spice://localhost:port
  connection modes for spicy and remote-viewer clients
- Clean up Unix socket (.sock) files alongside existing .spice file
cleanup

Provides local GL-accelerated guest 3D via VirGL while keeping remote
access
over TCP unchanged.

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-27 15:20:36 +00:00
Martin Wimpress a89b6588ff fix(quickemu): simplify display device selection and remove -vga none
- Reorder and refine Windows mapping: map none|spice -> qxl-vga;
cocoa|gtk|sdl|spice-app -> virtio-vga
- Remove the VGA variable and the forced '-vga none' from VIDEO
composition
- Remove unused VGA initialization in vm_boot

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-27 08:16:31 +00:00
dependabot[bot] 23a4fb2609 build(deps): bump actions/upload-artifact from 4 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-27 08:16:17 +00:00
dependabot[bot] 63c9d44332 build(deps): bump actions/download-artifact from 4 to 7
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-27 08:16:02 +00:00
Martin Wimpress fbb2960ce5 feat(quickemu): enable SPICE display reconnection for running VMs
Fixes #1370

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-26 12:31:33 +00:00
Martin Wimpress 3c16de4de3 fix: update vendor lookup on darwin
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-01-26 11:21:57 +00:00
Martin Wimpress 4805fbd6f4 fix(quickemu): read "Vendor ID" for CPU vendor detection
- Change HOST_CPU_VENDOR lookup to use '^Vendor ID' when parsing
/proc/cpuinfo
- Ensures correct CPU vendor detection on systems that label the field
as 'Vendor ID' instead of 'Vendor'

Fixes #1845

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-26 11:21:57 +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 36d1c7f3de fix(macos): prevent default sound card overriding the compatible selection
Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-26 01:40:55 +00:00
Martin Wimpress a98a416133
Revert "fix(quickemu): enable pflash secure property only when secureboot on"
This reverts commit 5dfe6c9cf7.
2026-01-26 01:13:18 +00:00
Martin Wimpress 38817e1e6b
fix(quickget): resolve shellcheck warnings in azurelinux and rockylinux 2026-01-25 23:18:33 +00:00
Martin Wimpress 1840c7b7c1 fix(quickemu): only add 'topoext' cpu flag for x86_64 AMD guests
Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 23:13:23 +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 3c785eb50c fix(quickemu): detect audio backends via sockets, not pidof
- Replace process checks (pidof pipewire / pidof pulseaudio) with socket
  existence checks to determine functional audio services.
- PipeWire detection checks $PIPEWIRE_REMOTE or
  $XDG_RUNTIME_DIR/pipewire-0.
- PulseAudio detection checks $PULSE_SERVER or
  $XDG_RUNTIME_DIR/pulse/native.
- Change default audio driver from pa to alsa as a safer fallback on
  headless hosts.
- Set detection priority: PipeWire (if QEMU >= 8.1) → PulseAudio → ALSA.
- Reason: a listening socket indicates a working service; pidof can be
  misleading on headless servers and caused QEMU "Failed to initialize
PW context" errors.

Fixes #1838

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 18:27:25 +00:00
Martin Wimpress e777817ca9 perf(quickemu): improve disk I/O defaults (cache,aio)
- add cache=writeback and aio=threads to DRIVE_OPTIMISATIONS
- retain existing optimisations: discard=unmap,detect-zeroes=unmap
- improve write performance (host writeback caching) and async I/O
  parallelism via thread-based AIO
- follows Proxmox/libvirt QEMU disk best practices; researched for macOS
  but applies to all guests

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 16:11:06 +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
Martin Wimpress e600d742ba fix(quickemu): disable GL when display backend is none
- Disable GL context creation when no display backend is selected by
setting gl="off"
- Keep spice behaviour unchanged (DISPLAY_RENDER remains "none")
- Prevent GL-related errors and unnecessary GPU initialisation for
headless VMs

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 15:20:05 +00:00
Martin Wimpress dead42dc25 fix(nix): avoid CI stack overflow by using builtins.split
- Replace builtins.match with builtins.split for version extraction
- Previous regex with .* patterns caused catastrophic backtracking on large files (~2800 lines)
- builtins.split avoids full-string regex matching and is more efficient

Fixes: Nix build CI failure
2026-01-25 14:52:52 +00:00
Martin Wimpress dd39102ef9 build(flake): update nixpkgs to nixos-unstable
- Replace flake.nix nixpkgs URL with github:nixos/nixpkgs/nixos-unstable
- Update flake.lock to new locked rev, narHash and github type

No functional changes to scripts; resolves dependency refresh for Nix flakes.,
2026-01-25 14:52:52 +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 57cd52b1dc fix(quickemu): enable xhci when braille devices used
- Set usb_controller="xhci" in display_param_check() when BRAILLE is enabled.
- Braille devices are USB 1.1 (full-speed); EHCI only handles USB 2.0/3.0,
  which causes speed mismatch warnings and prevents braille devices from working.

Fixes #730
2026-01-25 13:26:02 +00:00
Martin Wimpress 64eedfe7c5 build(quickemu): require QEMU 6.1.0 minimum
- Raise global minimum QEMU version from 6.0.0 to 6.1.0.
- The option -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off used for macOS guests
  is only available in QEMU 6.1.0 and later; prefer raising the global requirement rather
  than adding per-flag conditionals.
- Update version check and error message in quickemu.

BREAKING CHANGE: Require QEMU 6.1.0; older QEMU will fail the version check.
2026-01-25 12:43:43 +00:00
Martin Wimpress 2384b0d263 fix(quickemu): enable vmware TSC and disable ACPI PCI hotplug for macOS
- Pass vmware-cpuid-freq=on to -cpu on Intel hosts to enable VMware TSC
  frequency reporting and improve macOS timing
- Add ICH9-LPC flag to disable ACPI PCI hotplug bridge support to avoid
  macOS PCI hotplug issues (required for QEMU 6.1+)

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 12:43:43 +00:00
Martin Wimpress eb54549353 fix(quickemu): select correct sound card for macOS guests
- Split macOS sound card logic by OS version:
  - Use virtio-sound-pci for macOS 12+ (Monterey and newer)
  - Use ich9-intel-hda for Big Sur
  - Keep intel-hda for earlier macOS releases
- Add virtio-sound-pci case to configure_audio() to pair the device with
  existing audiodev backends (PulseAudio, PipeWire, ALSA, CoreAudio)
- Update help text to include virtio-sound-pci as an allowed sound card
option
- Add virtio-sound-pci to allowed sound cards in
sound_card_param_check()

VoodooHDA injected via OpenCore stopped working from macOS 11.3+
onwards and usb-audio proved unreliable for Big Sur+. virtio-sound-pci
works natively on macOS 12+ without kexts and fixes guest audio for
affected versions.

Fixes #1642

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 11:55:51 +00:00
Martin Wimpress 76b29c659c perf(quickemu): enable TRIM/discard and detect-zeroes for qcow2 drives
Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 10:43:01 +00:00
Martin Wimpress 81b99feccd perf(quickemu): tune TCG translation cache and enable multithreaded TCG
- Add TCG-specific runtime optimisations in vm_boot for
cross-architecture VMs
- Detect host RAM and set tb-size to 512 for hosts with >=16GB,
otherwise 256
- Append -accel tcg,tb-size=${TCG_TB_SIZE},thread=multi to QEMU args
- Improve TCG translation cache behaviour and SMP performance for TCG
guests

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 03:15:46 +00:00
Martin Wimpress d8b27e8480
docs: update documentation
Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 02:22:38 +00:00
Martin Wimpress 0742312aa5 build(packaging): sync Nix flakes, devshell and Debian packaging
- Update flake.nix and package.nix to refresh package definitions and
pins
- Refresh devshell.nix to include updated development dependencies
- Adjust debian/control metadata to match packaging and dependency
changes
- Align packaging metadata between Nix and Debian to improve
reproducibility

Signed-off-by: Martin Wimpress <martin@wimpress.org>
2026-01-25 01:51:53 +00:00