Compare commits

...

1015 Commits

Author SHA1 Message Date
github-actions[bot] 78b938facf
flake.lock: Update (#1681)
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.803882%2Brev-fd487183437963a59ba763c0cc4f27e3447dd6dd/019767cd-a737-7649-ab6d-467a58ba9f92/source.tar.gz?narHash=sha256-mHv/yeUbmL91/TvV95p%2BmBVahm9mdQMJoqaTVTALaFw%3D' (2025-06-12)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.808864%2Brev-4e7667a90c167f7a81d906e5a75cba4ad8bee620/0198eaa3-105a-74fa-a9b2-0a930acea8de/source.tar.gz?narHash=sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo%3D' (2025-08-26)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-04 02:22:23 +01:00
dependabot[bot] 539b11bbf4 chore(deps): bump amannn/action-semantic-pull-request from 5 to 6
Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from 5 to 6.
- [Release notes](https://github.com/amannn/action-semantic-pull-request/releases)
- [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/action-semantic-pull-request/compare/v5...v6)

---
updated-dependencies:
- dependency-name: amannn/action-semantic-pull-request
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 01:20:11 +00:00
Dott. Leonardo Migliorelli 4de41eb836
feat: Homebrew Install for macos Sequoia (#1693)
* added homebrew formulae
* Made the base formulae dynamic on latest release, included the head option to download master
2025-09-02 15:30:01 +01:00
Phil Clifford 4a11725b1e fix: change iso fs for unattended iso
fixes #1621
2025-08-28 12:01:57 +01:00
dependabot[bot] 508822fc90 chore(deps): bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 00:12:27 +01:00
dependabot[bot] 6d0a09e831 chore(deps): bump DeterminateSystems/flake-checker-action from 10 to 12
Bumps [DeterminateSystems/flake-checker-action](https://github.com/determinatesystems/flake-checker-action) from 10 to 12.
- [Release notes](https://github.com/determinatesystems/flake-checker-action/releases)
- [Commits](https://github.com/determinatesystems/flake-checker-action/compare/v10...v12)

---
updated-dependencies:
- dependency-name: DeterminateSystems/flake-checker-action
  dependency-version: '12'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 00:12:22 +01:00
dependabot[bot] 8ebc01bd91 chore(deps): bump DeterminateSystems/update-flake-lock from 25 to 27
Bumps [DeterminateSystems/update-flake-lock](https://github.com/determinatesystems/update-flake-lock) from 25 to 27.
- [Release notes](https://github.com/determinatesystems/update-flake-lock/releases)
- [Commits](https://github.com/determinatesystems/update-flake-lock/compare/v25...v27)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-version: '27'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 00:12:15 +01:00
dependabot[bot] ee531af4fb chore(deps): bump DeterminateSystems/nix-installer-action from 17 to 19
Bumps [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action) from 17 to 19.
- [Release notes](https://github.com/determinatesystems/nix-installer-action/releases)
- [Commits](https://github.com/determinatesystems/nix-installer-action/compare/v17...v19)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 00:12:05 +01:00
Lorenzo a6367ccb78
fix: Arch Linux Mirror (#1709)
Use official Arch Linux HTTPS server over potentially out of date mirror
2025-08-17 18:02:42 +01:00
Phil Clifford 36082437e1 fix(ubuntu): just get the latest iso as the previous has been removed
They have left references to the  24.04.2 iso in the SHA256SUMS file but removed the iso.
We need to filter out the latest until they tidy up.
2025-08-17 18:00:14 +01:00
Daniel Napora 808caa1e74 fix(Trisquel): Add missing field separator (|) 2025-08-17 16:58:48 +00:00
Liam bd178bb4c3 chore: Document Fedora edition/variant change 2025-07-31 15:09:56 +01:00
Liam f6b36c4ec5 fix: Accept edition as fedora variant 2025-07-31 15:09:56 +01:00
Alan Pope d912402e32 fix(macos) Add support for gnu hash algo 2025-07-29 18:16:31 +00:00
Phil Clifford 58d7c41998 fix: add dependency on new qemu-system-modules-spice for noble onwards 2025-07-29 18:00:47 +00:00
mag37 7d7332a1fc
fix: quickget - Handle Fedora KDE 42 (and up) as edition and not as spin. (#1697) 2025-07-21 19:28:36 +01:00
Kenichi Kamiya e4c2c5cf2b fix(nixos): support only latest 25.05
Previously, edition fallback logic allowed downloading the correct
"graphical" ISO for 25.05 even when specifying "plasma6" or "gnome".
However, the VM_PATH and directory name still used the original edition
(e.g., nixos-25.05-plasma6). Fixing this would require more complicated
changes to the code.

NixOS 24.11 will reach EOL on 2025-06-30, about two weeks from now.
2025-07-07 12:27:34 +01:00
Kenichi Kamiya 91e06a64fd fix(nixos): update editions
- Drop legacy 23.11 support; now only 24.11 or later is allowed
- Fallback to "graphical" edition except 24.11
- Do not display "graphical" edition to users;
  it is not supported in 24.11
2025-07-07 12:27:34 +01:00
TheMuso 9f90d46ea1
feat: Add support for FreeDOS 1.4 (#1678) 2025-06-18 02:45:25 +01:00
dependabot[bot] 6145f685aa chore(deps): bump DeterminateSystems/flake-checker-action from 9 to 10
Bumps [DeterminateSystems/flake-checker-action](https://github.com/determinatesystems/flake-checker-action) from 9 to 10.
- [Release notes](https://github.com/determinatesystems/flake-checker-action/releases)
- [Commits](https://github.com/determinatesystems/flake-checker-action/compare/v9...v10)

---
updated-dependencies:
- dependency-name: DeterminateSystems/flake-checker-action
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-15 13:07:44 +01:00
github-actions[bot] 3d40baa0e4 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.802491%2Brev-7c43f080a7f28b2774f3b3f43234ca11661bf334/01970886-40c4-7b8c-a32f-bb580ba9bcb1/source.tar.gz?narHash=sha256-rqc2RKYTxP3tbjA%2BPB3VMRQNnjesrT0pEofXQTrMsS8%3D' (2025-05-25)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.803882%2Brev-fd487183437963a59ba763c0cc4f27e3447dd6dd/019767cd-a737-7649-ab6d-467a58ba9f92/source.tar.gz?narHash=sha256-mHv/yeUbmL91/TvV95p%2BmBVahm9mdQMJoqaTVTALaFw%3D' (2025-06-12)
2025-06-15 13:07:23 +01:00
github-actions[bot] c6c75e6550 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.717837%2Brev-a39ed32a651fdee6842ec930761e31d1f242cb94/0196c53c-7a4e-7500-910f-55c1ddbd2de5/source.tar.gz?narHash=sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5%2BSHJkS5ID/Jo%3D' (2025-05-11)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.802491%2Brev-7c43f080a7f28b2774f3b3f43234ca11661bf334/01970886-40c4-7b8c-a32f-bb580ba9bcb1/source.tar.gz?narHash=sha256-rqc2RKYTxP3tbjA%2BPB3VMRQNnjesrT0pEofXQTrMsS8%3D' (2025-05-25)
2025-05-29 11:05:23 +01:00
Liam 0e6be87757 fix(solus): update editions function to find correct editions 2025-05-26 19:22:51 +00:00
Phil Clifford 517ba94203 fix: adapt openindiana release search to updated website 2025-05-25 02:32:19 +00:00
github-actions[bot] 7ad2308fa3 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.717484%2Brev-26245db0cb552047418cfcef9a25da91b222d6c7/01967ace-4a07-717a-a72f-cc60008c3b59/source.tar.gz?narHash=sha256-1rqa/XPSJqJg21BKWjzJZC7yU0l/YTVtjRi0RJmipus%3D' (2025-04-27)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.717837%2Brev-a39ed32a651fdee6842ec930761e31d1f242cb94/0196c53c-7a4e-7500-910f-55c1ddbd2de5/source.tar.gz?narHash=sha256-k9ut1LSfHCr0AW82ttEQzXVCqmyWVA5%2BSHJkS5ID/Jo%3D' (2025-05-11)
2025-05-22 11:21:57 +01:00
dependabot[bot] 42d81b12bb chore(deps): bump DeterminateSystems/update-flake-lock from 24 to 25
Bumps [DeterminateSystems/update-flake-lock](https://github.com/determinatesystems/update-flake-lock) from 24 to 25.
- [Release notes](https://github.com/determinatesystems/update-flake-lock/releases)
- [Commits](https://github.com/determinatesystems/update-flake-lock/compare/v24...v25)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-version: '25'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-22 11:21:39 +01:00
Lorenzo 2129abf060 Fixed parrotsec urls 2025-05-11 14:24:49 +01:00
github-actions[bot] 0d61c0643e flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.716947%2Brev-26d499fc9f1d567283d5d56fcf367edd815dba1d/01962e50-af41-7ff9-8765-ebb3d39458ba/source.tar.gz?narHash=sha256-FHlSkNqFmPxPJvy%2B6fNLaNeWnF1lZSgqVCl/eWaJRc4%3D' (2025-04-12)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.717484%2Brev-26245db0cb552047418cfcef9a25da91b222d6c7/01967ace-4a07-717a-a72f-cc60008c3b59/source.tar.gz?narHash=sha256-1rqa/XPSJqJg21BKWjzJZC7yU0l/YTVtjRi0RJmipus%3D' (2025-04-27)
2025-05-11 14:24:03 +01:00
Steffen Vogel 89fa572c85 fix(nix): Do not use per-system overlays in Flake 2025-05-11 14:23:23 +01:00
dependabot[bot] 45dd058774 chore(deps): bump DeterminateSystems/nix-installer-action from 16 to 17
Bumps [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action) from 16 to 17.
- [Release notes](https://github.com/determinatesystems/nix-installer-action/releases)
- [Commits](https://github.com/determinatesystems/nix-installer-action/compare/v16...v17)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-11 14:22:28 +01:00
spameier f25205f451 fix(quickemu): correctly handle version 10.0.0 of QEMU 2025-05-01 19:17:29 +00:00
Liam 6b51f740a4 feat: Add Bazzite Deck; fix: Correct bazzite filenames 2025-04-17 17:49:05 +00:00
github-actions[bot] ed455b17a6 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.714925%2Brev-f44bd8ca21e026135061a0a57dcf3d0775b67a49/01954925-64dc-774f-8cc1-a596fc29244f/source.tar.gz?narHash=sha256-t%2BVaahjQAWyA%2BCtn2idyo1yxRIYpaDxMgHkgCNiMJa4%3D' (2025-02-26)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.716947%2Brev-26d499fc9f1d567283d5d56fcf367edd815dba1d/01962e50-af41-7ff9-8765-ebb3d39458ba/source.tar.gz?narHash=sha256-FHlSkNqFmPxPJvy%2B6fNLaNeWnF1lZSgqVCl/eWaJRc4%3D' (2025-04-12)
2025-04-15 13:21:51 +01:00
Phil Clifford 727708b1ae
fix: handle pclinuxos inconsistent naming (#1629)
* fix: handle inconsistent filenaming

They name releases with a dash for mate and a dot for the others.  No bets on when they notice this and make it consistent.  In case they somehow get a dashed name first swap the dotty ones too.
2025-04-15 13:18:07 +01:00
user20198 0c4e257048
feat: Add PCLinuxOS to quickget (#1610)
* Add PCLinuxOS to quickget


---------

Co-authored-by: Phil Clifford <philclifford@users.noreply.github.com>
2025-04-12 23:07:25 +01:00
TheMuso 910d35f80c
fix: Use the pcnet ethernet device for FreeDOS (#1587)
FreeDOS does ship the Crynwr packet driver package, which does contain an
RTL8139 driver. However, you have to install the package after installing
FreeDOS, even if you performed a full install. It also seems to lock up for
me when attempting to load it.

The PCNet packet driver on the other hand, is installed with a full FreeDOS
install, is open source, and does work, at least for me.
2025-04-12 22:30:39 +01:00
Anatoli Babenia 616d10b594
feat(quickget): Show download path (#1516)
* feat(quickget): Show full download path


---------

Co-authored-by: Phil Clifford <philclifford@users.noreply.github.com>
2025-04-12 21:50:08 +01:00
Phil Clifford 40f86c0af1 chore: move arco to author-requested release source 2025-04-12 20:43:28 +00:00
Alex Haydock 15c0003442 fix: Select OVMF_VARS file with preloaded MS Platform Keys (Debian/Ubuntu hosts) 2025-04-12 21:42:47 +01:00
Alex Haydock f01db134da fix: Select OVMF_VARS file with preloaded MS Platform Keys (Fedora/RHEL-family hosts) 2025-04-12 21:42:47 +01:00
Alex Haydock 6d5b9231d2 fix: Enable SMM for Linux guests on Linux hosts when Secure Boot is enabled 2025-04-12 21:42:47 +01:00
Liam 9dc70808c5 fix: Better match parrotsec releases 2025-04-12 20:29:09 +00:00
dependabot[bot] daba59d46c chore(deps): bump DeterminateSystems/magic-nix-cache-action from 8 to 9
Bumps [DeterminateSystems/magic-nix-cache-action](https://github.com/determinatesystems/magic-nix-cache-action) from 8 to 9.
- [Release notes](https://github.com/determinatesystems/magic-nix-cache-action/releases)
- [Commits](https://github.com/determinatesystems/magic-nix-cache-action/compare/v8...v9)

---
updated-dependencies:
- dependency-name: DeterminateSystems/magic-nix-cache-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-07 01:48:53 +00:00
github-actions[bot] 4ecf677a74 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.712007%2Brev-d49da4c08359e3c39c4e27c74ac7ac9b70085966/01940ca0-b117-7d0e-b1ef-d579ee6d2f13/source.tar.gz?narHash=sha256-MgdXpeX2GuJbtlBrH9EdsUeWl/yXEubyvxM1G%2ByO4Ak%3D' (2024-12-27)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.714925%2Brev-f44bd8ca21e026135061a0a57dcf3d0775b67a49/01954925-64dc-774f-8cc1-a596fc29244f/source.tar.gz?narHash=sha256-t%2BVaahjQAWyA%2BCtn2idyo1yxRIYpaDxMgHkgCNiMJa4%3D' (2025-02-26)
2025-03-07 01:48:32 +00:00
Phil Clifford 3da9edc995
fix: correctly match editions (#1585)
Closes #1583
2025-02-09 16:53:45 -08:00
Phil Clifford b60ff761e7
fix: move creation of script before functions that may update it (#1577) 2025-02-01 14:11:53 -08:00
nxxxse 588e421040
chore: use https for git submodules to use CA PKI instead of SSH TOFU (#1553)
Defaulting to HTTPS for submodule is more user-friendly.
2025-02-01 14:45:33 +00:00
Liam f87cc613ab
fix: Correctly throw errors when an invalid option is passed (#1560)
* fix: Correctly throw errors when a parameter is not fully matched
2025-02-01 14:39:48 +00:00
Liam 70b531c463
fix: Allow non-v24 arcolinux releases (#1575) 2025-02-01 14:37:21 +00:00
Gustavo Velásquez ae94ac7c16
docs: Fix typo in README.md (#1568) 2025-01-29 10:56:28 +00:00
Liam eb0fd03137
fix: Disregard curl configuration (#1571) 2025-01-29 10:54:23 +00:00
Alex Haydock 0c772d5619
fix: Check for PipeWire as well as PulseAudio before falling back to ALSA (#1565)
* fix: Check for PipeWire as well as PulseAudio before falling back to ALSA

* fix: Use PipeWire backend if available, and where QEMU version is >8.1

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>

---------

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2025-01-20 11:59:00 -08:00
hyperpuncher 20b17cb129
feat: Linux Mint 22.1 support (#1563) 2025-01-18 15:12:21 -08:00
debuggerx01 37190c7b3a
fix(macos): Correct version user receives from quickget; add sequoia (#1550)
* fix(macos): quickget macos sonoma download sequoia BaseSystem.dmg

* feat: Add macOS Sequoia

---------

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2025-01-15 11:36:50 -06:00
zenobit 622ecfd4a4
fix(siduction): Update to Shine_on+ (#1549) 2025-01-05 03:11:39 +00:00
debuggerx01 238ec98071
fix(windows): Fix the download of the Chinese Windows ISO. (#1540)
* Fix the download of the Chinese Windows ISO.
2024-12-30 21:54:14 +00:00
Phil Clifford eeee8266db
chore: regenerate docs to align with current release (#1544) 2024-12-30 15:45:18 -06:00
Martin Wimpress c2024d2490
chore: bump version to 4.9.8 2024-12-30 13:18:23 +00:00
Martin Wimpress 2a9d455307 chore: bump version to 4.9.7 2024-12-30 12:23:26 +00:00
Silke Hofstra 652708388e fix(solus): update Solus URLs
The latest Solus release has changed the naming of ISOs:

- Update all related functions to support the ISO name
  format used in the latest release.
- Use the directory listings in order to support more releases in the future.
2024-12-30 10:58:46 +00:00
Phil Clifford 373f133ac7
fix(easyos): move to dynamic release behaviour (#1494)
The static list included a release that has been removed
and also  hard coded mappings for 2023 and 2024. This dynamically determines the latest two years
and finds available releases in those years, so will still provide reasonable service next year.
2024-12-30 10:58:18 +00:00
dependabot[bot] a305f993c3 chore(deps): bump DeterminateSystems/nix-installer-action from 14 to 16
Bumps [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action) from 14 to 16.
- [Release notes](https://github.com/determinatesystems/nix-installer-action/releases)
- [Commits](https://github.com/determinatesystems/nix-installer-action/compare/v14...v16)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-30 10:57:53 +00:00
github-actions[bot] a905d652e6 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.635837%2Brev-a3f9ad65a0bf298ed5847629a57808b97e6e8077/019284a3-b408-7df6-a876-30d9e039bc1d/source.tar.gz?narHash=sha256-u%2BrxA79a0lyhG%2Bu%2BoPBRtTDtzz8kvkc9a6SWSt9ekVc%3D' (2024-10-12)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2411.712007%2Brev-d49da4c08359e3c39c4e27c74ac7ac9b70085966/01940ca0-b117-7d0e-b1ef-d579ee6d2f13/source.tar.gz?narHash=sha256-MgdXpeX2GuJbtlBrH9EdsUeWl/yXEubyvxM1G%2ByO4Ak%3D' (2024-12-27)
2024-12-30 10:57:34 +00:00
lwbt 42c83f7e6a
fix: TrueNAS Scale download (#1539)
* fix: TrueNAS Scale download

* Update endless to 6.0.4
2024-12-30 10:57:02 +00:00
Jack Wasey 6334e82a42
feat: Add proxmox-ve (#1518)
* Add proxmox-ve

* Dynamically detect proxmox-ve releases

* fix: Address shellcheck lint

---------

Co-authored-by: Jack antibes admin <jmin@antibes.walton>
Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2024-12-30 10:56:16 +00:00
Liam 2c22f0c31e
fix(windows): Use new Microsoft JSON API to fix URL generation (#1534) 2024-12-20 17:52:09 +00:00
Daniel Napora 122992112b
feat: Add Mabox Linux (#1531) 2024-12-19 16:27:37 +00:00
Phil Clifford e27aa30804
feat: add support for elementary 8.0 (#1533) 2024-12-18 20:47:18 +00:00
Liam d0ae72a251
fix: Add ArchLinux 4M OVMF paths (#1514) 2024-11-11 15:24:28 +00:00
Gordon Schulz ec0f276abf
fix(fedora): Check whether the link value contains an actual .iso file (#1503)
* fix(fedora): Check whether the link value contains an actual .iso file

Also remove the SHA256 requirement. Fedora provides these for all links
now.
Fixes #1502

* refactor(fedora): Use more concise function to filter out non-ISO files

---------

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2024-11-08 02:12:41 -06:00
Phil Clifford a09d5128be
chore: correct a spelling mistake (#1495) 2024-11-05 12:30:07 +00:00
Phil Clifford 16a43af329
fix(fedora): handle the space in the beta release (#1492)
* fix(fedora): handle the space in the beta release

fixes #1462
adjust the RELEASE to remove and replace the space

* fix(fedora): only list available editions where a release is selected

fixes #1493
2024-10-29 12:01:33 +00:00
Martin M. S. Pedersen 17a5971e49 fix: Use HTTPS URLs wherever possible 2024-10-21 15:44:06 -05:00
Zeglius 3f7bc4a77a fix: increase default disk size for bazzite to 64GB minimum 2024-10-21 15:37:39 -05:00
Liam 24e081752d refactor: Improve not equals syntax in get_deepin function 2024-10-19 19:29:22 -05:00
Phil Clifford 8299bfc896 fix(deepin): Correct architecture insertion logic
so Deepin 23 and  later are correctly adjusted.
2024-10-19 19:29:22 -05:00
Szorfein 70603de2a3
fix: Use ALSA on systems without a PulseAudio daemon (#1480) 2024-10-19 23:00:08 +01:00
github-actions[bot] 20c1fe030d
flake.lock: Update (#1478)
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.635490%2Brev-f65141456289e81ea0d5a05af8898333cab5c53d/019237db-783b-7330-a22e-7d60c20ce855/source.tar.gz?narHash=sha256-pojbL/qteElw/nIXlN8kmHn/w6PQbEHr7Iz%2BWOXs0EM%3D' (2024-09-27)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.635837%2Brev-a3f9ad65a0bf298ed5847629a57808b97e6e8077/019284a3-b408-7df6-a876-30d9e039bc1d/source.tar.gz?narHash=sha256-u%2BrxA79a0lyhG%2Bu%2BoPBRtTDtzz8kvkc9a6SWSt9ekVc%3D' (2024-10-12)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-10-19 22:50:59 +01:00
Alex Genovese 1638b7a721
fix: Archcraft and ReactOS ISO naming and editions quoting (#1468)
* proper fix for 'editions'

quotes needed on editions function call to prevent globbing  ....

* fix archcraft download

otherwise just downloads with filename 'download' without even a .iso extension

* refactor: Use web_redirect function to get archcraft URL


---------

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2024-10-19 22:47:04 +01:00
Alex Genovese 9d4b82db20
fix: dynamic grep latest MX linux and sort Kolibri (#1479)
* Fix: add dynamic grep for latest MX linux releases
* add quick fix for kolibri url
* add Kolibri editions and 7zip extraction
2024-10-19 22:35:38 +01:00
Alex Genovese 3de28e1e56
fix: CachyOS downloads (#1483)
* update cachyos to new  editions

only two editions now and a revised cdn setup
2024-10-18 19:43:14 +01:00
Phil Clifford 8eda1e1150 fix(parrotsec): change grep to not use perl regexp so MacOS/BSD are happier 2024-10-18 17:26:48 +01:00
Phil Clifford 66a0af3a92 fix(nixos): change grep to not use perl regexp so MacOS/BSD are happier 2024-10-18 17:26:48 +01:00
Phil Clifford 0f8d56d2c8
fix: blendOS now has a single current iso (#1481)
* fix: blendOS now has a single current iso

Select a reasonable mirror as the old choice is unreliable

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2024-10-17 20:54:57 +01:00
Dridi Boukelmoune 84595dc32f
docs: Move quickemu_conf manual to section 5 (#1454)
* docs: Simplify make rules for pandoc

This removes a --standalone duplicate and counter-productive
indirections like $(MANSECTION) because it prevents having more
than one and docs/Makefile hardcodes the section anyway.

* docs: Move quickemu_conf manual to section 5

Where it technically belongs... With the new make rules for pandoc, it's
actually much easier to manage manuals in several sections without much
overhead.

* docs: Remove potential quickemu_conf.1 leftover
2024-10-04 11:35:36 +01:00
Agustin Ferrario 002e366552 Add Haiku r1beta5
Added the lastest release from Haiku (r1beta5).
2024-09-30 17:37:36 +01:00
zenobit 3a20b31b49 fix: open homepage
introduced in
aa285f0f6e
2024-09-30 17:36:10 +01:00
dependabot[bot] c915522962 chore(deps): bump DeterminateSystems/magic-nix-cache-action from 7 to 8
Bumps [DeterminateSystems/magic-nix-cache-action](https://github.com/determinatesystems/magic-nix-cache-action) from 7 to 8.
- [Release notes](https://github.com/determinatesystems/magic-nix-cache-action/releases)
- [Commits](https://github.com/determinatesystems/magic-nix-cache-action/compare/v7...v8)

---
updated-dependencies:
- dependency-name: DeterminateSystems/magic-nix-cache-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 17:35:14 +01:00
Phil Clifford 17f3cd7eeb
refactor: remove redundant code from resolve_quickemu() (#1404)
* fix: remove redundant command call

* fix: test local quickemu is executable
2024-09-30 17:34:17 +01:00
dependabot[bot] 42ee12d51c chore(deps): bump DeterminateSystems/nix-installer-action from 13 to 14
Bumps [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action) from 13 to 14.
- [Release notes](https://github.com/determinatesystems/nix-installer-action/releases)
- [Commits](https://github.com/determinatesystems/nix-installer-action/compare/v13...v14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 17:32:34 +01:00
dependabot[bot] 973e57eefa chore(deps): bump DeterminateSystems/flake-checker-action from 8 to 9
Bumps [DeterminateSystems/flake-checker-action](https://github.com/determinatesystems/flake-checker-action) from 8 to 9.
- [Release notes](https://github.com/determinatesystems/flake-checker-action/releases)
- [Commits](https://github.com/determinatesystems/flake-checker-action/compare/v8...v9)

---
updated-dependencies:
- dependency-name: DeterminateSystems/flake-checker-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 17:32:10 +01:00
dependabot[bot] bf3ee94724 chore(deps): bump DeterminateSystems/update-flake-lock from 23 to 24
Bumps [DeterminateSystems/update-flake-lock](https://github.com/determinatesystems/update-flake-lock) from 23 to 24.
- [Release notes](https://github.com/determinatesystems/update-flake-lock/releases)
- [Commits](https://github.com/determinatesystems/update-flake-lock/compare/v23...v24)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 17:31:59 +01:00
Aaron Honeycutt 04be5de7f1 remove popos 21.10
this is an unsupported release now
2024-09-30 17:31:43 +01:00
Mario Kneidinger 4a871fff22 chore(new supported release): Added support for Linux Mint 22 2024-09-30 17:31:12 +01:00
github-actions[bot] 37b0f5dd25 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.634054%2Brev-4a92571f9207810b559c9eac203d1f4d79830073/01914d63-b212-712f-bb11-24565c742847/source.tar.gz?narHash=sha256-%2BCHVZnTnIYRLYsARInHYoWkujzcRkLY/gXm3s5bE52o%3D' (2024-08-13)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.635490%2Brev-f65141456289e81ea0d5a05af8898333cab5c53d/019237db-783b-7330-a22e-7d60c20ce855/source.tar.gz?narHash=sha256-pojbL/qteElw/nIXlN8kmHn/w6PQbEHr7Iz%2BWOXs0EM%3D' (2024-09-27)
2024-09-30 17:30:53 +01:00
Gitsarry 790484cb7d fix: use double brackets for if clause with and & or concatenation
Previous does not work with Bash version 5.2.15(1)-release (x86_64-pc-linux-gnu)
2024-08-27 10:54:08 +01:00
Luke Yelavich 42c90e9771 feat: Add support for OpenSuse Aeon 2024-08-27 10:45:47 +01:00
Agustin Isasmendi 9332ff25cd fix: #1391 Change http to https endpoints for macos download 2024-08-27 10:45:15 +01:00
Phil Clifford c10ba9aac0 docs: remove doc reference to Windows Server 2012-r2 2024-08-27 10:44:27 +01:00
Phil Clifford 0cfeffbc82 docs: fix small usage typo 2024-08-27 10:44:27 +01:00
Phil Clifford def912cce3 docs: regenerated man pages include new options 2024-08-27 10:44:27 +01:00
Phil Clifford 75bd81d1e9 fix: get sparky info from mirror 2024-08-27 10:42:20 +01:00
Phil Clifford 1f0dc50194 fix: extend search for smbd 2024-08-27 10:41:42 +01:00
Gitsarry 18cdda254b fix: make function ignore_msrs_always work
With the previous version the file was never written if it not existed before, logic bug.
2024-08-27 10:38:41 +01:00
Liam 35f8e9333d fix: Use 1 as default sockets value 2024-08-27 10:37:54 +01:00
Chase Covello 070514d449
Fix: set RTC to localtime only for Windows/ReactOS/DOS and UTC for all others (#1429)
* Set RTC to localtime only for Windows/ReactOS/DOS and UTC for all other OS

Windows/ReactOS/DOS conventionally set the system RTC to local time, but Linux/UNIX/macOS use UTC. Guest systems that expect UTC and have the time zone set to local time will have the wrong system clock time at startup until they set the clock with NTP. This is especially an issue for disk images imported from or shared with another VM configuration that uses UTC for non-Windows guests.

* Removed RTC driftfix option for non-Windows/ReactOS/DOS guests

According to the QEMU man page:

    Enable driftfix (i386 targets only) if you experience time
    drift problems, specifically with Windows' ACPI HAL. This
    option will try to figure out how many timer interrupts were
    not processed by the Windows guest and will re-inject them.

This option thus seems unnecessary for other systems and may cause
performance or timekeeping issues, so enable only for
Windows/ReactOS/DOS.
2024-08-27 10:37:21 +01:00
github-actions[bot] bb103295ea flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.633516%2Brev-8c50662509100d53229d4be607f1a3a31157fa12/0190f691-c019-7d99-b723-4b2dd6dfd38f/source.tar.gz?narHash=sha256-2ShmEaFi0kJVOEEu5gmlykN5dwjWYWYUJmlRTvZQRpU%3D' (2024-07-27)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.634054%2Brev-4a92571f9207810b559c9eac203d1f4d79830073/01914d63-b212-712f-bb11-24565c742847/source.tar.gz?narHash=sha256-%2BCHVZnTnIYRLYsARInHYoWkujzcRkLY/gXm3s5bE52o%3D' (2024-08-13)
2024-08-27 10:36:19 +01:00
Phil Clifford bc2858ecbf fix: dequote editions pipe 2024-08-27 10:35:34 +01:00
github-actions[bot] a13d554374 flake.lock: Update
Flake lock file updates:

• Updated input 'flake-schemas':
    'https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.2/018b3da8-4cc3-7fbb-8ff7-1588413c53e2/source.tar.gz?narHash=sha256-j8SR19V1SRysyJwpOBF4TLuAvAjF5t%2BgMiboN4gYQDU%3D' (2023-10-16)
  → 'https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz?narHash=sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw%3D' (2024-07-26)
• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.632931%2Brev-f12ee5f64c6a09995e71c9626d88c4efa983b488/0190afd7-6008-74ee-a4f6-a75a0a8f29b3/source.tar.gz?narHash=sha256-FZ5dnrvKkln9ESdoTR8R7GKW9rNpXNZrxGsOXsbsTpE%3D' (2024-07-12)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.633516%2Brev-8c50662509100d53229d4be607f1a3a31157fa12/0190f691-c019-7d99-b723-4b2dd6dfd38f/source.tar.gz?narHash=sha256-2ShmEaFi0kJVOEEu5gmlykN5dwjWYWYUJmlRTvZQRpU%3D' (2024-07-27)
2024-08-02 10:37:50 +01:00
dependabot[bot] a2c3572512 chore(deps): bump DeterminateSystems/nix-installer-action from 12 to 13
Bumps [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action) from 12 to 13.
- [Release notes](https://github.com/determinatesystems/nix-installer-action/releases)
- [Commits](https://github.com/determinatesystems/nix-installer-action/compare/v12...v13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-02 10:37:28 +01:00
Liam 885d4a84b2 fix: Don't duplicate VM path in fixed ISO from create_config function 2024-07-14 20:00:37 +01:00
Alpha fc43f861b7 refactor: use unattended windows installation by default
Create unattended windows installation iso by default when creating
windows vms with --create-config.
To disable, pass --disable-unattended

https://github.com/quickemu-project/quickemu/pull/1373/files#r1673481239

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2024-07-14 20:00:37 +01:00
Liam d3a95c2fe5 refactor: General improvements to create_config function 2024-07-14 20:00:37 +01:00
Alpha 113bd4d1f5 feat: add --unattended flag to --create-config to create unattend.iso (windows hosts)
Feature request #1369
2024-07-14 20:00:37 +01:00
Alpha 3c50a65df5 refactor: move unattended win installation code inside function
move code necessary for creation of unattended.iso for windows 10 and 11
inside unattended_windows function

Change parameter required for unattended_windows function from
autounattend.xml file to $VM_PATH
2024-07-14 20:00:37 +01:00
Alpha 9276573c02 refactor: move create_config function to the bottom
move it below unattended_windows and web_get functions to reference them
later
2024-07-14 20:00:37 +01:00
github-actions[bot] 8d9c63ff6c flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.631440%2Brev-2819fffa7fa42156680f0d282c60d81e8fb185b7/0190034c-678d-7039-b45c-fa38168f2500/source.tar.gz?narHash=sha256-mJi4/gjiwQlSaxjA6AusXBN/6rQRaPCycR7bd8fydnQ%3D' (2024-06-09)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.632931%2Brev-f12ee5f64c6a09995e71c9626d88c4efa983b488/0190afd7-6008-74ee-a4f6-a75a0a8f29b3/source.tar.gz?narHash=sha256-FZ5dnrvKkln9ESdoTR8R7GKW9rNpXNZrxGsOXsbsTpE%3D' (2024-07-12)
2024-07-14 19:57:20 +01:00
Liam aeb14a717b chore: Remove windowskey from packaging 2024-07-11 10:34:26 +01:00
Liam 00c53fb022 chore: Remove unused dependency windowskey 2024-07-11 10:34:26 +01:00
Martin Wimpress ca8f81f7fb refactor: display socket hints based on what tools are available 2024-07-04 16:24:26 +01:00
Martin Wimpress 0b1dbb4b9e ci: actually test running a VM 2024-07-04 15:57:02 +01:00
Mandy Schoep 083ee169dd fix: download Fedora Silverblue iso instead of ociarchive file 2024-07-03 17:12:45 +01:00
Martin Wimpress 5568e6d4a9
docs: update FUNDING.yml 2024-07-03 13:37:07 +01:00
Martin Wimpress b519043ddb fix: make shellcheck happy by removing pointless echo 2024-07-02 16:18:18 +01:00
Martin Wimpress ec13f369c5 fix: add resolve_quickemu() to quickget so it can locate quickemu 2024-07-02 15:57:59 +01:00
Martin Wimpress e92fbe95a2 chore: remove ncurses from nix package and devshell 2024-07-02 14:09:29 +01:00
Martin Wimpress e305c41118 refactor: replace all use of fold with fmt; no need for ncurses 2024-07-02 14:09:29 +01:00
Martin Wimpress 0440ce149b refactor: remove single use error_ functions 2024-07-02 14:09:29 +01:00
Martin Wimpress 8cf007f8eb fix: requesting --help is not an error 2024-07-02 13:37:16 +01:00
Martin Wimpress 66dfa6451a fix: patch samba detection in Nix flake 2024-07-02 13:13:25 +01:00
Martin Wimpress 13f98e32d3
ci: fix workflows 2024-07-02 12:58:54 +01:00
Martin Wimpress a931b2fc2c ci: add test-build-quickemu.yml 2024-07-02 12:54:52 +01:00
Martin Wimpress ecfafc8125 chore(ci): clean up test-quickget.yml 2024-07-02 12:54:52 +01:00
Martin Wimpress f7861a6e7f refactor: update Nix flake to be consistent with the quickgui flake 2024-07-02 02:27:01 +01:00
Phil Clifford 1cf80e7d81 fix: get rounded integer RAM_HOST values 2024-07-02 02:26:41 +01:00
dependabot[bot] a36d51ac98 chore(deps): bump DeterminateSystems/update-flake-lock from 22 to 23
Bumps [DeterminateSystems/update-flake-lock](https://github.com/determinatesystems/update-flake-lock) from 22 to 23.
- [Release notes](https://github.com/determinatesystems/update-flake-lock/releases)
- [Commits](https://github.com/determinatesystems/update-flake-lock/compare/v22...v23)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 02:09:29 +01:00
Martin Wimpress 93ef5b2f12 docs: update pull_request_template.md 2024-07-01 01:52:26 +01:00
Martin Wimpress f846d8f9aa chore: drop Windows 8.1 and Windows 10 LTSC
- Windows 8.1 is EOL since January 10, 2023.
- Windows 10 LTSC just doesn't make sense for virtual machines.
2024-06-30 16:17:30 +01:00
Martin Wimpress 90e9bf5087 chore: drop Windows Server 2012 R2
EOL since October 10, 2023.
2024-06-30 16:17:30 +01:00
Martin Wimpress 6a4705e365 refactor: add quoting to tpm condition for window 11 2024-06-30 16:17:30 +01:00
Luke Yelavich e18b7ed591 feat: Disable copy on write for qcow2 disk images on btrfs
According to qemu-img documentation, it is a no-op for other filesystems.
2024-06-30 13:23:33 +01:00
Luke Yelavich 5d1c8dfc4c fix: Do not set the lazy_refcounts option for raw disk images 2024-06-30 13:23:33 +01:00
Martin Wimpress 811b48cc4e fix: pass relevant arguments to Exec when creating shortcuts. close #1285 2024-06-30 13:14:58 +01:00
Martin Wimpress 52e50f9815 fix: get VM PID early so kill_vm() works reliably 2024-06-30 12:13:58 +01:00
Martin Wimpress 589f2c9a5c refactor: attempt to press any key 5 times during Window boot from CD/DVD 2024-06-30 12:06:54 +01:00
Martin Wimpress 8c10b20fb7
fix: correctly run VMs when PWD is not relative to the VM directory 2024-06-30 12:05:46 +01:00
Martin Wimpress 5e90e336fe fix(windows-server): default to e1000 network device. fixes #1315 2024-06-30 11:52:25 +01:00
Martin Wimpress e035121f71 docs: add pull_request_template.md 2024-06-30 00:50:19 +01:00
Martin Wimpress 14feb27a8c docs: update SECURITY.md 2024-06-30 00:12:20 +01:00
Phil Clifford 88ae2a100e chore: reflect wiki updates to man page 2024-06-30 00:04:47 +01:00
Martin Wimpress e34e3c5169 docs: update issue templates 2024-06-30 00:01:08 +01:00
Martin Wimpress 0addc66fb6 docs: update README.md 2024-06-30 00:00:51 +01:00
Martin Wimpress e0492eac17 docs: remove old issue template 2024-06-30 00:00:00 +01:00
Martin Wimpress 8265298a7e docs: add SECURITY.md 2024-06-29 23:36:14 +01:00
Martin Wimpress e6543c53bd docs: add CONTRIBUTING.md 2024-06-29 23:25:20 +01:00
Martin Wimpress 6714e687c3 docs: add CODE_OF_CONDUCT.md 2024-06-29 23:19:10 +01:00
github-actions[bot] 5f164bc53c flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.643242%2Brev-2893f56de08021cffd9b6b6dfc70fd9ccd51eb60/0190530b-f61b-7788-9601-b336b1caf671/source.tar.gz?narHash=sha256-ECni%2BIkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko%3D' (2024-06-24)
  → 'https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.644565%2Brev-b2852eb9365c6de48ffb0dc2c9562591f652242a/01906511-d0fc-7244-b596-2d790f5bfdb0/source.tar.gz?narHash=sha256-C8e9S7RzshSdHB7L%2Bv9I51af1gDM5unhJ2xO1ywxNH8%3D' (2024-06-27)
2024-06-29 22:17:34 +01:00
Martin Wimpress 0b3c3048b6 ci: add Nix flake checker and updater 2024-06-29 22:15:20 +01:00
Martin Wimpress e9d3ff2179 chore: tidy up debian/ template 2024-06-29 11:08:09 +01:00
Martin Wimpress 93557fb61d fix(nix): include samba so file sharing works
https://github.com/NixOS/nixpkgs/pull/323133
2024-06-29 11:07:52 +01:00
Martin Wimpress 626591bca8 chore: update flake.lock 2024-06-27 00:44:24 +01:00
Martin Wimpress 17f5932024 refactor: align package.nix with Nixpkgs 2024-06-27 00:44:24 +01:00
Martin Wimpress faccbae06a refactor: update devshell.nix so a usable "fake" quickemu is created
`direnv reload` create a monkey patched `.direnv/bin/quickemu` so testing `quickemu` with secure boot is possible.
2024-06-27 00:44:24 +01:00
Martin Wimpress 5f8c40f7ab chore: bump version to 4.9.6 2024-06-26 21:52:18 +01:00
Martin Wimpress ded5971b6e fix(debian): add missing comma in debian/control 2024-06-25 13:17:42 +01:00
Martin Wimpress 1c89f520f2 style: indent RAM allocation warnings/errors 2024-06-25 12:55:13 +01:00
Martin Wimpress a4860869ee style: update warnings/errors for insufficient RAM allocation 2024-06-25 11:41:24 +01:00
Phil Clifford 24a2a7b413 chore: regenerated docs with README changes incorporated 2024-06-25 11:22:23 +01:00
Martin Wimpress 130cd6a811 fix: update holoiso to only download the most recent release
- Close #1302
- Close #1301
2024-06-25 11:21:47 +01:00
takase1121 3a07d353b9 feat(quickemu): allow overriding insufficient RAM error
When RAM is not specified in the config and the min RAM is not met, quickemu tells the user to override the RAM amount and exits.
If the user overrides the RAM, the script should allow the user to continue with a warning.
2024-06-25 11:13:37 +01:00
Martin Wimpress 4b30ea21f4 fix: correct typo in max_outputs conditional 2024-06-25 10:54:35 +01:00
Martin Wimpress 7afab97c63 fix: update bazzite to always get the latest stable release. close #1306
Add the option to choose KDE or GNOME editions.
2024-06-25 09:22:52 +01:00
mystery3525 a85bb0897a Took inspiration from cebd9dd781/hhvm.nix (L76) 2024-06-25 08:57:22 +01:00
mystery3525 0f616dcf08 Update package.nix 2024-06-25 08:57:22 +01:00
Martin Wimpress e0523746fd docs: add macOS as supported host 2024-06-24 13:41:33 +01:00
Martin Wimpress 60c140cfe4 docs: add Linux Matters feature 2024-06-24 13:41:33 +01:00
Martin Wimpress 7ff1c58c69 chore: update release_freebsd() to only get released images 2024-06-24 13:39:59 +01:00
Martin Wimpress 33a5d71dda fix(parrotsec): constrain parrot to the most recent release only
Older releases drop the isos and only keep the torrents
2024-06-24 13:39:59 +01:00
Martin Wimpress c760932d48 chore: only reference the current slint release; their servers are slow 2024-06-24 13:39:59 +01:00
Martin Wimpress ac42e6b492 fix(deepin): improve download speed and correct URLs for release URLs 2024-06-24 13:39:59 +01:00
Martin Wimpress 7e0e3e8306 fix(nixos): adapt the plasma edition based on NixOS release 2024-06-24 13:39:59 +01:00
Martin Wimpress b730adf109 chore: constrain netbsd to the 4 most recent releases 2024-06-24 13:39:59 +01:00
Martin Wimpress 9572ea6ae9 chore: update mxlinux to 23.3 2024-06-24 13:39:59 +01:00
Martin Wimpress d60c7baa8b
chore: make shellcheck happy in releases_parrotsec() (#1296) 2024-06-24 10:15:21 +01:00
Martin Wimpress 2c6a050643
chore: make shellcheck happy in releases_nixos() (#1295) 2024-06-24 10:08:03 +01:00
Martin Wimpress 56ec3c9e47
fix: add uuid-runtime to debian/control. close #1256 (#1294) 2024-06-24 10:07:50 +01:00
Martin Wimpress b8aabcb892
fix: correctly check for passthrough smartcard support. close #888 (#1293) 2024-06-24 10:07:35 +01:00
Lorenzo Brzek 7e919dac30
chore(updated supported releases): Updated support for ParrotOS 6.1 (#1279)
* chore(updated supported releases): Updated support for ParrotOS 6.1 and NixOS 24.05

Added support for:

- ParrotOS 6.1
- NixOS 24.05

Removed support for:

- ParrotOS 5.9
- NixOS 23.05

* Apply suggestions from code review

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>

* chore: Removed changes to NixOS

---------

Co-authored-by: Liam <33645555+lj3954@users.noreply.github.com>
2024-06-24 10:01:50 +01:00
Martin Wimpress 9303b73ebe fix: running quickemu and quickreport in zsh. close #1268
Due to zsh auto completion of piping to `grep [0-9]` does not work. This patch fixes this problem by quoting `"[0-9]"`.
2024-06-24 09:02:43 +01:00
Liam 9b1c28dbe1 fix: correctly escape characters in edition/lang validation. Closes #1270 2024-06-24 08:57:05 +01:00
Martin Joerg a7271034cf fix: don't declare SPICE as local within configure_ports. close #1240
Functionality was split across several functions in
e29173a16d, so SPICE cannot be local
anymore as it is also referenced in vm_boot.
2024-06-24 08:50:25 +01:00
Alan Roberts 94035a5930 adding suggested code to get the two latest nixos releses 2024-06-24 08:46:57 +01:00
Alan Roberts 271e0eb7d7 adding plasma6 2024-06-24 08:46:57 +01:00
Alan Roberts 585814cf87 Adding nixos 24.05 to releases_nixos 2024-06-24 08:46:57 +01:00
David Goodwin 39ffb0b6f2 docs: update README.md - fix quickget example usage (include: edition)
quickget nixos unstable ... requires edition (e.g. minimal / plasma5 / ghome)  ...
2024-06-24 08:46:22 +01:00
Martin Wimpress cb97c14f9d chore: update flake.lock 2024-06-24 08:32:19 +01:00
Martin Wimpress f4c362eda7 refactor: update flake to, mostly, work on macOS 2024-06-24 08:32:19 +01:00
Phil Clifford d78255b097 chore: align subproject 2024-05-28 12:58:13 -04:00
Phil Clifford cf4b63c51d docs: man pages regenerated including recent wiki revisions 2024-05-28 12:58:13 -04:00
Martin Wimpress b357fcf240 feat(quickreport): add macOS support to quickreport 2024-05-24 09:38:58 -04:00
Martin Wimpress 9fe835d107 fix(quickreport): discover quickemu if not in the PATH. close #1235 2024-05-24 09:38:58 -04:00
Martin Wimpress 1fea6b46c2 feat: add timeout and retry to web_check() 2024-05-24 09:38:58 -04:00
Martin Wimpress 7bfeb7721e fix(freebsd): filter out 14.1; it is not released yet. close #1231 2024-05-24 09:38:58 -04:00
Martin Wimpress 143e3574fb chore: limit nixos to recent releases 2024-05-24 09:38:58 -04:00
Martin Wimpress 6e01e38298 chore: limit deepin to 10 releases 2024-05-24 09:38:58 -04:00
Martin Wimpress 1e7714a1af refactor(debian): only return the latest releases from each release 2024-05-24 09:38:58 -04:00
Martin Wimpress 5e96af3eca chore!(ubuntu): remove EOL releases 2024-05-24 09:38:58 -04:00
Martin Wimpress 590bd560cb fix(quickget): remove use of grep -P and replace with portable equivalent 2024-05-24 09:38:58 -04:00
Martin Wimpress 7f250ed1b0 fix: make sure all use of head and tail is portable. close #1238 2024-05-24 09:38:58 -04:00
Martin Wimpress dbe9f612fb fix: handle multiple CPU models returned via lscpu; Asahi Linux for example 2024-05-17 23:18:54 +01:00
Martin Wimpress b009e5cef5 feat: improve compatibility of macOS on non-Intel host CPUs
Adapted from https://github.com/quickemu-project/quickemu/issues/1114#issuecomment-2115516935

Tested full installs of Mojave, Catalina, Big Sur, Monterey, Ventura and Sonoma on AMD Ryzen 5950X. Performed updates post-install and installed Revolutionator.
2024-05-17 23:18:54 +01:00
Martin Wimpress 023a7355db doc: add comments about improving detection of running in a VM 2024-05-17 23:18:54 +01:00
Martin Wimpress 1b6cf0ad69 fix(wsl): suppress error getting sys_vendor when running on WSL2 2024-05-17 23:18:54 +01:00
Martin Wimpress 3e6acd8c98 feat: best guess for arach64 VMs on aarch64/arm64 hosts 2024-05-17 23:18:54 +01:00
Martin Wimpress ff02a7b2cb refactor: move all CPU related configuration to configure_cpu() 2024-05-17 23:18:54 +01:00
Martin Wimpress db04a6686a refactor(macos): tidy up the guest CPU configuration for macOS 2024-05-17 23:18:54 +01:00
Martin Wimpress 4a7f4a4932 refactor: enable topoext on AuthenticAMD for everything except macOS 2024-05-17 23:18:54 +01:00
Martin Wimpress aaeb413e3e refactor: consolidate KVM_GUEST_TWEAKS into GUEST_TWEAKS 2024-05-17 23:18:54 +01:00
Martin Wimpress 8d8c31e136 fix: remove Intel extended page table (ept) flag from macOS 2024-05-17 23:18:54 +01:00
Martin Wimpress da42a211d6 fix(darwin): emulate a CPU if attempting to run macOS in a VM 2024-05-17 23:18:54 +01:00
Martin Wimpress 6985a5f135 fix(darwin): workaround machdep.cpu.vendor being invalid on Apple silicon 2024-05-17 23:18:54 +01:00
Martin Wimpress b7ab6f6d36 feat: refactor virtualisation accelerators 2024-05-17 23:18:54 +01:00
Martin Wimpress 587d218f14 fix: use host cpu for macos if it is a GenuineIntel cpu on the host 2024-05-17 23:18:54 +01:00
Martin Wimpress 62377a77c0 style: show CPU_MODEL in quickemu output 2024-05-17 23:18:54 +01:00
Martin Wimpress d7fe13356c fix(darwin): allow display of 'none' 2024-05-17 23:18:54 +01:00
Martin Wimpress 5ab447e18e fix(darwin): update DISPLAY_DEVICE configuration to support cocoa 2024-05-17 23:18:54 +01:00
Martin Wimpress 98802b4891 refactor(darwin): overhaul CPU configuration 2024-05-17 23:18:54 +01:00
Martin Wimpress 83c16dad2c feat: add host and VM architecture; host is hard coded to x86_64 2024-05-17 23:18:54 +01:00
Martin Wimpress cefa2556f3 refactor: get QEMU version from qemu-img; avoids architecture complications 2024-05-17 23:18:54 +01:00
Martin Wimpress 8f58d0e07c refactor: consolidate and simplify quickget tests 2024-05-17 23:18:54 +01:00
Martin Wimpress f4fbb7dd29 fix(darwin): just use uuidgen to create session_id 2024-05-17 23:18:54 +01:00
Martin Wimpress 6c07e3acdc fix(darwin): disable huge pages 2024-05-17 23:18:54 +01:00
Martin Wimpress a4818025d8 fix(darwin): convert CPU flags from Linux format to Darwin format 2024-05-17 23:18:54 +01:00
Martin Wimpress c3792c61f4 fix(darwin): call sw_vers with single switch for improved compatibility 2024-05-17 23:18:54 +01:00
Martin Wimpress 085dfea742 refactor(darwin): change DARWIN to OS_KERNEL for clear conditionals 2024-05-17 23:18:54 +01:00
Martin Wimpress 7e5d26daab refactor: rename HOST_OS to OS_RELEASE 2024-05-17 23:18:54 +01:00
Martin Wimpress eb661221ef refactor: change IN_VM to HYPERVISOR; 2024-05-17 23:18:54 +01:00
Martin Wimpress f14eed78ce fix(darwin): default display to cocoa on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress c5b96cfcd5 fix(darwin): disable viewer_param_check() for darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress 63409682f2 fix(darwin): update display_param_check() to correctly verify displays 2024-05-17 23:18:54 +01:00
Martin Wimpress 6528520d0f refactor: check qemu-img, qemu-system-x86_64 and curl are executable 2024-05-17 23:18:54 +01:00
Martin Wimpress 989ad37d65 fix(quickget): find qemu-img
- close #1224
- close #1229
- close #1234
2024-05-17 23:18:54 +01:00
Martin Wimpress 685b2ef742 style: add missing function prefix 2024-05-17 23:18:54 +01:00
Martin Wimpress 20684681c6 feat: detect if running in a VM and use an emulated CPU 2024-05-17 23:18:54 +01:00
Martin Wimpress 3d83553d62 refactor: add CPU_MODEL variable 2024-05-17 23:18:54 +01:00
Martin Wimpress b8c6465581 fix(darwin): do not enable kvm-pit.lost_tick_policy=discard on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress fb103ef072 fix(darwin): do not enable kvm=on or kvm_pv_unhalt on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress a67386755e refactor: set NET before any other configuration 2024-05-17 23:18:54 +01:00
Martin Wimpress c194bad2d4 fix(linux): resolve regression in check_cpu_flag() 2024-05-17 23:18:54 +01:00
Martin Wimpress 79a8f474f7 fix(darwin): don't configure braille on darwin; it requires SDL 2024-05-17 23:18:54 +01:00
Martin Wimpress 62f6e30c70 fix(darwin): don't configure SPICE device on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress 0e6fe28141 fix(darwin): do not try and change process name on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress 2ccfac7ec0 feat(darwin): add support for coreaudio on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress 4b36aed8c6 fix(darwin): correct path to search for firmware on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress 57019e72dd wip: disable VT-d for testing 2024-05-17 23:18:54 +01:00
Martin Wimpress f0b41749f6 feat(darwin): get the host OS info 2024-05-17 23:18:54 +01:00
Martin Wimpress 178619d673 feat(darwin): update check_cpu_flag() to support Darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress 6000546e35 refactor(darwin): make uname use portable between Darwin and Linux 2024-05-17 23:18:54 +01:00
Martin Wimpress c30c4612b5 feat(darwin): check if SMT is enabled on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress e1ee983245 feat(darwin): disable ignore_msrs_alert() on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress c4b2216617 feat(darwin): search for OVMF in brew paths 2024-05-17 23:18:54 +01:00
Martin Wimpress aeacc82b32 feat(darwin): add support for cocoa display 2024-05-17 23:18:54 +01:00
Martin Wimpress 22d6932ce2 feat(darwin): get host RAM for Darwin and make Linux result consistent 2024-05-17 23:18:54 +01:00
Martin Wimpress 5515a9e7d7 feat(darwin): add get_nproc() to support Linux and Darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress 37c89a62f6 feat(darwin): add get_cpu_info() to support Linux and Darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress 1158f5a207 feat(darwin): add support for gstat on darwin 2024-05-17 23:18:54 +01:00
Martin Wimpress 8f9f7d8aed feat(darwin): add support for guname on darwin 2024-05-17 23:18:54 +01:00
Phil Clifford 9cfc4f6ed7 fix: Arcolinux completely changed releases
only 3 editions now and far too messy to support legacy releases
2024-05-15 19:34:33 +01:00
Phil Clifford 45470649cb feat: remove unneeded sed from arcolinux url discovery 2024-05-14 17:13:39 +01:00
Phil Clifford 542fcbe50e fix: update Makefile for better pandoc options 2024-05-14 14:04:17 +01:00
Phil Clifford 304d459ddb docs: include documentation updates from wiki to man pages 2024-05-14 14:04:17 +01:00
Phil Clifford f6b5d684d4 docs: regenerated man pages for new and changed options
Also README.md and sub-project aligned
2024-05-14 14:04:17 +01:00
Martin Wimpress aaf4ae4ff6 chore: white space clean up 2024-05-14 11:15:29 +01:00
Martin Wimpress 325dc7f904 chore: remove comment line of code 2024-05-14 11:15:29 +01:00
Martin Wimpress f17cfe4e78 refactor: clean up configure_file_sharing() 2024-05-14 11:15:29 +01:00
Martin Wimpress 0b892f82a0 refactor: simplify macOS core count to power of 2 2024-05-14 11:15:29 +01:00
Martin Wimpress cbc3c20104 refactor: move all port checks to ports_param_check() 2024-05-14 11:15:29 +01:00
Martin Wimpress 124202511a style: correct output of CPU, MSR and RAM 2024-05-14 11:15:29 +01:00
Martin Wimpress cfa131fb9c fix(shellcheck): get Public folder permissions in a shellcheck safe way 2024-05-14 11:15:29 +01:00
Martin Wimpress f3b475ec42 fix: fallback to ~/Public if xdg-user-dir is not available. close #627 2024-05-14 11:15:29 +01:00
Martin Wimpress f850dcb8db refactor: add fileshare_param_check() to validate public directory 2024-05-14 11:15:29 +01:00
Martin Wimpress e29173a16d refactor: initial refactor of vm_boot() to separate sub-system config 2024-05-14 11:15:29 +01:00
Martin Wimpress 212a5bd6d0 style: indent warnings in vm_boot() 2024-05-14 11:15:29 +01:00
Martin Wimpress 94cdce7dd2 fix: check for braille support before enabling it 2024-05-14 11:15:29 +01:00
Martin Wimpress 980fb1f66a refactor: move SDL_MOUSE_FOCUS_CLICKTHROUGH config to display_param_check() 2024-05-14 11:15:29 +01:00
Martin Wimpress 45191a796e refactor: update initialisation to use new param check functions 2024-05-14 11:15:29 +01:00
Martin Wimpress 44e653a48d feat: create tpm_param_check() 2024-05-14 11:15:29 +01:00
Martin Wimpress 6d44ca8c2d feat: create ports_param_check() 2024-05-14 11:15:29 +01:00
Martin Wimpress f723ce6196 refactor: add braille and gl checking to display_param_check() 2024-05-14 11:15:29 +01:00
Martin Wimpress e6fe7602b9 style: minor corrections 2024-05-14 11:15:29 +01:00
Martin Wimpress 8db3100355 refactor: remove hardcoded reference to qemu-img 2024-05-14 11:15:29 +01:00
Martin Wimpress 4ccee8097b chore: alias macOS release names with versions 2024-05-14 11:15:29 +01:00
Martin Wimpress c83dc45b11 refactor: derive macOS OSK inline 2024-05-14 11:15:29 +01:00
Martin Wimpress 96b7e8f991 chore: make tabstop hints the same for quickemu and quickget 2024-05-14 11:15:29 +01:00
Martin Wimpress 88cc5f0056 fix(macos): enable ept_1gb flag to improve compatibility. close #1214 2024-05-14 11:15:29 +01:00
Martin Wimpress 9cb021b174 refactor: move all disk_size configuration to quickget 2024-05-14 11:15:29 +01:00
Martin Wimpress 99ccc0460b style(quickget): indent case state correctly 2024-05-14 11:15:29 +01:00
Martin Wimpress 19d01e2900 style(macos): make macos download output consistent 2024-05-14 11:15:29 +01:00
Martin Wimpress f83e710bd2 chore: update .gitignore 2024-05-14 11:15:29 +01:00
Martin Wimpress 5b017a5163 chore(windows): drop non-functioning windows 11 hash checking 2024-05-14 11:15:29 +01:00
Martin Wimpress f2fb7f0f69 refactor(windows): drop curl_windows() and use web_get() 2024-05-14 11:15:29 +01:00
Martin Wimpress 58af2d9d9d style(windows): make windows download output consistent and more verbose 2024-05-14 11:15:29 +01:00
Martin Wimpress 6b052910e8 fix(windows): avoid using the LANG variable in the global scope 2024-05-14 11:15:29 +01:00
Martin Wimpress 355f0b14ed chore!(quickemu): remove backwards compatibility for old config options 2024-05-14 11:15:29 +01:00
Martin Wimpress b2012ab641 style: clean up some comments 2024-05-14 11:15:29 +01:00
Martin Wimpress b45926f83c refactor: macOS big-sur and newer honour --sound-card configuration 2024-05-14 11:15:29 +01:00
Martin Wimpress 398d4e7246 feat: add support for qemu usb-audio devices 2024-05-14 11:15:29 +01:00
Martin Wimpress a0d33ca42b feat: add support for sound duplex. closes #935
Passing `--sound-duplex hda-output` to quickemu will only present an audio output, but no microphine/line-in device.
2024-05-14 11:15:29 +01:00
Martin Wimpress 48f74d2cec refactor: consolidate macOS virtio configuration 2024-05-14 11:15:29 +01:00
Martin Wimpress 46fb3e60fb chore: increase default disk size for macOS to 128GB 2024-05-14 11:15:29 +01:00
Martin Wimpress ef711a0bbc style: make snapshot actions consistent with other actions 2024-05-14 11:15:29 +01:00
Martin Wimpress b3a1300144 refactor: if disk_img is not configured, automatically configure it 2024-05-14 11:15:29 +01:00
Martin Wimpress 622f6046c7 docs: add comments for the main VM variables 2024-05-14 11:15:29 +01:00
Martin Wimpress 054f471f18 refactor: process all single run actions; make output consistent 2024-05-14 11:15:29 +01:00
Martin Wimpress 70055b746e chore: bump version to 4.9.5 2024-05-14 11:15:29 +01:00
Martin Wimpress 90c373f0ab refactor: make socket variable names consistent 2024-05-14 11:15:29 +01:00
Martin Wimpress bbc57c14e9 refactor: clean up serial connection variables 2024-05-14 11:15:29 +01:00
Martin Wimpress 50111513be refactor: clean up qemu monitor variables 2024-05-14 11:15:29 +01:00
Martin Wimpress a628ee687d refactor: clean up ssh port variables 2024-05-14 11:15:29 +01:00
Martin Wimpress c6eadae173 refactor: clean up spice port variables 2024-05-14 11:15:29 +01:00
Martin Wimpress 7163384c3c refactor: consolidate fullscreen variable 2024-05-14 11:15:29 +01:00
Martin Wimpress faa24eb7f2 refactor: clean up viewer variables 2024-05-14 11:15:29 +01:00
Martin Wimpress edcc5a0f43 refactor: clean up display variables 2024-05-14 11:15:29 +01:00
Martin Wimpress 8d2b99bf46 refactor: change double shifts into shift 2 in the option parser 2024-05-14 11:15:29 +01:00
Martin Wimpress 4b3cb8ac0d refactor: clean up keyboard_layout variables 2024-05-14 11:15:29 +01:00
Martin Wimpress 10ccf892cd refactor: clean up keyboard variables 2024-05-14 11:15:29 +01:00
Martin Wimpress 49b1397350 refactor: clean up usb_controller variables 2024-05-14 11:15:29 +01:00
Martin Wimpress 06a18b0045 refactor: clean up sound_card variables 2024-05-14 11:15:29 +01:00
Martin Wimpress 2d4157f4c1 refactor: clean up mouse variables 2024-05-14 11:15:29 +01:00
Martin Wimpress 7f877d108b refactor: clean up extra_args variables 2024-05-14 11:15:29 +01:00
Phil Clifford 116c35a0c6 fix: correct incorrect use of apostrophe in help 2024-05-13 19:52:07 +01:00
Phil Clifford 26a904f861 docs: regenerated to align with changed, added and removed options 2024-05-13 19:49:35 +01:00
Phil Clifford 41f4c6ae01 chore: align subproject 2024-05-13 19:49:35 +01:00
Phil Clifford c69bded135 docs: Regenerated README
updated pandoc version and improved pandoc incantation
2024-05-13 19:49:35 +01:00
Phil Clifford 212450765b docs: regenerated man pages
includes some updates and changes from wiki including
contribution of Gentoo guidance
2024-05-13 19:49:35 +01:00
EuroNutellaMan ea92320fe4 chore(new supported release): Added support for Linux Mint 21.3
Added support fo Linux Mint's new version: 21.3
2024-05-13 14:47:35 +01:00
Martin Wimpress 5edc931726 feat: check if VM launched successfully; if not show the logs 2024-05-12 23:22:58 +01:00
Martin Wimpress f09a3b740a feat: improve macOS and *BSD default display device support
The display resolution can be set using `--width` and`--height` for macOS and *BSD.
- close #926
- close #1202
2024-05-12 23:22:58 +01:00
Martin Wimpress 5f9ff30643 refactor: increase VGA device video memory to 256MB 2024-05-12 23:22:58 +01:00
Martin Wimpress db1e602cf1 refactor: simplify setting the default display resolution 2024-05-12 23:22:58 +01:00
Martin Wimpress a9576fb3a4 fix: capture and displaying the PID when launching a VM 2024-05-12 23:22:58 +01:00
Martin Wimpress bc399df328 fix: correct the detection of old Ubuntu releases 2024-05-12 23:22:58 +01:00
Martin Wimpress 0b5050511b refactor!: remove --screenpct and simplify use of --width/--height 2024-05-12 23:22:58 +01:00
Martin Wimpress 493bacc318 refactor: simplify disk_format implementation 2024-05-12 23:22:58 +01:00
Martin Wimpress d2b5ee4b18 feat: add disk integrity checking 2024-05-12 11:11:15 +01:00
Martin Wimpress 9dc669b44e style: improve the output when attempting to start a running VM 2024-05-12 11:11:15 +01:00
Martin Wimpress 27ca4a27f0 refactor: improve kill VM logic by using VM_PID 2024-05-12 11:11:15 +01:00
Martin Wimpress 58599a98ab fix: only check the disk write lock if there is no PID for the VM 2024-05-12 11:11:15 +01:00
Martin Wimpress 1ae4af6244 refactor: remove VM_UP and use VM_PID to indicate if the VM is running 2024-05-12 11:11:15 +01:00
Martin Wimpress edfafdee5b fix: remove debug output from parse_ports_from_file() 2024-05-12 11:11:15 +01:00
Martin Wimpress ed1e85fb12 fix: only run glxinfo if it is installed 2024-05-12 11:11:15 +01:00
Martin Wimpress eb6e9bf4df fix: do not use qemu-img to determine the disk_format
Use the traditional default of qcow2, running qemu-img while a VM is running will return bogus information.
2024-05-12 11:11:15 +01:00
Martin Wimpress dc30cc51b1 feat: add --offline argument to force an offline configuration. close #1194 2024-05-12 11:11:15 +01:00
Martin Wimpress d01011a39c fix: correct syntax error in devshell.nix 2024-05-12 11:11:15 +01:00
Martin Wimpress bd9d1d8ba4 refactor: move fix for launching VMs from outside directory 2024-05-12 11:11:15 +01:00
Martin Wimpress 4679d680f0 refactor: move kill VM logic to appropriate code path 2024-05-12 11:11:15 +01:00
Martin Wimpress 4283c1f507 fix: remove disk health check; it is a misfeature. close #1198 2024-05-12 11:11:15 +01:00
Martin Wimpress 135a08c7b0 feat: add command line argument to kill VMs. close #1195 2024-05-12 11:11:15 +01:00
Martin Wimpress 7b915d691c feat: display requested resolution. closes #1196 2024-05-12 11:11:15 +01:00
Martin Wimpress f51697593a fix: correct VM RAM allocation check for Windows and macOS. close #1191 2024-05-10 18:05:06 +01:00
Martin Wimpress 4dab035d46 fix(nix): add missing gawk 2024-05-10 02:21:18 +01:00
Martin Wimpress 16e8115e77 fix(quickemu): detect GLSL version and enable GL accordingly. close #920 2024-05-10 01:48:52 +01:00
Phil Clifford 637f6a9652 chore: align subproject 2024-05-10 01:23:35 +01:00
Phil Clifford da01bdf27d
fix: add pciutils dependency (#1186)
* fix: add pciutils dependency

required for quickreport
Todo: add to docs and nix

* fix: add pciutils dependecy to nix

* docs: document pciutils dependency

* chore:deconflict submodule
2024-05-10 00:20:15 +01:00
Phil Clifford cd34eed243 add quickreport to Makefile 2024-05-09 22:42:13 +01:00
Martin Wimpress 2fd37d0489 fix: don't double quote while hunting for OVMF. close #1181 2024-05-09 21:51:32 +01:00
Martin Wimpress 9b8ff34e81 refactor: make siduction editions dynamic 2024-05-09 21:51:20 +01:00
Phil Clifford 595d7ca2bb docs: A few more tweaks to man pages from 4.9.3 changes 2024-05-09 21:50:54 +01:00
Phil Clifford ad5ca69aa0 chore: regenerated man pages for changes 2024-05-09 19:09:53 +01:00
Martin Wimpress 87a6cf1887 fix: drop passthru.tests in package.nix 2024-05-09 19:07:10 +01:00
Martin Wimpress 0ead4637bf docs: update the introduction to better describe quickemu/quickget 2024-05-09 19:03:26 +01:00
Martin Wimpress 0dfc0b93ab chore: bump version to 4.9.4 2024-05-09 19:03:26 +01:00
Martin Wimpress 32701815f9 feat: add quickreport; gather information for bug reports. close #1163 2024-05-09 16:58:30 +01:00
Martin Wimpress 65f065a327 ci: update the issue template 2024-05-09 16:39:58 +01:00
Martin Wimpress 9a79e7a5c6 style: wrap more variables in braces 2024-05-09 16:39:58 +01:00
Martin Wimpress 8c59f517c1 fix: make windows 10 LTSC download work 2024-05-09 16:39:58 +01:00
Martin Wimpress 4b70a341a9 refactor: include show_os_info() in specify release/edition errors 2024-05-09 16:39:58 +01:00
Martin Wimpress aa285f0f6e refactor: remove basedOf from os_info() and add --show to quickget 2024-05-09 16:39:58 +01:00
Martin Wimpress 85434103d7 ci: remove list-all-info from quickget tests 2024-05-09 16:39:58 +01:00
Martin Wimpress eb1f14e742 refactor: remove pointless indirection of cut_1 2024-05-09 16:39:58 +01:00
Martin Wimpress 013413ee8c fix: resolve shellcheck SC2002 and SC2207
https://www.shellcheck.net/wiki/SC2002
https://www.shellcheck.net/wiki/SC2207
2024-05-09 16:39:58 +01:00
Martin Wimpress 16adb86372 fix: resolve shellcheck SC2001
https://www.shellcheck.net/wiki/SC2001
2024-05-09 16:39:58 +01:00
Martin Wimpress ef55e74317 chore: drop quote stripping from LSB_DESCRIPTION; no longer required
As only /etc/os-release is parsed, no quote stripping is required.
2024-05-09 16:39:58 +01:00
Martin Wimpress efea85695b fix: resolve shellcheck SC2181
https://www.shellcheck.net/wiki/SC2181
2024-05-09 16:39:58 +01:00
Martin Wimpress 42a3476508 fix: check FMA and INV TSC CPU flags are available for macOS guests 2024-05-09 16:39:58 +01:00
Martin Wimpress c727734a08 fix: add popcnt to CPU flags to enable for macOS 2024-05-09 16:39:58 +01:00
Martin Wimpress 341c44e372 fix: make sure a minimum of 8GB RAM is allocated to macOS and Windows 2024-05-09 16:39:58 +01:00
Martin Wimpress b9d0829d5d refactor: remove skip verification conditions in get_macos() 2024-05-09 16:39:58 +01:00
Martin Wimpress e80cd7aeff fix: double quote to prevent globbing and word splitting (SC2086)
https://www.shellcheck.net/wiki/SC2086
2024-05-09 16:39:58 +01:00
Martin Wimpress 84c71e9cfc fix(quickemu): resolve shellcheck SC2317 info about usage()
https://www.shellcheck.net/wiki/SC2317
2024-05-09 16:39:58 +01:00
Martin Wimpress aca168be60 ci: change shellcheck severity to warning 2024-05-09 16:39:58 +01:00
Martin Wimpress d45c86996f fix(reactos): get redirected URL for the reactos download 2024-05-09 16:39:58 +01:00
Martin Wimpress eb08d5a6c6 fix(quickget): resolve shellcheck SC2010 warnings
https://www.shellcheck.net/wiki/SC2010
2024-05-09 16:39:58 +01:00
Martin Wimpress a1417acc7a fix(quickemu): resolve shellcheck SC2069 warnings
https://www.shellcheck.net/wiki/SC2069
2024-05-09 16:39:58 +01:00
Martin Wimpress f282e4eb44 fix(quickemu): resolve shellcheck SC2164 warning
https://www.shellcheck.net/wiki/SC2164
2024-05-09 16:39:58 +01:00
Martin Wimpress da6aa9fb2c style(quickemu): correctly indent case statements 2024-05-09 16:39:58 +01:00
Martin Wimpress d7cc6e8115 style(quickget): correctly indent case statements 2024-05-09 16:39:58 +01:00
Martin Wimpress 6f92a52961 style(indentation): replace tabs with spaces 2024-05-09 16:39:58 +01:00
Martin Wimpress 69131b2e39 chore: drop macos high-sierra; recovery server is no longer available 2024-05-09 01:43:50 +01:00
Martin Wimpress dbb43157df fix(quickget): resolve shellcheck SC2046 warnings in get_macos() 2024-05-09 01:43:50 +01:00
Martin Wimpress 5e507e645c fix: update cpu characteristics for macOS. close #1114 2024-05-09 01:43:50 +01:00
Martin Wimpress 6c2aad8e4d chore: remove Whonix from os_info(); it doesn't have any generators 2024-05-08 15:04:35 +01:00
Martin Wimpress 80230f8469 style: correct HoloISO pretty name 2024-05-08 15:04:35 +01:00
Martin Wimpress e005a55268 style: correct Crunchbangplusplus pretty name 2024-05-08 15:04:35 +01:00
Martin Wimpress e2b39bf826 style: correct AlmaLinux pretty name 2024-05-08 15:04:35 +01:00
Martin Wimpress c84745b49f fix(quickget): make --check work for releases and editions 2024-05-08 15:04:35 +01:00
Martin Wimpress d46482abf9 fix(quickget): resolve shellcheck SC2004 notice
https://www.shellcheck.net/wiki/SC2004
2024-05-08 15:04:35 +01:00
Martin Wimpress 3832fe731c fix(quickget): update get_manjaro() to support new sway release 2024-05-08 15:04:35 +01:00
Martin Wimpress 4ebb74a993 fix(quickget): resolve some shellcheck SC2086 notices
https://www.shellcheck.net/wiki/SC2086
2024-05-08 15:04:35 +01:00
Martin Wimpress fe2dc839ed fix(quickemu): correct shellcheck SC2207 warnings
https://www.shellcheck.net/wiki/SC2207
2024-05-08 15:04:35 +01:00
Martin Wimpress 252f83c076 fix(quickemu): remove unused variable monitor_cmd SC2034
https://www.shellcheck.net/wiki/SC2034
2024-05-08 15:04:35 +01:00
Martin Wimpress 394f955870 fix(quickemu): resolve shellcheck SC2069 warnings
https://www.shellcheck.net/wiki/SC2069
2024-05-08 15:04:35 +01:00
Martin Wimpress 1596179ca5 fix(quickemu): resolve shellcheck SC2236
https://www.shellcheck.net/wiki/SC2236
2024-05-08 15:04:35 +01:00
Martin Wimpress 6ffa1692d6 fix(quickemu): resolve shellcheck SC2206 warnings
https://www.shellcheck.net/wiki/SC2206
2024-05-08 15:04:35 +01:00
Martin Wimpress aefc99efce fix(quickemu): resolve shellcheck SC2155 warnings
https://www.shellcheck.net/wiki/SC2155
2024-05-08 15:04:35 +01:00
Martin Wimpress 3292ce76ea fix(quickemu): disable shellcheck SC2054 and SC2140 warning
https://www.shellcheck.net/wiki/SC2054
https://www.shellcheck.net/wiki/SC2140
2024-05-08 15:04:35 +01:00
Martin Wimpress 9104bdba1d fix(quickget): disable SC2317 as many functions are called indirectly
https://www.shellcheck.net/wiki/SC2317
2024-05-08 15:04:35 +01:00
Martin Wimpress 7eac685f25 fix(quickget): disable shellcheck SC2207 warnings for ubuntu releases
https://www.shellcheck.net/wiki/SC2207
2024-05-08 15:04:35 +01:00
Martin Wimpress 7cfdfd0cec fix(quickget): make editions parsing shellcheck SC2207 compliant
https://www.shellcheck.net/wiki/SC2207
2024-05-08 15:04:35 +01:00
Martin Wimpress e52ba1fc60 fix(quickget): make show_os_info() shellcheck compliant
https://www.shellcheck.net/wiki/SC2086
2024-05-08 15:04:35 +01:00
Martin Wimpress 77fe26975d fix(quickget): disable shellcheck SC2317 for cleanup()
https://www.shellcheck.net/wiki/SC2317
2024-05-08 15:04:35 +01:00
Martin Wimpress ca87ff3b58 refactor(quickget): remove unnecessary string literals 2024-05-08 15:04:35 +01:00
Martin Wimpress b342e0ecb7 style(quickget): make not supported release and edition output consistent 2024-05-08 15:04:35 +01:00
Martin Wimpress e1a46b9b5a refactor(quickget): remove single use function error_not_supported_os() 2024-05-08 15:04:35 +01:00
Martin Wimpress 46b981728d fix(quickget): correct shellcheck SC2076 warnings
https://www.shellcheck.net/wiki/SC2076
2024-05-08 15:04:35 +01:00
Martin Wimpress 805eae9bd5 fix(quickget): make open_homepage() shellcheck compliant (SC2034)
https://www.shellcheck.net/wiki/SC2034
2024-05-08 15:04:35 +01:00
Martin Wimpress 1e05e7a3b2 refactor(quickget): special case image processing shellcheck compliant 2024-05-08 15:04:35 +01:00
Martin Wimpress 31de07fb9c docs(README.md): sign post the documentation for adding a new OS 2024-05-08 15:04:35 +01:00
Martin Wimpress f618ec3986 docs(README.md): update social links 2024-05-08 15:04:35 +01:00
Martin Wimpress ca70e88330 style: update help_message() to remove shorthand arguments 2024-05-08 15:04:35 +01:00
Martin Wimpress c981e8b8e5 style(quickget): drop shorthand arguments for consistency
quickemu has long hand command line arguments only. This commit removes the short hand arguments from the expanded capabilities introduced in quickget 4.9.3, so that both tools have a consistent user experience.
2024-05-08 15:04:35 +01:00
Martin Wimpress e0e23864c8 docs: replace screenshot with asciinema 2024-05-08 15:04:35 +01:00
Martin Wimpress 1637ee7fca chore(quickget): remove how-to from code; added to the wiki
https://github.com/quickemu-project/quickemu/wiki/06-Advanced-quickget-features#adding-a-new-os-to-quickget
2024-05-08 15:04:35 +01:00
Martin Wimpress ef9390d43c chore(quickget): remove obsolete logic for guix 2024-05-08 15:04:35 +01:00
Martin Wimpress 7e12bac3e6 style: add braces around variable names 2024-05-08 15:04:35 +01:00
Martin Wimpress f44222ad6f fix(shellcheck): add missing local variable in get_truenas-scale() 2024-05-08 15:04:35 +01:00
Martin Wimpress d408e15f51 refactor: simplify get_tuxedo-os() 2024-05-08 15:04:35 +01:00
Martin Wimpress 3ca857ace8 chore(quickget): remove obsolete daily check from ubuntu 2024-05-08 15:04:35 +01:00
Martin Wimpress ffbace0f4a fix(quickget): add daily-live to ubuntu-server 2024-05-08 15:04:35 +01:00
Martin Wimpress bad6ad7cd7 fix(quickget): make open_homepage() works and swallow stdout/stderr 2024-05-06 23:45:52 +01:00
Martin Wimpress b8c3f64c1c fix(shellcheck): quote literal { }
https://www.shellcheck.net/wiki/SC1083
2024-05-06 23:45:52 +01:00
Martin Wimpress c452b138d5 style: add space between a functions () and { 2024-05-06 23:45:52 +01:00
Martin Wimpress f95e0e14cc fix(shellcheck): quote to prevent word splitting
https://www.shellcheck.net/wiki/SC2046
2024-05-06 23:45:52 +01:00
Martin Wimpress 9b72928e36 fix(shellcheck): make sure to declare and assign variables separately
https://www.shellcheck.net/wiki/SC2155
2024-05-06 23:45:52 +01:00
Martin Wimpress 0ca8dc6436 fix(shellcheck): remove unused variable SEC_BOOT
https://www.shellcheck.net/wiki/SC2034
2024-05-06 23:45:52 +01:00
Martin Wimpress 5b9399ae6d fix(shellcheck): disable SC2046 and SC2005 in releases_() and editions_()
https://www.shellcheck.net/wiki/SC2046
https://www.shellcheck.net/wiki/SC2005
2024-05-06 23:45:52 +01:00
Martin Wimpress ec7d2886e9 fix(shellcheck): correct useless echos SC2005
https://www.shellcheck.net/wiki/SC2005
2024-05-06 23:45:52 +01:00
zen0bit 3f72f6fd47 fix: swallow output when killing processes in cleanup() 2024-05-06 23:45:52 +01:00
Phil Clifford 0a7c196dd1 docs: update man pages to remove lsb dependency 2024-05-05 17:30:16 +01:00
Phil Clifford 87ad07601a chore: fix whitespace 2024-05-05 17:29:40 +01:00
Phil Clifford 44f560150a docs: correct small typos in README.md 2024-05-05 17:29:40 +01:00
Martin Wimpress cc085f41ee docs: remove LSB from quickemu man page 2024-05-05 12:48:54 +01:00
Martin Wimpress 391d00eaf4 chore: drop lsb_release from NIx devshell and package 2024-05-05 12:48:54 +01:00
Martin Wimpress d6e2dca565 refactor(quickemu): remove requirement for lsb_release. close #1156 2024-05-05 12:48:54 +01:00
Martin Wimpress acde2de95a ci: remove [WIP] opt-in for pull request linting 2024-05-05 12:47:10 +01:00
Martin Wimpress cda1e1b723 docs: add note about using conventional commits spec 2024-05-05 10:44:07 +01:00
Martin Wimpress f3103a6604 ci: add lint-pr.yml; conventional commits specification checker 2024-05-05 10:44:07 +01:00
Phil Clifford 9eb54db525 chore: align sub-project 2024-05-05 09:36:41 +01:00
Phil Clifford 67893f5cb1 README.md regenerated, with only pandoc markdown pedantry differences 2024-05-05 09:36:41 +01:00
Phil Clifford 19d09556c6 Regenerated docs to adopt changes from PR 1140
man pages so far retain much of the installation and usage detail.
The README.md is now not really requiring regeneration as all the details
are referenced in the wiki.  It will be added in a seperate commit which can be ignored
but serves to show the 'corrections' and style tweaks imposed by pandoc.  These principally are line length and whitespace,
 with some markdown pedantry
2024-05-05 09:36:41 +01:00
Phil Clifford 4c47a2a3ab docs: Consistent description for package.nix
reflect changes made elsewhere
2024-05-05 09:32:10 +01:00
Liam 2acc2f4f40 Fix --url exiting when provided parameters. Closes #1160 2024-05-05 09:31:23 +01:00
Martin Wimpress 04b37ccf02 refactor: make zsync_get() consistent with other checks 2024-05-04 09:03:44 +01:00
Martin Wimpress 2e1b556b93 fix: correctly format url show daily-live tests 2024-05-04 09:03:44 +01:00
Martin Wimpress c693dc9ba7 fix: prevent daily-live images being downloaded during test 2024-05-04 09:03:44 +01:00
zen0bit 50817d2dba fix: correct shellcheck error 2068 2024-05-04 09:03:44 +01:00
zen0bit 51cbd207fe Sort os_support 2024-05-03 18:01:40 +01:00
zen0bit e5468e47c5 fix: daily-live not shown in checks 2024-05-03 18:01:14 +01:00
Martin Wimpress e4c612118e refactor: update and simplify test-quickget.yml 2024-05-03 18:00:41 +01:00
Martin Wimpress 79c0486aad style: white space clean up in test-quickget.yml 2024-05-03 18:00:41 +01:00
Martin Wimpress 182a0c11e7 ci: retain test result for default period 2024-05-03 18:00:41 +01:00
Martin Wimpress 07f6205294 ci: add version checking to publish-release.yml. close #1128 2024-05-03 18:00:41 +01:00
Martin Wimpress f03d830c30 ci: fix upload-artifacts. closes #1154 2024-05-03 18:00:41 +01:00
Martin Wimpress 2f6ab18812 refactor: update lint-shellcheck to use ludeeus/action-shellcheck. close #909 close #979 close #980 2024-05-03 18:00:41 +01:00
Martin Wimpress 7c892c9dc2 ci: refactor publish-release.yml
All release operations in a single workflow
2024-05-03 18:00:41 +01:00
Martin Wimpress 945933d5f4 fix: exit the tests correctly 2024-05-03 18:00:41 +01:00
Martin Wimpress dcbfce86d2 ci :rename workflows 2024-05-03 18:00:41 +01:00
Martin Wimpress 4abd7231c9 style: white space clean up 2024-05-03 18:00:41 +01:00
Martin Wimpress 19539d7b31 ci: use quickget long arguments for readability 2024-05-03 18:00:41 +01:00
Martin Wimpress 5da3942278 ci: update workflow names 2024-05-03 18:00:41 +01:00
Martin Wimpress ed91628c29 ci :update quickget-tests job names 2024-05-03 18:00:41 +01:00
Martin Wimpress 590bc24347 ci :remove obsolete neofetch install 2024-05-03 18:00:41 +01:00
Martin Wimpress 4e2b553972 ci: run all tests on ubuntu-22.04 2024-05-03 18:00:41 +01:00
Martin Wimpress e35f11b25e ci: update publish-flakehub.yml 2024-05-03 18:00:41 +01:00
Martin Wimpress b085bebfbe style: update usage/help for quickemu and quickget 2024-05-03 18:00:41 +01:00
zen0bit 6490d48bf9 refactor: update help_message(). closes #1148 2024-05-03 18:00:41 +01:00
zen0bit 88d61eae4e ci: misc fixes 2024-05-03 18:00:41 +01:00
zen0bit b7ff9f90db ci: Improve quickget tests 2024-05-03 18:00:41 +01:00
Martin Wimpress 9b2eeb6f93 ci: remove obsolete -ca and -ua arguments. closes #1146 2024-05-03 18:00:41 +01:00
zen0bit 88d731895a ci: save failed.txt and compare URLs/All supported 2024-05-03 18:00:41 +01:00
zen0bit 5a07cc5d92 ci: count lines and output counts in the logs 2024-05-03 18:00:41 +01:00
zen0bit 9f11bb3d02 ci: add quickget tests to github actions. closes #1153 2024-05-03 18:00:41 +01:00
zen0bit 3b7f50d3d5 fix: correct help_message() for -ca -ua; make OS optional 2024-05-03 18:00:41 +01:00
Martin Wimpress b2205dfbd8 chore: change exit code in create_conmfig() to 1 2024-05-03 10:02:45 +01:00
zen0bit d73d54a688 refactor: update create_config() function. closes #1104 #1112 #1152
Thanks Liam
2024-05-03 10:02:45 +01:00
Jai A P fedfe11190 Fix error messages printed on terminal after quickemu exits
- Fix #1130
2024-05-03 01:01:58 +01:00
zen0bit 0da48d73b0 fix: add not_supported_argument() 2024-05-03 00:27:56 +01:00
zen0bit 5026eaef06 refactor: replace open_url() with open_homepage() 2024-05-03 00:24:52 +01:00
Martin Wimpress 585dc7e023 docs: minor edit 2024-05-02 19:32:19 +01:00
Martin Wimpress 4defce0b0a docs: make headings more prominent 2024-05-02 19:32:19 +01:00
Martin Wimpress 84c0b79c34 docs: remove quick start from the header 2024-05-02 19:32:19 +01:00
Martin Wimpress 7b6026a2f4 docs: add an initial contributing section 2024-05-02 19:32:19 +01:00
Martin Wimpress a7490a3a0c docs: update FUNDING.yml 2024-05-02 19:32:19 +01:00
Martin Wimpress cabd4c3e1b docs: update the documentation intro 2024-05-02 19:32:19 +01:00
Martin Wimpress 4ec5818502 docs: remove references
The reference have been move to the wiki:
- https://github.com/quickemu-project/quickemu/wiki/08-References
2024-05-02 19:32:19 +01:00
Martin Wimpress d21969aace docs: remove quickemu command-line arguments
These have been moved to the wiki:
- https://github.com/quickemu-project/quickemu/wiki/05-Advanced-quickemu-configuration
2024-05-02 19:32:19 +01:00
Martin Wimpress 694dfb1fcd docs: add a summary of the supported operating systems 2024-05-02 19:32:19 +01:00
Martin Wimpress 0c95ac28b7 docs: add quickstart 2024-05-02 19:32:19 +01:00
Martin Wimpress 6b7c071958 docs: update the README to reference the wiki for documentation 2024-05-02 19:32:19 +01:00
Martin Wimpress 49943967a3
fix: remove commas from nativeBuildInputs 2024-05-02 17:12:19 +01:00
Martin Wimpress f5203bec11 chore: remove wget
See the following for more information:
- https://github.com/quickemu-project/quickemu/pull/1087
- https://github.com/quickemu-project/quickemu/pull/1133
2024-05-02 17:08:51 +01:00
Martin Wimpress 5290be956b style: sort packages in .nix files 2024-05-02 17:07:02 +01:00
Martin Wimpress b1f9de6ef1 fix: add ncurses to devshell.nix and package.nix 2024-05-02 17:07:02 +01:00
Martin Wimpress b0a5ae91ce fix: add pname to package.nix 2024-05-02 17:07:02 +01:00
Martin Wimpress 24c6f62b73 feat: publish tagged releases to flakehub 2024-05-02 17:07:02 +01:00
Martin Wimpress eae44aaa70 chore: update flake.lock 2024-05-02 17:07:02 +01:00
Martin Wimpress ef1cff7ec8 refactor: update flake.nix to use devshell.nix and package.nix 2024-05-02 17:07:02 +01:00
Martin Wimpress f3fff84952 feat: add devshell.nix 2024-05-02 17:07:02 +01:00
Martin Wimpress e4691ff6cd feat: add package.nix 2024-05-02 17:07:02 +01:00
Alex Genovese 52a5e5f4ef
fix for qemu-img error on new installs (#1134)
make sure a disk exists before trying to check it
2024-05-02 11:23:54 +01:00
Alex Genovese 9a09badfe5
Catalina Haswell MacOS variant (#1119)
* urgent fix for sonoma and #1114

(cherry picked from commit 960c34eca9)

* improved macos fix

Should also work on AMD RYZEN  but please re-test

Same lines as already Ryzen tested  but  further testing on older ryzen and notebooks would be a good idea

improves on #1116

hopefull solves any other issues from #1114

(cherry picked from commit e4b876c2ef)

* MacOs update variant using more Haswell

See #1117
2024-05-02 11:23:13 +01:00
Liam b61dd9336b Ignore pretty name in list_csv sorting 2024-05-02 07:51:50 +01:00
Liam e935f80928 Use parallelized list_csv as backend for list_supported 2024-05-02 07:51:50 +01:00
Liam f1ebc0c505 Don't unnecessarily fetch editions for each release 2024-05-02 07:51:50 +01:00
Liam 95b6d8cf41 Parallelize list_csv 2024-05-02 07:51:50 +01:00
zenobit faee2824a9 feat: Add nwg-shell
Live ISO based on Arch.
To test out nwg-shell on hyprland or sway
2024-05-01 14:53:46 +01:00
Phil Clifford befe1b8645 Regenerated docs 2024-04-30 12:26:33 +01:00
Phil Clifford fe5bdc3e3a Align Tuxedo function naming 2024-04-30 12:26:33 +01:00
Phil Clifford 5493bb6364 remove web_get of chunkcheck 2024-04-30 12:18:01 +01:00
Phil Clifford a488c2a7df fix: relocatable chunkcheck 2024-04-30 12:18:01 +01:00
Martin Wimpress e9018c0aaf refactor: drop superfluous sort from editions_fedora() 2024-04-30 10:38:47 +01:00
Martin Wimpress ec8073cd1e Revert "refactor: remove LC_ALL from releases_endeavouros()"
This reverts commit 22ebf5ba1c.
2024-04-30 10:38:47 +01:00
Martin Wimpress acdb709cc6 refactor: simplify show_os_info() 2024-04-30 10:38:47 +01:00
Martin Wimpress d79a911d7d refactor: consolidate show_test_result() and show_url_result() in test_result() 2024-04-30 10:38:47 +01:00
Martin Wimpress 6aab4a86c2 refactor: consolidate list_url_all() and list_check_all() into test_all() 2024-04-30 10:38:47 +01:00
Martin Wimpress 26806f9604 fix: exit test runs correctly 2024-04-30 10:38:47 +01:00
Martin Wimpress ba5bac7a81 style: make shellcheck happier 2024-04-30 10:38:47 +01:00
Martin Wimpress 8a1eb9d5dc refactor: rename $just to $OPERATION 2024-04-30 10:38:47 +01:00
Martin Wimpress 06fbd84f12 fix: limit biglinux to latest release 2024-04-30 10:38:47 +01:00
Martin Wimpress 54c149aa6f refactor: remove obsolete new line conversions 2024-04-30 10:38:47 +01:00
Martin Wimpress 4c511a74d7 feat: make releases_fedora() and editions_fedora() dynamic 2024-04-30 10:38:47 +01:00
Martin Wimpress ef68a6be16 refactor: remove line break clean up from releases_arcolinux() 2024-04-30 10:38:47 +01:00
Martin Wimpress 2460a8d621 refactor: limit bazzite releases to 5 2024-04-30 10:38:47 +01:00
Martin Wimpress 7b3abf181e feat: if --check-all is requested with no OS, list URLs for all supported OS 2024-04-30 10:38:47 +01:00
Martin Wimpress 1d916a96f5 feat: if --url-all is requested with no OS, list URLs for all supported OS 2024-04-30 10:38:47 +01:00
Martin Wimpress 3ebcc2297f refactor: use LANG and EDITION in list_supported() 2024-04-30 10:38:47 +01:00
Martin Wimpress a5c2e0dd6b refactor: make use of _show_url_result() 2024-04-30 10:38:47 +01:00
Martin Wimpress 491d071fde feat: add show_url_results() to consistently present URL listings 2024-04-30 10:38:47 +01:00
Martin Wimpress 11dfed7288 chore: remove url testing and checking from download_windows_workstation() 2024-04-30 10:38:47 +01:00
Martin Wimpress f994691dad refactor: use LANG for windows editions 2024-04-30 10:38:47 +01:00
Martin Wimpress 7a6b42f8c9 fix: get macos URL checks working 2024-04-30 10:38:47 +01:00
Martin Wimpress a279a50fd0 refactor: use show_test_result() to out URL check results 2024-04-30 10:38:47 +01:00
Martin Wimpress bd11ebdb91 feat: add show_test_result() to output iso checks consistently 2024-04-30 10:38:47 +01:00
Martin Wimpress c6aece3da5 fix: limit void releases to the 3 latest to prevent broken downloads 2024-04-30 10:38:47 +01:00
Martin Wimpress e797d55522 fix: remove double slashes from get_gentoo() 2024-04-30 10:38:47 +01:00
Martin Wimpress 4a422b9465 fix: update get_ubuntu-server() to support 14.04 and 16.04 2024-04-30 10:38:47 +01:00
Martin Wimpress a69a28ed4f fix: always process redirections for zorin .iso images 2024-04-30 10:38:47 +01:00
Martin Wimpress 7f3d15f298 fix: update gnomeos to correctly resolve URLs to .iso images 2024-04-30 10:38:47 +01:00
Martin Wimpress 673c38027e fix: limit debian releases so missing downloads are not present 2024-04-30 10:38:47 +01:00
Martin Wimpress 0ff9238d85 fix: validate os in list_check_all() and list_url_all() 2024-04-30 10:38:47 +01:00
Martin Wimpress 443ac72e2f refactor: change GOOD to CHECK and keep it in local scopes 2024-04-30 10:38:47 +01:00
Martin Wimpress 4be78cffb5 refactor: simplify list_check_all() and list_url_all() initialisation 2024-04-30 10:38:47 +01:00
Martin Wimpress 752afa56f4 style: reorder variables in get_netboot() 2024-04-30 10:38:47 +01:00
Martin Wimpress 95365eb5b6 refactor: simplify get_devuan() and update v4 to 4.0.3 2024-04-30 10:38:47 +01:00
Martin Wimpress be32867ebb fix: make sure vxlinux tests pass 2024-04-30 10:38:47 +01:00
Martin Wimpress 777f451fe2 refactor: make releases_slitaz() dynamic 2024-04-30 10:38:47 +01:00
Martin Wimpress d214ac5e14 refactor: make releases_slint() dynamic 2024-04-30 10:38:47 +01:00
Martin Wimpress ccd6dc32c5 refactor: make releases_slackware() dynamic 2024-04-30 10:38:47 +01:00
Martin Wimpress e66b92565b refactor: make releases_rockylinux() dynamic 2024-04-30 10:38:47 +01:00
Martin Wimpress 8fb58acd23 refactor: make releases_void() dynamic 2024-04-30 10:38:47 +01:00
Martin Wimpress af084aeeec refactor: simplify get_tinycore() 2024-04-30 10:38:47 +01:00
Martin Wimpress 12b03d0fde refactor: simplify releases_sparkylinux() and editions_sparkylinux() 2024-04-30 10:38:47 +01:00
Martin Wimpress 3099d7e96d fix: solus downloads work and releases_solus() and editions_solus() are dynamic 2024-04-30 10:38:47 +01:00
Martin Wimpress ade6860696 refactor: simplify releases_openindiana() 2024-04-30 10:38:47 +01:00
Martin Wimpress a09be6a976 refactor: update handle_missing() for fedora 40 2024-04-30 10:38:47 +01:00
Martin Wimpress 0f3196ad45 refactor: simplify releases_openbsd() 2024-04-30 10:38:47 +01:00
Martin Wimpress 7ff266466c fix: exclude v8 from releases_netbsd(); no longer available 2024-04-30 10:38:47 +01:00
Martin Wimpress 89111cd8de refactor: update release_manjaro() and remove manjaro from handle_missing() 2024-04-30 10:38:47 +01:00
Martin Wimpress cd3f593a7a refactor: remove latest from get_alpine() as releases_alpine() is dynamic 2024-04-30 10:38:47 +01:00
Martin Wimpress 6b95069304 refactor: simplify releases_freebsd() 2024-04-30 10:38:47 +01:00
Martin Wimpress d111c44368 feat: update releases_fedora() to support 40 2024-04-30 10:38:47 +01:00
Martin Wimpress c8ea62e50a refactor: remove LC_ALL from releases_endeavouros()
LC_ALL is set globally at the top of quickget
2024-04-30 10:38:47 +01:00
Martin Wimpress 0f970a46f8 refactor: simplify releases_dragonflybsd() 2024-04-30 10:38:47 +01:00
Martin Wimpress 409523d402 refactor: simply release_debian() and get_debian(). make sure tests pass 2024-04-30 10:38:47 +01:00
Martin Wimpress ea99b9393c refactor: make crunchbang++ dynamic 2024-04-30 10:38:47 +01:00
Martin Wimpress b69893f48b fix: do not check for redirects in web_check(). close #1108 2024-04-30 10:38:47 +01:00
Martin Wimpress 1ea307fff1 refactor: simplify releases_athenaos() 2024-04-30 10:38:47 +01:00
Martin Wimpress 12c53d4928 refactor: simplify editions_artixlinux() 2024-04-30 10:38:47 +01:00
Martin Wimpress 1d4c8c9cce fix: correct double slashed URLs 2024-04-30 10:38:47 +01:00
Martin Wimpress b8387e3446 refactor: update releases_ubuntu() and releases_ubuntu-server()
There is no requirement for INTERIM_SUPPORT now 24.04 is out and all the Ubuntu flavour have at least one LTS release.
2024-04-30 10:38:47 +01:00
Martin Wimpress 43df80636d refactor: make test output in web_get() consistent with other tests 2024-04-30 10:38:47 +01:00
Martin Wimpress 03ac799287 fix: preserve case of RELEASE 2024-04-30 10:38:47 +01:00
Martin Wimpress 19d8563b79 refactor: drop time when running list_supported() 2024-04-30 10:38:47 +01:00
Martin Wimpress dff278a0dd refactor: update deepin functions so it is no longer a special case 2024-04-30 10:38:47 +01:00
Martin Wimpress 761ae2bdd5 refactor: make alpine dynamic and check for releases 2024-04-30 10:38:47 +01:00
Martin Wimpress f843448218 refactor: ubuntu checks via sub-shell in list_check_all(), skip macos and windows 2024-04-30 10:38:47 +01:00
Martin Wimpress 9c0d446de6 refactor: use sub-shell in list_url_all() to test ubuntu, skip mac and windows 2024-04-30 10:38:47 +01:00
Martin Wimpress 50d124294c fix: do not override EDITION in get_*() functions
EDITION is set in the global scope by validate_release(), it should not be passed as an argument.
2024-04-30 10:38:47 +01:00
Martin Wimpress 346d291f73 style: add missing function keywords 2024-04-30 10:38:47 +01:00
zen0bit 9cd8938608 Reworded OK to PASS, ERROR! to FAIL 2024-04-23 10:04:08 +01:00
zen0bit 1765ae8714 Add create_config function (Initial commit)
Not finished
2024-04-23 10:04:08 +01:00
zen0bit 2ddae45d67 list_url_all function instead of list_isos, updated 2024-04-23 10:04:08 +01:00
zen0bit 358b0ff514 list_check_all function instead of test_isos, updated 2024-04-23 10:04:08 +01:00
zen0bit b884a6443d chore: Added two missed lines between functions 2024-04-23 10:04:08 +01:00
zen0bit 113bc2a3c9 feat: Rewrite test_isos function for one OS only
dirty
2024-04-23 10:04:08 +01:00
zen0bit 76521b9479 feat: Rewrite list_isos function for one OS only
dirty
2024-04-23 10:04:08 +01:00
zen0bit 5e2351a446 fix: Removed arguments also from run script 2024-04-23 10:04:08 +01:00
zen0bit 02444e74c5 feat: Final help message
Less is More
2024-04-23 10:04:08 +01:00
zen0bit 0d6a434ecd Rename tuxedo-os to tuxedoos 2024-04-23 10:04:08 +01:00
zen0bit 5911d2af41 Solve 'lists' in case instead in iffi 2024-04-23 10:04:08 +01:00
Phil Clifford 5f6495c871 replace blank credentials with '-' 2024-04-23 08:02:31 +01:00
Phil Clifford d2b6806e08 fix small typo 2024-04-23 08:02:31 +01:00
Phil Clifford 2f9c60dc6a chore: Regenerated docs to reflect these fixes
NB This also includes documentation changes linking to the wiki that identified these possible issues
2024-04-23 08:02:31 +01:00
Phil Clifford 18d76996c5 Correct SpiralLinux 2024-04-23 08:02:31 +01:00
Phil Clifford d18fc5ee16 Add missed entry for Tuxedo OS
Co-authored-by:  TuxVinyards  <TuxVinyards@users.noreply.github.com>
2024-04-23 08:02:31 +01:00
Phil Clifford 987fabef2f Move PrimTux and change description to reflect theirs. 2024-04-23 08:02:31 +01:00
Phil Clifford 5b1728481c Add missing GNOME OS entry 2024-04-23 08:02:31 +01:00
Phil Clifford e03487def3 Correct BunsenLabs name 2024-04-23 08:02:31 +01:00
Phil Clifford daf59c0ab0 Correct BigLinux 2024-04-23 08:02:31 +01:00
Phil Clifford 40301415e4 Bazzite use Bazzite too, so lets be self-consistent 2024-04-23 08:02:31 +01:00
Martin Wimpress f2e9a81a0a style: white space clean up 2024-04-23 08:01:28 +01:00
Martin Wimpress 2b05eb832c refactor: do not completely fail macOS verification checks 2024-04-23 08:01:28 +01:00
Martin Wimpress 956a3caec5 fix: correct path for macOS downloads 2024-04-23 08:01:28 +01:00
Martin Wimpress f7a6ec0245 refactor: replace wget --spider with web_check; return PASS or FAIL 2024-04-23 08:01:28 +01:00
Martin Wimpress 4efd5f7d93 refactor: make --header support in web_get() the same as web_check() 2024-04-23 08:01:28 +01:00
Martin Wimpress 0f69aeae9a feat: add --header support to web_check() 2024-04-23 08:01:28 +01:00
Liam 02b93d9bbe Fix error on invalid OS selection 2024-04-23 06:57:19 +01:00
Liam 9ad1be3ec1 Fix windows downloads 2024-04-22 17:22:29 +01:00
Phil Clifford d2081b53ac chore: regenerated docs for small change in available OSes 2024-04-21 14:36:43 +01:00
Martin Wimpress f907ddac41 chore: preserve recent changes to get_vanillaos() 2024-04-21 14:07:10 +01:00
Martin Wimpress 47eec2fe15 chore: preserve recent changes to get_rebornos() 2024-04-21 14:07:10 +01:00
Martin Wimpress 11453885cc chore: preserve recent changes to get_garuda() 2024-04-21 14:07:10 +01:00
Martin Wimpress 66aca19437 chore: preserve recent changes to get_freedos() 2024-04-21 14:07:10 +01:00
Martin Wimpress eed65ddc81 chore: preserve recent changes to get_blendos() 2024-04-21 14:07:10 +01:00
Martin Wimpress 0057b3fbee chore: preserve recent changes to get_archcraft() 2024-04-21 14:07:10 +01:00
zen0bit 539731820f feat: Use more cut_1 function 2024-04-21 13:57:48 +01:00
zen0bit f555b2a3d9 fix: Remove second handle_missing function 2024-04-21 13:57:48 +01:00
zen0bit 218d8ca3fd chore: Slightly modified some messages 2024-04-21 13:57:48 +01:00
zen0bit e49d608473 chore: Add 'function' to front of some functions 2024-04-21 13:57:48 +01:00
zen0bit 96cc14a322 feat: Add message to web_get test 2024-04-21 13:57:48 +01:00
zen0bit 11a13d4342 feat: Add --create-config to new run script (#TODO:) 2024-04-21 13:57:48 +01:00
zen0bit c1964f37aa feat: Add --url-all to new run script 2024-04-21 13:57:48 +01:00
zen0bit 412d59ab4f feat: Add --url to new run script 2024-04-21 13:57:48 +01:00
zen0bit 3ea219264b feat: Change show_iso_url variable to just="show" 2024-04-21 13:57:48 +01:00
zen0bit a71c9e107b feat: Add --test-urls to new run script 2024-04-21 13:57:48 +01:00
zen0bit 0b176ba15d feat: Add --list-urls to new run script 2024-04-21 13:57:48 +01:00
zen0bit 675ace38c5 feat: Add --list to new run script 2024-04-21 13:57:48 +01:00
zen0bit b3524d1106 feat: Add --list-json to new run script 2024-04-21 13:57:48 +01:00
zen0bit 4099961577 feat: Add --list-csv to new run script 2024-04-21 13:57:48 +01:00
zen0bit a785c3a7b1 feat: Add --check-all to new run script 2024-04-21 13:57:48 +01:00
zen0bit 75df94154e feat: Add --check to new run script 2024-04-21 13:57:48 +01:00
zen0bit 32f573fc36 feat: Change test_iso_url variable to just="test" 2024-04-21 13:57:48 +01:00
zen0bit 05c7165fbc feat: Add --help to new run script 2024-04-21 13:57:48 +01:00
zen0bit 53e7f2b203 fix: Readd renamed error_specify_path function, cleanup 2024-04-21 13:57:48 +01:00
zen0bit d72f007b9c fix: Readd renamed error_specify_edition function, cleanup 2024-04-21 13:57:48 +01:00
zen0bit 937f68e01f fix: Readd renamed error_specify_release function, cleanup 2024-04-21 13:57:48 +01:00
zen0bit e0d2f8ebe1 feat: Add --version to new run script 2024-04-21 13:57:48 +01:00
zen0bit 1f4e89c098 feat: Add --open-homepage to new run script 2024-04-21 13:57:48 +01:00
zen0bit b23b1c1459 fix: Readd renamed error_specify_os function, cleanup 2024-04-21 13:57:48 +01:00
zen0bit 2714661e1b feat: Add reworked os_homepage function, remove old one 2024-04-21 13:57:48 +01:00
zen0bit b811977464 feat: Add --download to new run script 2024-04-21 13:57:48 +01:00
zen0bit 983c6af8a6 feat: Change download_iso variable to just="download" 2024-04-21 13:57:48 +01:00
zen0bit a885ed5b6f feat: Add reworked help_message function 2024-04-21 13:57:48 +01:00
zen0bit 08bcac1cf9 fix: Readd renamed error_not_supported_lang function, cleanup 2024-04-21 13:57:48 +01:00
zen0bit 1f084009df fix: Readd renamed error_not_supported_release function, clean up 2024-04-21 13:57:48 +01:00
zen0bit 370d7d5843 fix: Readd renamed error_not_supported_editions function, cleanup 2024-04-21 13:57:48 +01:00
zen0bit c5ec090970 fix: Readd renamed error_not_supported_os function, cleanup 2024-04-21 13:57:48 +01:00
zen0bit 9bbfd6dafe feat: Add new run script 2024-04-21 13:57:48 +01:00
zen0bit 12a17a82a6 feat: Add show_os_info function 2024-04-21 13:57:48 +01:00
zen0bit ba67f7ff71 feat: Add reworked pretty_name function, remove old one 2024-04-21 13:57:48 +01:00
zen0bit 39d1bff0c2 chore: Add function beware cut_1 function 2024-04-21 13:57:48 +01:00
zen0bit a948ece78d chore: Slightly modify code style in get_rockylinux function 2024-04-21 13:57:48 +01:00
zen0bit 7814f74377 chore: Slighlty modify chunkcheck message 2024-04-21 13:57:48 +01:00
zen0bit 6ae74a397c chore: Move get_biglinux function 2024-04-21 13:57:48 +01:00
zen0bit 7a88eab9af chore: Move get_blendos function 2024-04-21 13:57:48 +01:00
zen0bit a2b6250680 chore: Move get_rebornos function 2024-04-21 13:57:48 +01:00
zen0bit 07b1284d2a chore: Move get_bunsenlabs function 2024-04-21 13:57:48 +01:00
zen0bit 3d36ea703d chore: Move get_archcraft function 2024-04-21 13:57:48 +01:00
zen0bit 87c70e10ee chore: Move get_vanillaos function 2024-04-21 13:57:48 +01:00
zen0bit 7cd3e4e669 chore: Make editions_fedora on one line 2024-04-21 13:57:48 +01:00
zen0bit d90b1ac669 chore: Make indentation consistent 2024-04-21 13:57:48 +01:00
zen0bit d7cbf04f47 chore: Change tabs to spaces 2024-04-21 13:57:48 +01:00
zen0bit 158bbf36c4 fix: Remove tux logo from comment 2024-04-21 13:57:48 +01:00
Martin Wimpress 70984dfda9 refactor: simplify get_antix() 2024-04-21 09:59:48 +01:00
Martin Wimpress 41b734e23a refactor: tidy up get_chimeralinux() 2024-04-21 09:59:48 +01:00
Martin Wimpress 592572345c refactor: make hardcoded URL in get_archcraft() dynamic 2024-04-21 09:59:48 +01:00
Martin Wimpress eb78e7780e fix: make hash checking work in get_archlinux() 2024-04-21 09:59:48 +01:00
Martin Wimpress 0cd462408a feat: make releases_vanillaos() dynamic 2024-04-21 09:59:48 +01:00
Martin Wimpress f6ce01a09e feat: make releases_centos-stream() dynamic and drop v8
The CentOS Stream 8 EOL is very close, so removing it now.
2024-04-21 09:59:48 +01:00
Martin Wimpress 636dc16f7a feat: make editions_cachyos() dynamic and simplify 2024-04-21 09:59:48 +01:00
Martin Wimpress c864de7876 refactor: present current release name in releases_bunsenlabs() 2024-04-21 09:59:48 +01:00
Martin Wimpress c36497a88a feat: make blendos_releases() dynamic and simplify 2024-04-21 09:59:48 +01:00
Martin Wimpress af7fe35742 feat: make releases_batocera() dynamic 2024-04-21 09:59:48 +01:00
Martin Wimpress 0596f3b243 fix: correctly format releases_athenaos() output 2024-04-21 09:59:48 +01:00
Martin Wimpress cf5b404dce fix: correctly format artixlinux releases and editions 2024-04-21 09:59:48 +01:00
Martin Wimpress bc39f15369 refactor: simplify releases_arcolinux() 2024-04-21 09:59:48 +01:00
Martin Wimpress afb872d9f4 refactor: optimise web_pipe() to follow redirections but not resolve them 2024-04-21 09:59:48 +01:00
Martin Wimpress 41264636ea refactor: make biglinux releases and editions dynamic 2024-04-21 09:59:48 +01:00
Martin Wimpress 89b2c7412e refactor: make artix releases and editions dynamic 2024-04-21 09:59:48 +01:00
Martin Wimpress 57eea29cb2 fix: do not process URL redirection until after ISO file name stored 2024-04-21 09:59:48 +01:00
Martin Wimpress 44d0d10c6e chore: correct typo in comment 2024-04-21 09:59:48 +01:00
Martin Wimpress 5396e86eec refactor: web_get() downloads with curl with fallback to wget on failure 2024-04-21 09:59:48 +01:00
Martin Wimpress 9e99b08a8c feat: make curl a hard requirement of quickget 2024-04-21 09:59:48 +01:00
Martin Wimpress 4619b71b4e docs: add comments for the web_*() handlers 2024-04-21 09:59:48 +01:00
Martin Wimpress 86cb0cdf04 refactor: update web_get() to use web_redirect() 2024-04-21 09:59:48 +01:00
Martin Wimpress 592b838db6 refactor: update web_pipe() to use web_redirect() 2024-04-21 09:59:48 +01:00
Martin Wimpress 806b1a439f feat: add web_check(); a replacement for wget --spider 2024-04-21 09:59:48 +01:00
Martin Wimpress c7af18f0f4 feat: add web_redirect() 2024-04-21 09:59:48 +01:00
Martin Wimpress 4eb1b4d09b style: correct indentation 2024-04-21 09:59:48 +01:00
Martin Wimpress fc96b66ada fix: improve presentation of changing permission of config files 2024-04-21 09:59:48 +01:00
Martin Wimpress de798af9b0 refactor: simplify get_gentoo() 2024-04-21 09:59:48 +01:00
Martin Wimpress 4e891ec52d chore: update releases_tinycore() 2024-04-21 09:59:48 +01:00
Martin Wimpress 846868d5c1 chore: update releases_solus() 2024-04-21 09:59:48 +01:00
Martin Wimpress 077a9f409b chore: update releases_porteus() 2024-04-21 09:59:48 +01:00
Martin Wimpress ae5c514982 chore: update releases_parrotsec() and editions_parrotsec() 2024-04-21 09:59:48 +01:00
Martin Wimpress 3278858050 chore: update releases_mxlinux() 2024-04-21 09:59:48 +01:00
Martin Wimpress b65e659bf1 chore: update releases_mageia() 2024-04-21 09:59:48 +01:00
Martin Wimpress 84fea55597 chore: update releases_lmde() 2024-04-21 09:59:48 +01:00
Martin Wimpress 832907a7e2 chore: update releases_endless() and get_endless() 2024-04-21 09:59:48 +01:00
Martin Wimpress 598aaaf78c chore: correct ordering for releases_devuan() 2024-04-21 09:59:48 +01:00
Martin Wimpress 9732081dc5 chore: update releases_antix() 2024-04-21 09:59:48 +01:00
Martin Wimpress 795c84b415 chore: update releases_alpine() 2024-04-21 09:59:48 +01:00
Martin Wimpress 8bd89fb30d docs: update example dynamic releases for easyos 2024-04-21 09:59:48 +01:00
Martin Wimpress dc40f59a2c chore: remove old releases from easyos 2024-04-21 09:59:48 +01:00
Martin Wimpress 9eb4d86745 refactor: update get_macos() to only use web_get() 2024-04-21 09:59:48 +01:00
Martin Wimpress a260e9b45d refactor: simplify get_elementary() 2024-04-21 09:59:48 +01:00
Martin Wimpress dbcbd12c80 refactor: update archcraft to it can use the new web_get() 2024-04-21 09:59:48 +01:00
Martin Wimpress 005f3375cd refactor: update vxlinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress f8ddb4cef3 refactor: update ubuntu to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 660af25250 refactor: update sparkylinux releases and editions to be dynamic 2024-04-21 09:59:48 +01:00
Martin Wimpress 1b42fbeda3 refactor: update rebornos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress b2bcf036f8 refactor: update pureos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress a2c58ea3e5 fix: make opensuse releases dynamic and current 2024-04-21 09:59:48 +01:00
Martin Wimpress 0302973278 fix: update openindiana releases to be dynamic and current 2024-04-21 09:59:48 +01:00
Martin Wimpress 8e87089a34 refactor: update openbsd to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress a2c3181191 refactor: update netbsd to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 7fb1400c7e refactor: update holoiso to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 139601d024 refactor: update gnomeos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 8e14a580c4 fix: update ghostbsd releases to be dynamic and current 2024-04-21 09:59:48 +01:00
Martin Wimpress 0f22368cfb refactor: update freebsd to use web_pipe() and correct order 2024-04-21 09:59:48 +01:00
Martin Wimpress 2b3a2997a6 refactor: update endeavouros to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 03d905435d refactor: update dragonfly to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress a300b200a4 refactor: make deepin releases dynamic 2024-04-21 09:59:48 +01:00
Martin Wimpress f94e975029 fix: update debian with web_pipe(), correct output and ignore NEVER_RELEASED 2024-04-21 09:59:48 +01:00
Martin Wimpress 5cb578acc6 refactor: update blendos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 44a7caf1a0 refactor: make biglinux releases dynamic 2024-04-21 09:59:48 +01:00
Martin Wimpress 22af654167 refactor: update bazzite to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 9234765d3a refactor: update athenaos to use GitHub and migrate to web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 97bff52088 fix: update arcolinux with working URL and migrate to web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 30b09bc070 fix: sparklinux doesn't publish iso details in the RSS feed anymore 2024-04-21 09:59:48 +01:00
Martin Wimpress 5b9de101d8 docs: add web_pipe() to quick n dirty guide 2024-04-21 09:59:48 +01:00
Martin Wimpress cbd03d7824 refactor: update vxlinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 50d6ff045e chore: drop xerolinux; it is no longer a distro and image are deleted 2024-04-21 09:59:48 +01:00
Martin Wimpress 2750b9179f refactor: update zorin to use new web_get() 2024-04-21 09:59:48 +01:00
Martin Wimpress 729729fd6d refactor: update void to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 234cf563d5 refactor: update ubuntu to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 7984fe2e5e refactor: update ubuntu-server to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress ee3d432736 refactor: update tuxedoos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 2d0eb009eb fix: update releases_truenas-core(); only release 13 is available 2024-04-21 09:59:48 +01:00
Martin Wimpress 4b0d5e7a56 fix: update releases_truenas-scale(); only release 23 is available 2024-04-21 09:59:48 +01:00
Martin Wimpress c98cd172a5 refactor: update truenas-core to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 5cb6baa439 refactor: update truenas-scale to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 6effd819e8 refactor: update trisquel to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 3ff9ea5204 refactor: update tinycore to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 866fed32c7 refactor: update tails to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 2274d3d923 refactor: update spirallinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 55a4c85820 refactor: update sparkylinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 4a52480fe6 refactor: update solus to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress e430c3fbe3 refactor: update slitaz to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress ec142f6cdc refactor: update slint to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress b07b5cdec2 refactor: update slax to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress c071d1dd8d refactor: update slackware to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 75816eb35d refactor: update siduction to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 681ee3a9aa refactor: update rockylinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress b69c62e051 refactor: update pureos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 2e9b650711 refactor: update primtux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress f35524f8a3 refactor: update porteus to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 9bf12fee68 refactor: update popos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 9de248fbaa refactor: update peppermint to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 57b55f5e22 refactor: update parrot to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 5eb4b39c81 refactor: update opensuse to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress e726789238 refactor: update oraclelinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 8e5ad375f3 refactor: update openindiana to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress fc95daed9f refactor: update openbsd to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 6c95750fe2 refactor: update nixos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 8726bf9fad refactor: update nitrux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress de79448b39 refactor: update netbsd to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 074796db4c refactor: update netboot to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 1823596fac refactor: update mxlinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress fb6484588c refactor: update manjaro to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress de7dca9b90 refactor: update mageia to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 404661abec refactor: update lmde to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 01aa720419 refactor: update linuxmint to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 86ed099283 refactor: update linuxlite to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 3b01fb26dd refactor: update kdeneon to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 30dd6a9cd0 refactor: update kali to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 297fa080f3 refactor: update holoiso to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress b11dcdc0fa refactor: update haiku to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 8f413b0ec9 refactor: update guix to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 5dd44c6fe5 refactor: update ghostbsd to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 35a80ef6b9 refactor: update gentoo to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 568032077b style: improve the presentation of download URLs and redirections 2024-04-21 09:59:48 +01:00
Martin Wimpress 789ef5645d refactor: update web_pipe() to handle redirections 2024-04-21 09:59:48 +01:00
Martin Wimpress 6662ab1740 refactor: update garuda to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 897aae02ab refactor: update reactos to let web_get() handle redirections 2024-04-21 09:59:48 +01:00
Martin Wimpress 81f0506bf7 fix: web_get() now tests for redirections using curl
Mostly this fixes downloads from sourceforge, but should make curl downloads more reliable in general
2024-04-21 09:59:48 +01:00
Martin Wimpress 8f20ae1e5d chore: remove unused variable 2024-04-21 09:59:48 +01:00
Martin Wimpress f27882926a style: correct indentation 2024-04-21 09:59:48 +01:00
Martin Wimpress e9fe08f36a refactor: update antix to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 00fcd9675b refactor: update deepin to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress da5f3c91d0 refactor: update freebsd to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress b5e4891d5c refactor: update fedora to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 00e80c6fd2 refactor: update endeavouros to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 1a25318d89 refactor: update easyos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress d0c5d83cbb refactor: update draginflybsd to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress f7c88e12ba refactor: update devuan to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress b2dfb55406 refactor: update debian to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 46724130ac refactor: update chimera to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress d01855e0ed refactor: update centos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 911726aa61 refactor: update cachyos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 1afade4eda refactor: update bodhi to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress d3676dcdb6 refactor: update bazzite to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress c0a3b0a686 refactor: update batocera to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 3796fa7596 refactor: update vanillaos to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress f4432af3d9 feat: update bunsenlabs to current release 2024-04-21 09:59:48 +01:00
Martin Wimpress 522c266ee7 refactor: update bunsenlabs to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 28e1abf6bd fix: remove duplicate get_biglinux() 2024-04-21 09:59:48 +01:00
Martin Wimpress 607afdd004 refactor: update biglinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress af7eb4ab65 refactor: update artixlinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 873e3b0bcc refactor: update arcolinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 4b1b6f8382 refactor: update archlinux to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress e8557d4fd7 refactor: update android to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress 85936d8128 refactor: update alpine to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress b0a439ceb7 refactor: update alma to use web_pipe() 2024-04-21 09:59:48 +01:00
Martin Wimpress f007e06abe feat: add web_pipe() 2024-04-21 09:59:48 +01:00
Phil Clifford 8a198b0031 Fix small typo in sed call 2024-04-20 11:44:52 +01:00
Martin Wimpress 62064c0c13 fix: correct syntax error when detecting old ubuntu releases 2024-04-19 15:09:13 +01:00
Liam 9665a11e21 Add Windows error message to the download function 2024-04-19 14:34:19 +01:00
Phil Clifford c39cf208e7 chore: align subproject 2024-04-19 13:54:43 +01:00
Phil Clifford f5c805c25c docs: Incorporate changes from PR 1063
Man pages aligned. Also picked up arrival of HoloIso
2024-04-19 13:54:43 +01:00
zen0bit a8be31056e fix: big moving of new parts 2024-04-19 13:54:11 +01:00
zen0bit 37959f9933 fix: move cut_1 2024-04-19 13:53:21 +01:00
zen0bit 1b7050103c style: move primtux info 2024-04-19 13:48:45 +01:00
zenobit e1952d7e56
style: Remove 100+ empty lines which don't significantly improve readibility (#1066)
(In my opinion)
2024-04-17 15:12:35 +01:00
zen0bit ce39944f43 fix: debian from newest and on one line 2024-04-17 13:17:17 +01:00
zen0bit d280a48acd feat: Use more cut_1 function 2024-04-17 13:16:42 +01:00
Liam 6f88ffedbc Fix HoloISO downloads - closes #1062 2024-04-17 11:39:29 +01:00
zen0bit 1ed0a4d14e style: Sort OS releases alphabeticaly
archcraft
archlinux
batocera
bunselabs
macos
manjaro
mxlinux
2024-04-17 11:38:30 +01:00
zen0bit f40a90772b style: fix indentation 2024-04-17 11:35:22 +01:00
zen0bit f0fb2c8f6f fix: validate_release function 2024-04-17 03:55:36 +01:00
zen0bit ea454aea76 Improve error messages functions 2024-04-17 03:55:10 +01:00
Martin Wimpress 6e4d7850fb style: white space clean up in docs 2024-04-17 03:54:38 +01:00
Martin Wimpress 92da03aa90 fix: correct URL for downloading Rocky Linux 2024-04-17 03:54:38 +01:00
Martin Wimpress 36dce7b616 chore: add newer Rockly Linux releases 2024-04-17 03:54:38 +01:00
Martin Wimpress c246b3a1d0 chore: add newer Oracle Linux release 2024-04-17 03:54:38 +01:00
Martin Wimpress 6b74ef78d7 fix: use zsync for Ubuntu daily images 2024-04-17 03:54:38 +01:00
Martin Wimpress 67ddb91915 fix: add #! to chunkcheck and correct skipVerification for macOS 2024-04-17 03:54:38 +01:00
Martin Wimpress 3722b13ecb chore: add curl to debian/control Depends: 2024-04-17 03:54:38 +01:00
Martin Wimpress c2778e1b27 docs: add curl to the requirements 2024-04-17 03:54:38 +01:00
Martin Wimpress 328a6b5bf6 feat: replace aria2c with curl for quickget downloads. Closes #1057 2024-04-17 03:54:38 +01:00
Phil Clifford 93e0125880 fix: recovered macos instructions for TRIM 2024-04-17 03:53:43 +01:00
zen0bit 60eae62ac7 feat: Add os_supported_release function 2024-04-17 03:51:52 +01:00
Martin Wimpress 8768283af0 fix: add nixos unstable. Fixes #732 2024-04-17 01:14:38 +01:00
Liam 7e3515aa06 Fix regression in the case of a missing release - closes #1049 2024-04-17 00:24:17 +01:00
Martin Wimpress dc81b8c2b3 fix: clean exit returns 0. Fixes #531 2024-04-17 00:12:43 +01:00
Phil Clifford d7e41bc704 docs: regenerated after merges
PureOS and TuxedoOS additions
2024-04-16 23:50:56 +01:00
Martin Wimpress b6f5b1aeb8 fix: use vmware-svga for old Ubuntu releases. Fixes #966 2024-04-16 23:49:59 +01:00
Martin Wimpress 3c6e803c77 fix: correct align and format Host and CPU information 2024-04-16 23:49:59 +01:00
Martin Wimpress 6266e37eec chore: white space clean up 2024-04-16 22:48:11 +01:00
Martin Wimpress c9f477517a fix: disable HPET based on the version of QEMU being used. Fixes #1001 2024-04-16 22:48:11 +01:00
Martin Wimpress febb854aa8 feat: add cut_1() 2024-04-16 22:02:59 +01:00
Martin Wimpress d2797b6834 chore: white space clean up 2024-04-16 21:40:55 +01:00
Martin Wimpress b486a7519d fix: remove stray closing brace 2024-04-16 21:40:55 +01:00
Martin Wimpress f305103f6d fix: add missing fedora releases 2024-04-16 21:40:55 +01:00
Martin Wimpress 08746937db chore: white space clean up 2024-04-16 19:29:55 +01:00
Martin Wimpress 7600932b12 refactor: update download_windows_workstation() based on Mido 2024-04-16 19:29:55 +01:00
Martin Wimpress e017c2dfa6 refactor: update download_windows_server() based on Mido 2024-04-16 19:29:55 +01:00
Martin Wimpress 9c09fdb000 docs: update downloads_windows function attributions 2024-04-16 19:29:55 +01:00
Martin Wimpress b1c75d3b5d refactor: rename download_windows functions 2024-04-16 19:29:55 +01:00
Martin Wimpress 1012109536 feat: add curl_windows() from Mido 2024-04-16 19:29:55 +01:00
Martin Wimpress 1004c3428b refactor: update handle_curl_error() based Mido 2024-04-16 19:29:55 +01:00
zen0bit 272334b2a7 style: Sort OS releases from newest to oldest 2024-04-16 19:23:23 +01:00
zen0bit ee65d6ee26 Improve list_isos function messages shown to user 2024-04-16 19:22:54 +01:00
zen0bit 9b0e0a880b Add os_homepage function 2024-04-16 19:22:22 +01:00
zen0bit 2a67445c65 Move os_credentials function where belongs 2024-04-16 19:22:01 +01:00
zen0bit 2b4c60fc1f Move os_about function where belong 2024-04-16 19:21:40 +01:00
zen0bit dd35355f70 Add pureos info (added before that) 2024-04-16 19:21:14 +01:00
Martin Wimpress 4281e0daf3 feat: add flake.nix to assist local development 2024-04-16 16:57:06 +01:00
zen0bit 9b5593749b fix: help_message function placement
More functions not in correct position, but only this inside something
else
- To the rest we will get later.
2024-04-16 16:54:52 +01:00
Martin Wimpress 4f886f7c80 chore: disable reviewdog for PRs
This generate too much noise in pull-requests making it is impossible to review changes. Will re-enalble when quickemu and quickget have zero sheelcheck issues
2024-04-16 15:22:38 +01:00
Martin Wimpress 652d91d33a fix: update URLs referencing the project #945 2024-04-16 14:42:38 +01:00
Martin Wimpress 6028a611c0
feat: test_isos function 2024-04-16 14:19:54 +01:00
Martin Wimpress 0c910be5c4
feat: os_supported_edition function 2024-04-16 14:14:32 +01:00
Martin Wimpress bf8fa84c4f
feat: os_supported_edition function 2024-04-16 14:12:43 +01:00
Martin Wimpress c23b2afd80
feat: os_error_edition function 2024-04-16 14:11:32 +01:00
Martin Wimpress d96978d1c2
feat: os_supported_lang function 2024-04-16 14:10:33 +01:00
Martin Wimpress c3acd28c6b
feat: handle_missing function 2024-04-16 14:05:34 +01:00
Martin Wimpress 29167d8528
feat: os_error function 2024-04-16 14:04:18 +01:00
Martin Wimpress 20b5e1c335
feat: os_not_supported function 2024-04-16 14:03:24 +01:00
zen0bit 7c53267153 feat: Add function to test if all ISOs are really downloadable 2024-04-16 14:53:07 +02:00
zen0bit 9ff5f02d8f feat: Add function to show error message if path not specified 2024-04-16 13:49:12 +01:00
zen0bit 15e4726801 feat: Add folding to shown releases and editions (no more words cutted in half) 2024-04-16 13:48:51 +01:00
zen0bit c703f8518e feat: Add function to show nice help message 2024-04-16 13:48:33 +01:00
Martin Wimpress 626c63cb7e
feat: list_isos function 2024-04-16 13:47:56 +01:00
zen0bit b6e71f985a feat: Add function to list supported OS with all releases and editions 2024-04-16 13:46:41 +01:00
zen0bit 707a45d909 feat: Add new pretty_name function
for now renamed to pretty_name_new
rename to pretty_name after merging needed chnges
2024-04-16 13:46:12 +01:00
zen0bit 4cc1b90b25 feat: Add function to show OS homepage 2024-04-16 13:45:47 +01:00
Martin Wimpress 0f04a90bdb
feat: os_about function 2024-04-16 13:45:10 +01:00
Martin Wimpress 44f885551e
feat: os_basedof function 2024-04-16 13:43:38 +01:00
Martin Wimpress a6993b1b52
feat: os_basedof function #1008 2024-04-16 13:24:15 +01:00
zen0bit 6418593dfa ci: Add reviewdog - Automated shellcheck in github action for PRs (no automated repair) 2024-04-16 13:17:52 +01:00
zen0bit 96ba1f8f9b fix: multiple distros now have also releases on 1 line 2024-04-16 13:16:41 +01:00
zen0bit 005d2b2d1b fix: chimeralinux release function 2024-04-16 13:14:33 +01:00
zen0bit 0f1eb545c0 feat: Add function with information about supported operating systems 2024-04-16 13:10:30 +01:00
zen0bit 29be0990fe fix: failing to launch VMs from outside directory
https://github.com/quickemu-project/quickemu/pull/875
2024-04-16 13:08:56 +01:00
Liam 592271d46b Use only latest BlendOS release 2024-04-16 13:04:17 +01:00
zen0bit 156e11af32 feat: Move you must specify release into function 2024-04-16 02:49:41 +02:00
zen0bit a346855bab feat: Move is not supported language message into function 2024-04-16 02:48:57 +02:00
zen0bit ae7b47f7f9 feat: Move must specify edition message into function 2024-04-16 02:48:00 +02:00
zen0bit cb33fa0bc8 feat: Move not supported edition message into function 2024-04-16 02:47:06 +02:00
zen0bit 534f7fc342 feat: Move handling of unsupported combinations into function 2024-04-16 02:44:13 +02:00
zen0bit 7394518602 feat: Add function to show error message if OS not specified 2024-04-16 02:34:36 +02:00
zen0bit 7a3e3c802a feat: Add function to show error if OS is not supported 2024-04-16 02:33:42 +02:00
zen0bit bd0327c7b8 feat: Add function to list ISOs of all supported OS 2024-04-16 02:26:13 +02:00
zen0bit 0a472db085 feat: Add function to show short info about OS 2024-04-16 02:22:40 +02:00
zen0bit f5d87cf419 feat: Add function to show default live OS credentials 2024-04-16 02:21:32 +02:00
zen0bit c6462e9fa4 feat: os_basedof function 2024-04-15 17:58:37 +02:00
Phil Clifford bea27b1ffa Further markdown linting and standartisation of fencing 2024-04-15 09:09:57 +01:00
Phil Clifford d1c4fa9de5 Readme and man pages regenerated reflecting updates
Co-authored-by: frafra frafra@users.noreply.github.com
2024-04-15 09:09:57 +01:00
Martin Wimpress 8aa7ccc796 docs: emphasise macOS host support is WIP 2024-04-15 09:09:57 +01:00
Martin Wimpress 465623b904 docs: improve installation documentation for Debian and derivatives #863 #583 2024-04-15 09:09:57 +01:00
Martin Wimpress 24bcdfdb9a docs: correct example documentation for ubuntu daily-live. close #943 2024-04-15 09:09:57 +01:00
Phil Clifford 33b8133a33 Readme and man pages regenerated reflecting updates 2024-04-15 09:09:57 +01:00
Alex Genovese eac8cc2031 Add Tuxedo OS
As requested by @zen0bit ...

❤️
2024-04-15 08:53:55 +01:00
Chase Covello 4337aff726 Updated Makefile
Updated Makefile to install/uninstall chunkcheck and to remove
installation of macrecovery.
2024-04-15 08:51:54 +01:00
Alex Genovese 91389d6be4 add PureOS 2024-04-13 11:44:40 +01:00
zen0bit 10d69b72d0 readd EasyOS 2024-04-12 10:00:26 +01:00
Alex Genovese 70cf5c2100 fix sse41 contradiction and cpuid host warnings
Previously grepped for sse4_1
but specified sse4_2

Also needs TSX controls.

See comments at end of #886
2024-04-12 09:50:47 +01:00
Alex Genovese d030221214 revised health checker
milliseconds, almost instant ...

fix for earlier pr which failed on new installs
if disk was not present #848
2024-04-12 09:50:14 +01:00
Martin Wimpress 77123d0751 fix: update debian package to install chunkcheck. close #988 2024-04-11 23:48:44 +01:00
Martin Wimpress f2087c376b chore: white space clean up 2024-04-11 23:48:44 +01:00
Martin Wimpress 56e1c22e50 docs: emphasise macOS host support is WIP 2024-04-11 23:48:44 +01:00
Martin Wimpress f03061d8a7 docs: improve installation documentation for Debian and derivatives #863 #583 2024-04-11 23:48:44 +01:00
Martin Wimpress 6a60919293 docs: remove old YouTube video 2024-04-11 23:48:44 +01:00
Martin Wimpress e9299fc8b3 docs: correct example documentation for ubuntu daily-live. close #943 2024-04-11 23:48:44 +01:00
Martin Wimpress 0d5b97e186 chore: update version to 4.9.3. close #458 2024-04-11 23:48:44 +01:00
Martin Wimpress f018aee3aa chore!: drop easyos; the domain for downloads no longer resolves. close #921 2024-04-11 23:48:44 +01:00
zenobit facb5d163e 🛠 CachyOS latest
Signed-off-by: zenobit <zenobit@disroot.org>
2024-04-11 22:08:12 +01:00
zenobit 147e938e93 🛠 BlendOS releases on 1 line
Signed-off-by: zenobit <zenobit@disroot.org>
2024-04-11 22:08:12 +01:00
zenobit e96e90ebc7 🌀 EndeavourOS dynamic releases Thanks to @lj3954
Signed-off-by: zenobit <zenobit@disroot.org>
2024-04-11 22:08:12 +01:00
zenobit b36e62694c 🛠 Gentoo livegui
Signed-off-by: zenobit <zenobit@disroot.org>
2024-04-11 22:08:12 +01:00
zenobit 5e980a8631 🛠 spiral rename
Signed-off-by: zenobit <zenobit@disroot.org>
2024-04-11 22:08:12 +01:00
zenobit bce0dbffbe 📦 SparkyLinux 2024-04-11 22:08:12 +01:00
zenobit 4c6c078d3c 📦 Slitaz GNU/Linux 2024-04-11 22:08:12 +01:00
zenobit 5e7e677131 📦 Slint 2024-04-11 22:08:12 +01:00
zenobit efd8913de1 📦 Slax 2024-04-11 22:08:12 +01:00
Olivier Duquesne d5dc137016 📦 Primtux Thanks to @DaffyDuke 2024-04-11 22:08:12 +01:00
zenobit 411d87d63e 📦 Parrot Security 2024-04-11 22:08:12 +01:00
zenobit 62c4c44090 📦 Nitrux 2024-04-11 22:08:12 +01:00
zenobit 59033897c8 📦 Guix 2024-04-11 22:08:12 +01:00
zenobit e03d438b00 📦 Crunchbang++ 2024-04-11 22:08:12 +01:00
zenobit df5877bd7d 📦 Chimera Linux 2024-04-11 22:08:12 +01:00
zenobit eb5fe7aedc 📦 Big Linux Thanks to @ruscher
Signed-off-by: zenobit <zenobit@disroot.org>
2024-04-11 22:08:12 +01:00
zenobit 0858f31701 📦 bazzite 2024-04-11 22:08:12 +01:00
zen0bit 2fb13f64c9 gentoo and kali disc_size 32GB 2024-04-11 22:08:12 +01:00
zenobit 3843388258 📦 Athena OS 2024-04-11 22:08:12 +01:00
zenobit a2d2e570ea 📦 Artix Linux 2024-04-11 22:08:12 +01:00
zenobit 51f17bb5ef docs: add more nixos info (#171)
author: egasimus <adam@hack.bg>
2024-04-11 22:08:12 +01:00
David S. Brown 68e23b41a7 Update README.md
The instructions for git clone is missing one step: sudo make install. This required me to examine the makefile targets and figure it out for myself. Not so bad for me, but others may be confused about what to do.
2024-04-11 22:08:12 +01:00
Chase Covello 26ceeed84b Fix USB input devices after macOS Sonoma update
A recent macOS Sonoma update included a change to the handling of USB controllers that made the virtual keyboard and mouse inoperative. Changing the USB controller from ehci to xhci fixes it. This change also works for Big Sur and later, so the USB controller is set to xhci for Big Sur through Sonoma.
2024-04-11 22:08:12 +01:00
Francesco Frassinelli 7ff84160ec Add socat to Fedora dependencies 2024-04-11 22:08:12 +01:00
bubbow b12ac6c2a4 Correct aur install command 2024-04-11 22:08:12 +01:00
zen0bit 3c221ebdf1 Revert "quickemu default disk size increse"
This reverts commit 48313a94ab56aa0d9272c021de97bbc7e128bb60.
2024-04-11 22:08:12 +01:00
guyosi 6247838abb quickemu default disk size increse
this increases the default disk size from 16 to 32, fixing issues #738  and #944
2024-04-11 22:08:12 +01:00
gmt4 5d497ed2a0 quickemu: Support $disk_format var for $disk_img
This adds disk_format=${disk_format:-qcow2} variable that defaults to
qcow2 format, so the vm.conf files can use $disk_format to specify the
format of the $disk_img when this is different from the default qcow2.
2024-04-11 22:08:12 +01:00
Lorenzo Bettini 41fe0093c8 Fixed small typo in quickget
Nothing crucial, just a small English fix_
"this arguments" -> "these arguments"
2024-04-11 22:08:12 +01:00
Balazs Kiss ed8d613b8e Add the missing keyboard_layout 2024-04-11 22:08:12 +01:00
Liam 558c7245df Add GNOME OS 2024-04-11 22:08:12 +01:00
stone-w4tch3r f0b4d63412 small help improvement 2024-04-11 22:08:12 +01:00
Liam 98e44bbaa8 Extract the first numerical output from free --giga 2024-04-11 22:08:12 +01:00
Liam b3802a356e Add warning when quickemu does not support smartcard
Co-authored-by: Phil Clifford <philclifford@users.noreply.github.com>
2024-04-11 22:08:12 +01:00
Liam 6216adf6a8 Check whether smartcard is supported 2024-04-11 22:08:12 +01:00
Liam c9df8f3b32 Implement download-iso 2024-04-11 22:08:12 +01:00
zen0bit fb9298448e Show choosed release if windows language isn't supported 2024-04-11 22:08:12 +01:00
Liam 3e22c2b3de Add support for windows languages & windows server
* Add windows languages, many bugfixes
Entering a release, edition, or OS with only part of a valid one will now throw an error, rather than attempting to download
	i.e. $quickget windows 1 > "ERROR! Windows 1 is not a supported release", rather than attempting to download a nonexistent ISO

* Replace "languages" with "editions" to improve consistency

* Remove unnecessary code, hardcode windows editions to not waste time

* Add windows server, LTSC

* Windows server requires IDE drive

* Update Windows Guests section in README.md

* Improve support for windows server

Add back the language array, change stylization of languages in list
2024-04-11 22:08:12 +01:00
Liam 194ec452be Fix wget2
* Fix wget2

* Improve wget2 check

* Use wget2 whenever available

* Use curl instead of wget in order to check where URLs redirect
2024-04-11 22:08:12 +01:00
Liam df57ed1a68 Implement download_iso for Windows & macOS 2024-04-11 22:08:12 +01:00
Liam e43d291b37 Add Zorin OS 17 2024-04-11 22:08:12 +01:00
Liam 8ab2590e5b inbuilt macOS downloading
* Fix quickget show-iso-url and test-iso-url creating unnecessary directory

* Beautify output, add show-iso-url and test-iso-url for Windows (fully) and macOS (sorta)

* (NON-FUNCTIONAL) macrecovery shell script.

* Semi-functional (although incomplete) macrecovery shell script
Rough draft. To be completed, cleaned up and simplified (very much so)
hoping to merge into quickemu & replace the python macrecovery dependency.

* macrecovery shell script now successfully downloads the image. TODO: Verification

* Merged macrecovery functions into quickget. Chunkcheck (C) to replace macrecovery's image verification
Chunkcheck written by MCJack123: https://gist.github.com/MCJack123/943eaca762730ca4b7ae460b731b68e7

* Replace C chunkcheck binary with the Python equivalent. Re-add python to dependencies.

* force macOS guests to usually boot with core counts which are powers of 2; fix #865

* Add support for macOS Sonoma

* Fix issue where script would be unable to find chunkcheck if installed system-wide

* Update README verbiage

* Add headers to web_get function; macOS can now be downloaded via aria2; clean up code & output

* Add support for macOS Sonoma

* Fix use of wrong operator (>) which touches a file

* Small correction to README

* macOS switched from wget to default downloader (aria2/wget)

* Replace wget with cURL for downloading macOS chunklist file

* Fix variable naming in generate_id function
2024-04-11 22:08:12 +01:00
zen0bit d680eecbdc Revert "add disk health check"
This reverts commit 0e4fc7e79a.
2024-04-11 22:08:12 +01:00
Alex Genovese 59865c894e add disk health check 2024-04-11 22:08:12 +01:00
Doc Norberg 286ac1bcfe Add options to directly specify VM width and height on cmdline or config 2024-04-11 22:08:12 +01:00
Ruscher 35a6588825 Add BigLinux 2024-04-11 22:08:12 +01:00
Martin Wimpress 0c8e1a5205 chore: white space clean up 2023-12-10 23:10:16 +00:00
Martin Wimpress 81856322a5 feat: add NixOS 23.11 2023-12-10 23:10:16 +00:00
Liam 132ae1c81c Remove unsupported (and unobtainable) Fedora releases 2023-12-10 22:56:27 +00:00
Liam 841807afe6 Fix show-iso-url and test-iso-url creating unnecessary directories 2023-12-10 22:56:27 +00:00
Phil Clifford 962ef63ad3 chore: docs regenerated
NB includes small typo correction and also workaround
because list-csv has stopped outputting Ubuntu Server records for some reason
2023-12-10 22:55:28 +00:00
zenobit 708070739c Add EasyOS 2023-12-10 22:50:44 +00:00
Phil Clifford c58e5c5b98 List ubuntu-server releases and hide eol releases 2023-12-10 22:37:47 +00:00
David A Brown d958ae1dbe Redo of quickemu indentation - no code changes. 2023-11-25 16:13:04 +00:00
Alex Genovese a34221e63e add qqX to the main quickemu readme (hopefully) 2023-11-25 16:11:46 +00:00
Jai A P 961a8a1820
Fix -s/-t flags still downloading isos (#846)
* Fix -s/-t flags

* Update quickget

* Typo
2023-11-16 23:36:59 +00:00
Jai A P 7a724e43f3
Added automatic version fetching for ubuntu (#821)
* Automatic fetching of ubuntu versions

* Fix displaying ubuntu versions

* Update quickget

* Updated quickget

 - Remove obsolete daily-legacy
 - Add error if desktop amd64 build do not exist as in current status

* Allow 'daily' as a valid release for ubuntu family

* Better logic to fetch Ubuntu-server & failsafe
2023-11-16 23:35:44 +00:00
zenobit b284e411a3 quickget: void: change to repo-default 2023-11-16 23:31:22 +00:00
Phil Clifford 7bee31c666 fix: make revised batocera actually find the latest file 2023-11-12 17:22:05 +00:00
Phil Clifford b05dd50aea added new quickget features to README and man page 2023-11-12 17:21:34 +00:00
Phil Clifford acca8cc224 chore: regenerated docs
includes revised Windows changes and aligned usage() output
2023-11-12 17:21:34 +00:00
Phil Clifford b232bbfcfe Align usage() to edited README.md 2023-11-12 17:21:34 +00:00
Jai-JAP f217e63189 Add Fedora 39 2023-11-12 17:19:19 +00:00
Martin Wimpress d65d19211b
refactor: use consistent debian/changelog creation for release workflow 2023-11-10 16:31:59 +00:00
Martin Wimpress 99e7677665
refactor: rework publish ppa workflow 2023-11-10 16:11:26 +00:00
Martin Wimpress 66757f4b57
fix: correct pkgdir
f
2023-11-10 15:11:45 +00:00
Martin Wimpress 6ea88b058d
fix: correct publish-ppa-package version 2023-11-10 14:55:02 +00:00
Martin Wimpress 8d4d82ccb5
feat(ci): add dependabot 2023-11-10 14:53:25 +00:00
48 changed files with 7638 additions and 6088 deletions

1
.envrc Normal file
View File

@ -0,0 +1 @@
use flake

4
.github/FUNDING.yml vendored
View File

@ -1,5 +1,3 @@
# These are supported funding model platforms
github: flexiondotorg
patreon: wimpysworld
custom: https://wimpysworld.io/tip
github: [flexiondotorg, philclifford, lj3954]

51
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,51 @@
---
name: Bug report
about: Create a report to help us improve
title: 'bug: description of the bug you encountered'
labels: ''
assignees: ''
---
**I confirm this bug has not already been reported**
- [ ] I have searched the issues and this bug has not been reported previously
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behaviour:
1. Run `quickemu` with arguments '...'
2. See error
**Expected behaviour**
A clear and concise description of what you expected to happen.
**Quickemu output**
Run `quickemu` or `quickemu` and include the output of the failure below:
<details>
<summary>Quickemu output</summary>
```text
quickemu/quickget output here
```
</details>
**System information**
Run `quickreport` and include the output here; if you can't run `quickreport`,
please provide the output of the following:
<details>
<summary>Quickreport output</summary>
```text
quickreport output here
```
</details>
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.

View File

@ -0,0 +1,23 @@
---
name: Feature request
about: Suggest an idea for this project
title: 'feat: describe the feature you are requesting'
labels: ''
assignees: ''
---
**I confirm this feature has not been previously requested**
- [ ] I have searched the issues and this feature has not previously been requested
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

BIN
.github/apple.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

7
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,7 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every week
interval: "weekly"

View File

@ -1,24 +0,0 @@
#### Expected behaviour
Describe the your expected behaviour.
#### Actual behaviour
Describe the actual behaviour.
#### Steps to reproduce the behaviour
Outline the step to reproduce the issue you've encountered.
#### Quickemu output
Run `quickemu` or `quickget` and paste the output here.
#### Linux Distribution & Kernel
Run the following and paste the output.
```bash
lsb_release --all
uname -a
```

26
.github/pull_request_template.md vendored Normal file
View File

@ -0,0 +1,26 @@
# Description
Please include a summary of the changes along with any relevant motivation and context.
<!-- Close any related issues. Delete if not relevant -->
- Closes #
- Fixes #
- Resolves #
## Type of change
<!-- Delete any that are not relevant -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Packaging (updates the packaging)
- [ ] Documentation (updates the documentation)
# Checklist:
- [ ] I have performed a self-review of my code
- [ ] I have tested my code in common scenarios and confirmed there are no regressions
- [ ] I have added comments to my code, particularly in hard-to-understand sections
- [ ] I have made corresponding changes to the documentation (*remove if no documentation changes were required*)

BIN
.github/screenshot.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

21
.github/workflows/flake-checker.yml vendored Normal file
View File

@ -0,0 +1,21 @@
name: Flake ❄️ Checker ✅
on:
push:
branches:
- master
schedule:
- cron: '42 0 * * 6'
workflow_dispatch:
jobs:
flake-checker:
name: Flake Checker
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: DeterminateSystems/nix-installer-action@v19
- uses: DeterminateSystems/magic-nix-cache-action@v9
- uses: DeterminateSystems/flake-checker-action@v12

20
.github/workflows/flake-updater.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: Flake ❄️ Lock 🔒️ Updater ✨
on:
schedule:
- cron: '37 13 14,28 * *'
workflow_dispatch:
jobs:
lock-updater:
name: Flake Lock Updater
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: DeterminateSystems/nix-installer-action@v19
- uses: DeterminateSystems/magic-nix-cache-action@v9
- uses: DeterminateSystems/update-flake-lock@v27
with:
pr-title: "chore: update flake.lock"

27
.github/workflows/lint-pr.yml vendored Normal file
View File

@ -0,0 +1,27 @@
name: "Lint Pull Request 🐙"
on:
pull_request_target:
types:
- opened
- edited
- synchronize
permissions:
pull-requests: read
jobs:
main:
name: Validate pull request title
runs-on: ubuntu-22.04
steps:
- uses: amannn/action-semantic-pull-request@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# If the PR only contains a single commit, the action will validate that
# it matches the configured pattern.
validateSingleCommit: true
# Related to `validateSingleCommit` you can opt-in to validate that the PR
# title matches a single commit to avoid confusion.
validateSingleCommitMatchesPrTitle: true

18
.github/workflows/lint-shellcheck.yml vendored Normal file
View File

@ -0,0 +1,18 @@
name: "Lint Shellcheck 🐚"
on:
pull_request:
branches: '**'
workflow_dispatch:
jobs:
shellcheck:
name: Shellcheck
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v5
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
with:
format: gcc
severity: warning

View File

@ -1,19 +0,0 @@
name: Publish PPA 📦️
on:
workflow_dispatch:
jobs:
publish-ppa:
name: Publish PPA
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: yuezk/publish-ppa-package@v1
with:
repository: 'ppa:flexiondotorg/quickemu'
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
gpg_passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
pkgdir: '${{ github.workspace }}/quickemu/'

View File

@ -1,15 +1,43 @@
name: Build 🏗️ and Publish 📦
name: Publish Release 🏷
on:
push:
tags: ['*']
tags:
- "v?[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
inputs:
tag:
description: "The existing tag to publish"
type: "string"
required: true
jobs:
create-release:
name: Create Release
version-check:
name: "Check versions ⚖️"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: "Compare App and Git versions 🟰"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
APP_VERSION=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2)
GIT_VERSION=$(git describe --tags | cut -d'-' -f1)
echo "App version: ${REL_VERSION}"
echo "Git version: ${GIT_VERSION}"
if [ "${APP_VERSION}" != "${GIT_VERSION}" ]; then
echo "ERROR! Version mismatch.";
exit 1
fi
draft-release:
needs: [version-check]
name: "Draft Release 📥️"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v5
- name: Create release ${{ github.ref }} as a draft
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@ -17,11 +45,11 @@ jobs:
gh release create "${{ github.ref }}" --draft --generate-notes
build-release:
needs: [create-release]
name: Build Release
needs: [draft-release]
name: "Build Release 👨‍🔧"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Build and Upload .deb
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@ -29,16 +57,17 @@ jobs:
sudo apt-get -y update
sudo apt-get -y install debhelper devscripts
REL_VER=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2)
dch -v "${REL_VER}-1" --distribution=unstable "New upstream release."
rm debian/changelog
dch --package quickemu --newversion="${REL_VER}-1" --distribution=unstable "New upstream release." --create
dpkg-buildpackage --build=binary --no-check-builddeps --compression=gzip
gh release upload "${{ github.ref }}" "../quickemu_${REL_VER}-1_all.deb" --clobber
publish-release:
needs: [build-release]
name: Publish Release
name: "Publish Release 📤️"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Publish release ${{ github.ref }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@ -47,3 +76,54 @@ jobs:
exit 1
fi
gh release edit "${{ github.ref }}" --draft=false
publish-flakehub:
needs: [version-check]
name: "Publish FlakeHub ❄️"
runs-on: "ubuntu-22.04"
permissions:
id-token: "write"
contents: "read"
steps:
- uses: "actions/checkout@v5"
with:
ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
- uses: "DeterminateSystems/nix-installer-action@main"
- uses: "DeterminateSystems/magic-nix-cache-action@main"
- uses: "DeterminateSystems/flakehub-push@main"
with:
visibility: "public"
name: "quickemu-project/quickemu"
tag: "${{ inputs.tag }}"
publish-ppa:
needs: [version-check]
name: "Publish PPA 📦️"
runs-on: ubuntu-22.04
steps:
- name: "Checkout 🥡"
uses: actions/checkout@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "Import gpg key 🔑"
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }}
- name: "Install dependencies 💾"
run: |
sudo apt-get -y update
sudo apt-get -y install debhelper-compat distro-info dput devscripts
- name: "Upload to PPA ⤴️"
env:
DEBEMAIL: ${{ secrets.DEBEMAIL }}
DEBFULLNAME: ${{ secrets.DEBFULLNAME }}
run: |
REL_VER=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2)
STAMP=$(date +%y%j.%H%M)
for CODENAME in $(distro-info --supported); do
rm debian/changelog
dch --package quickemu --newversion="${REL_VER}-1~${CODENAME}${STAMP}" --distribution=${CODENAME} "New upstream release." --create
dpkg-buildpackage -d -S -sa
dput ppa:flexiondotorg/quickemu ../quickemu_${REL_VER}-1~${CODENAME}${STAMP}_source.changes
done

View File

@ -0,0 +1,82 @@
name: Test build quickemu 🚧
on:
pull_request:
branches:
- master
paths:
- quickemu
- quickget
- debian/**
- flake.nix
- package.nix
push:
branches:
- master
paths:
- quickemu
- quickget
- debian/**
- flake.nix
- package.nix
workflow_dispatch:
# TODO: arm64 runner
# https://github.blog/changelog/2024-06-03-actions-arm-based-linux-and-windows-runners-are-now-in-public-beta/
jobs:
test-deb-build:
runs-on: ubuntu-22.04
steps:
- name: "Checkout 🥡"
uses: actions/checkout@v5
- name: "Build & Test .deb 🍥"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
sudo apt-get -y update
sudo apt-get -y install debhelper devscripts
REL_VER=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2)
rm debian/changelog
dch --package quickemu --newversion="${REL_VER}-1" --distribution=unstable "New upstream release." --create
dpkg-buildpackage --build=binary --no-check-builddeps --compression=gzip
sudo apt-get -y install ../quickemu_${REL_VER}-1_all.deb
quickemu --help
quickget --help
test-nix-build:
runs-on: ubuntu-22.04
permissions:
id-token: "write"
contents: "read"
steps:
- name: "Checkout 🥡"
uses: "actions/checkout@v5"
- name: "Install Nix ❄️"
uses: "DeterminateSystems/nix-installer-action@v19"
- name: "Enable Magic Nix Cache 🪄"
uses: "DeterminateSystems/magic-nix-cache-action@v9"
- name: "Build & Test .nix ❄️"
run: |
nix build .#quickemu
tree ./result
./result/bin/quickemu --help
./result/bin/quickget --help
./result/bin/quickreport
# Text a VM if the Nix Installer successfully enabled KVM
if [ $DETERMINATE_NIX_KVM -eq 1 ]; then
./result/bin/quickget alpine v3.20
./result/bin/quickemu --vm alpine-v3.20.conf --display none
sleep 5
if pgrep -F ./alpine-v3.20/alpine-v3.20.pid; then
echo "Test VM is running"
else
echo "Test VM is not running"
exit 1
fi
# Test a few more quickemu commands to clean up
./result/bin/quickemu --vm alpine-v3.20.conf --kill
./result/bin/quickemu --vm alpine-v3.20.conf --delete-disk
./result/bin/quickemu --vm alpine-v3.20.conf --delete-vm
fi

52
.github/workflows/test-quickget.yml vendored Normal file
View File

@ -0,0 +1,52 @@
name: "Test quickget 🧪"
on:
workflow_dispatch:
push:
branches:
- master
paths:
- quickget
pull_request:
branches:
- '**'
paths:
- quickget
jobs:
quickget-tests:
name: "Run quickget tests 👟"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v5
- name: "Install dependencies 📦️"
run: |
sudo apt-get -y update
sudo apt-get -y install curl qemu-utils
- name: "List OS variants 📃"
run: |
mkdir -p results
./quickget --list | tail -n +2 | tee results/list.txt
- name: "Check OS downloads 💿️"
run: |
mkdir -p results
./quickget --check | tee results/check.txt
- name: "Display results 📊"
run: |
WINDOWS=$(grep -c "windows-" results/check.txt)
FAILED=$(grep -c ^FAIL results/check.txt)
SKIPPED=$(grep -c ^SKIP results/check.txt)
PASSED=$(grep -c ^PASS results/check.txt)
CHECKED=$((WINDOWS + FAILED + SKIPPED + PASSED))
echo -e "\nResults:"
echo -e "- CHECKED:\t${CHECKED}"
echo -e "- PASSED:\t${PASSED}"
echo -e "- SKIPPED:\t${SKIPPED}\t(of which ${WINDOWS} are Windows)"
echo -e "- FAILED:\t${FAILED}\n"
grep ^FAIL results/check.txt | tee results/failed.txt
VARIATIONS=$(wc -l results/list.txt | cut -d' ' -f 1)
DOWNLOADS=$(wc -l results/check.txt | cut -d' ' -f 1)
echo
echo "Compare OS variations with downloads:"
echo -e "- Variations:\t${VARIATIONS}"
echo -e "- Downloads:\t${DOWNLOADS}"

6
.gitignore vendored
View File

@ -2,10 +2,15 @@
*.conf
*.dmg
*.fd
*.fixed
*.img
*.iso
*.ISO
*.lock
!flake.lock
*.log
*.markdownlint.jsonc
*.markdownlint.yaml
*.msi
*.part
*.permall
@ -16,3 +21,4 @@
*.sock
*.xml
*.zs-old
.direnv/

2
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "build-docs"]
path = build-docs
url = git@github.com:philclifford/quickemu-docs.git
url = https://github.com/philclifford/quickemu-docs.git

128
CODE_OF_CONDUCT.md Normal file
View File

@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behaviour that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behaviour include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behaviour and will take appropriate and fair corrective action in
response to any behaviour that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behaviour may be
reported to the community leaders responsible for enforcement at
#quickemu channel on Discord.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behaviour deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behaviour was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behaviour. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behaviour.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behaviour, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

11
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,11 @@
# Contributing
We welcome contributions to Quickemu.
- Help other Quickemu users by answering questions in the [Quickemu Discussions](https://github.com/quickemu-project/quickemu/discussions) 🛟
- Improve the documentation in [this README](https://github.com/quickemu-project/quickemu/edit/master/README.md) and the [Quickemu Wiki](https://github.com/quickemu-project/quickemu/wiki) 📖
- File bug reports and feature requests in the [Quickemu Issues](https://github.com/quickemu-project/quickemu/issues) 📁
- Submit [Quickemu Pull requests](https://github.com/quickemu-project/quickemu/pulls) to fix bugs 🐞 or add new features ✨
- Follow our [guide to adding a new OS to quickget](https://github.com/quickemu-project/quickemu/wiki/06-Advanced-quickget-features#adding-a-new-os-to-quickget)
- Commit messages must [conform to the Conventional Commits specification](https://www.conventionalcommits.org/).
- [Sponsor the project](https://github.com/sponsors/flexiondotorg) 💖

47
Formula/quickemu.rb Normal file
View File

@ -0,0 +1,47 @@
class Quickemu < Formula
desc "Quickly create and run optimised Windows, macOS and Linux virtual machines"
homepage "https://github.com/quickemu-project/quickemu"
livecheck do
url :stable
end
stable do
latest_release = JSON.parse(Utils.safe_popen_read("curl", "-s", "https://api.github.com/repos/quickemu-project/quickemu/releases/latest"))
version latest_release["tag_name"]
url "https://api.github.com/repos/quickemu-project/quickemu/tarball/#{latest_release["tag_name"]}"
end
head "https://github.com/quickemu-project/quickemu.git"
license "MIT"
depends_on "bash"
depends_on "cdrtools"
depends_on "coreutils"
depends_on "jq"
depends_on "python3"
depends_on "qemu"
depends_on "samba"
depends_on "socat"
depends_on "swtpm"
depends_on "usbutils"
depends_on "zsync"
def install
bin.install "quickemu"
bin.install "quickget"
end
test do
# `test do` will create, run in and delete a temporary directory.
#
# This test will fail and we won't accept that! For Homebrew/homebrew-core
# this will need to be a test that verifies the functionality of the
# software. Run the test with `brew test quickemu`. Options passed
# to `brew install` such as `--HEAD` also need to be provided to `brew test`.
#
# The installed folder is not in the path, so use the entire path to any
# executables being tested: `system bin/"program", "do", "something"`.
system "false"
end
end

985
README.md

File diff suppressed because it is too large Load Diff

18
SECURITY.md Normal file
View File

@ -0,0 +1,18 @@
# Security Policy
## Supported Versions
Here are the versions of Quickemu currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| 4.9.x | :white_check_mark: |
| < 4.8 | :x: |
## Reporting a Vulnerability
If you discover a vulnerability in Quickemu then [file an issue](https://github.com/quickemu-project/quickemu/issues/new) and click *Report a vulnerability*.
- Quickemu is a spare-time hobby project.
- We do not have SLAs for responding to security issues.
- It is a best-efforts basis.

@ -1 +1 @@
Subproject commit 15b126e5b583a02074da11c189c8bc9b9247c8a0
Subproject commit 3125ddc21a91440cd6f1f70aa40081d760c10a4e

66
chunkcheck Executable file
View File

@ -0,0 +1,66 @@
#!/usr/bin/env python3
from pathlib import Path
import struct
import hashlib
import argparse
v1_prod_pubkey = 0xC3E748CAD9CD384329E10E25A91E43E1A762FF529ADE578C935BDDF9B13F2179D4855E6FC89E9E29CA12517D17DFA1EDCE0BEBF0EA7B461FFE61D94E2BDF72C196F89ACD3536B644064014DAE25A15DB6BB0852ECBD120916318D1CCDEA3C84C92ED743FC176D0BACA920D3FCF3158AFF731F88CE0623182A8ED67E650515F75745909F07D415F55FC15A35654D118C55A462D37A3ACDA08612F3F3F6571761EFCCBCC299AEE99B3A4FD6212CCFFF5EF37A2C334E871191F7E1C31960E010A54E86FA3F62E6D6905E1CD57732410A3EB0C6B4DEFDABE9F59BF1618758C751CD56CEF851D1C0EAA1C558E37AC108DA9089863D20E2E7E4BF475EC66FE6B3EFDCF
# v2_prod_pubkey = 0xCB45C5E53217D4499FB80B2D96AA4F964EB551F1DA4EBFA4F5E23F87BFE82FC113590E536757F329D6EAD1F267771EE342F5A5E61514DD3D3383187E663929D577D94648F262EBA1157E152DB5273D10AE3A6A058CB9CD64D01267DAC82ED3B7BC1631D078C911414129CDAAA0FFB0A8E2A7ADD6F32FB09A7E98D259BFF6ED10808D1BDA58CAF7355DFF1A085A18B11657D2617447BF657140D599364E5AC8E626276AC03BC2417831D9E61B25154AFE9F2D8271E9CE22D2783803083A5A7A575774688721097DC5E4B32D118CF6317A7083BA15BA608430A8C8C6B7DA2D932D81F571603A9363AC0197AB670242D9C9180D97A10900F11FE3D9246CF14F0883
# v2_dev_pubkey = 0xB372CEC9E05E71FB3FAA08C34E3256FB312EA821638A243EF8A5DEA46FCDA33F00F88FC2933FB276D37B914F89BAD5B5D75771E342265B771995AE8F43B4DFF3F21A877FE777A8B419587C8718D36204FA1922A575AD5207D5D6B8C10F84DDCA661B731E7E7601D64D4A894F487FE1AA1DDC2A1697A3553B1DD85D5750DF2AA9D988E83C4C70BBBE4747219F9B92B199FECB16091896EBB441606DEC20F446249D5568BB51FC87BA7F85E6295FBE811B0A314408CD31921C360608A0FF7F87BD733560FE1C96E472834CAB6BE016C35727754273125089BE043FD3B26F0B2DE141E05990CE922F1702DA0A2F4E9F8760D0FA712DDB9928E0CDAC14501ED5E2C3
ChunkListHeader = struct.Struct('<4sIBBBxQQQ')
assert ChunkListHeader.size == 0x24
Chunk = struct.Struct('<I32s')
assert Chunk.size == 0x24
def parse_chunklist(path):
with open(path, 'rb') as f:
hash_ctx = hashlib.sha256()
data = f.read(ChunkListHeader.size)
hash_ctx.update(data)
magic, header_size, file_version, chunk_method, signature_method, chunk_count, chunk_offset, signature_offset = ChunkListHeader.unpack(data)
assert magic == b'CNKL'
assert header_size == ChunkListHeader.size
assert file_version == 1
assert chunk_method == 1
assert signature_method in [1, 2]
assert chunk_count > 0
assert chunk_offset == 0x24
assert signature_offset == chunk_offset + Chunk.size * chunk_count
for i in range(chunk_count):
data = f.read(Chunk.size)
hash_ctx.update(data)
chunk_size, chunk_sha256 = Chunk.unpack(data)
yield chunk_size, chunk_sha256
digest = hash_ctx.digest()
if signature_method == 1:
data = f.read(256)
assert len(data) == 256
signature = int.from_bytes(data, 'little')
plaintext = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff003031300d0609608648016503040201050004200000000000000000000000000000000000000000000000000000000000000000 | int.from_bytes(digest, 'big')
assert pow(signature, 0x10001, v1_prod_pubkey) == plaintext
elif signature_method == 2:
data = f.read(32)
assert data == digest
else:
raise NotImplementedError
assert f.read(1) == b''
def check_chunklist(path, chunklist_path):
with open(path, 'rb') as f:
for chunk_size, chunk_sha256 in parse_chunklist(chunklist_path):
chunk = f.read(chunk_size)
assert len(chunk) == chunk_size
assert hashlib.sha256(chunk).digest() == chunk_sha256
assert f.read(1) == b''
def main():
parser = argparse.ArgumentParser()
parser.add_argument('vmdir', type=Path)
args = parser.parse_args()
vmdir = args.vmdir
check_chunklist(vmdir / 'RecoveryImage.dmg', vmdir / 'RecoveryImage.chunklist')
if __name__ == "__main__":
main()

201
debian/changelog vendored
View File

@ -1,204 +1,5 @@
quickemu (4.9.1-1) unstable; urgency=medium
quickemu (4.9.6-1) unstable; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Fri, 10 Nov 2023 14:49:08 +0000
quickemu (4.8-1~mantic1.0) mantic; urgency=medium
* New upstream release.
+ https://github.com/quickemu-project/quickemu/releases/tag/4.8
-- Martin Wimpress <code@wimpress.io> Wed, 14 Jun 2023 12:40:56 +0100
quickemu (4.7-1~focal1.0) focal; urgency=medium
* New upstream release.
+ https://github.com/quickemu-project/quickemu/releases/tag/4.7
-- Martin Wimpress <code@wimpress.io> Wed, 26 Apr 2023 12:00:35 +0100
quickemu (4.6-1~focal1.0) focal; urgency=medium
* New upstream release.
+ https://github.com/quickemu-project/quickemu/releases/tag/4.6
-- Martin Wimpress <code@wimpress.io> Sat, 04 Feb 2023 00:32:47 +0000
quickemu (4.5-1~focal1.0) focal; urgency=medium
* New upstream release.
+ https://github.com/quickemu-project/quickemu/releases/tag/4.5
-- Martin Wimpress <code@wimpress.io> Sun, 11 Dec 2022 20:54:52 +0000
quickemu (4.4-1~focal1.0) focal; urgency=medium
* New upstream release.
+ https://github.com/quickemu-project/quickemu/releases/tag/4.4
-- Martin Wimpress <code@wimpress.io> Fri, 21 Oct 2022 08:52:12 +0100
quickemu (4.3-1~focal1.0) focal; urgency=medium
* New upstream release.
+ https://github.com/quickemu-project/quickemu/releases/tag/4.3
-- Martin Wimpress <code@wimpress.io> Thu, 22 Sep 2022 09:22:00 +0100
quickemu (4.2-1~focal1.0) focal; urgency=medium
* New upstream release.
+ https://github.com/quickemu-project/quickemu/releases/tag/4.2
-- Martin Wimpress <code@wimpress.io> Wed, 21 Sep 2022 23:34:24 +0100
quickemu (4.1-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Sat, 20 Aug 2022 00:03:33 +0100
quickemu (4.0-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Mon, 01 Aug 2022 11:24:48 +0100
quickemu (3.16-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Fri, 29 Jul 2022 11:50:32 +0100
quickemu (3.15-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Fri, 22 Apr 2022 09:55:13 +0100
quickemu (3.14-1~focal1.0) focal; urgency=medium
* New Upstream release.
-- Martin Wimpress <code@wimpress.io> Fri, 11 Mar 2022 16:20:05 +0000
quickemu (3.13-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Thu, 24 Feb 2022 23:00:05 +0000
quickemu (3.12-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Tue, 22 Feb 2022 12:13:16 +0000
quickemu (3.11-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <martin.wimpress@ubuntu.com> Wed, 08 Dec 2021 11:01:04 +0000
quickemu (2.3.4-1~jammy1.0) jammy; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Mon, 06 Dec 2021 11:53:50 +0000
quickemu (2.3.3-1~jammy1.0) jammy; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Fri, 03 Dec 2021 11:38:10 +0000
quickemu (2.3.2-1~jammy1.0) jammy; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Sun, 14 Nov 2021 10:25:06 +0000
quickemu (2.3.1-1~jammy1.0) jammy; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Mon, 08 Nov 2021 00:54:38 +0000
quickemu (2.3.0-1~focal1.0) focal; urgency=medium
* New upstream release
-- Martin Wimpress <code@wimpress.io> Fri, 29 Oct 2021 10:03:58 +0100
quickemu (2.2.9-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Thu, 28 Oct 2021 22:46:37 +0100
quickemu (2.2.8-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Thu, 28 Oct 2021 16:13:20 +0100
quickemu (2.2.7-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Wed, 27 Oct 2021 12:57:59 +0100
quickemu (2.2.6-1~jammy1.0) jammy; urgency=medium
* New upstream release
-- Martin Wimpress <code@wimpress.io> Thu, 21 Oct 2021 10:57:35 +0100
quickemu (2.2.5-1~jammy1.0) jammy; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Sat, 16 Oct 2021 11:35:41 +0100
quickemu (2.2.4-1~impish1.0) impish; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Fri, 15 Oct 2021 12:50:05 +0100
quickemu (2.2.3-1~impish1.0) impish; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Fri, 08 Oct 2021 15:06:50 +0100
quickemu (2.2.2-1~impish1.0) impish; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Fri, 08 Oct 2021 02:39:00 +0100
quickemu (2.2.1-1~impish1.0) impish; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Thu, 07 Oct 2021 16:23:33 +0100
quickemu (2.2.0-1~impish1.0) impish; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Wed, 06 Oct 2021 11:08:33 +0100
quickemu (2.1.0-1~focal1.0) focal; urgency=medium
* New upstream release.
-- Martin Wimpress <code@wimpress.io> Tue, 05 Oct 2021 17:12:48 +0100
quickemu (1.0.0-1~focal1.2) focal; urgency=medium
* Initial release.
-- Martin Wimpress <code@wimpress.io> Mon, 06 Sep 2021 23:11:44 +0100

12
debian/control vendored
View File

@ -5,26 +5,30 @@ Maintainer: Martin Wimpress <code@wimpress.io>
Build-Depends:
debhelper-compat (= 12),
Standards-Version: 4.5.1
Homepage: https://github.com/wimpysworld/quickemu
Vcs-Browser: https://github.com/wimpysworld/quickemu
Vcs-Git: https://github.com/wimpysworld/quickemu.git
Homepage: https://github.com/quickemu-project/quickemu
Vcs-Browser: https://github.com/quickemu-project/quickemu
Vcs-Git: https://github.com/quickemu-project/quickemu.git
Rules-Requires-Root: no
Package: quickemu
Architecture: all
Depends:
coreutils,
curl,
genisoimage,
jq,
mesa-utils,
pciutils,
procps,
python3-minimal,
qemu-system (>= 6.0),
base-files (<< 13~) | qemu-system-modules-spice,
socat,
spice-client-gtk,
swtpm,
usbutils,
util-linux,
wget,
uuid-runtime,
x11-xserver-utils,
xdg-user-dirs,
zsync,

6
debian/copyright vendored
View File

@ -1,10 +1,10 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: quickemu
Upstream-Contact: Martin Wimpress <code@wimpress.io>
Source: https://github.com/wimpysworld/quickemu
Source: https://github.com/quickemu-project/quickemu
Files: *
Copyright: 2020-2021 Martin Wimpress <code@wimpress.io>
Copyright: 2020-2024 Martin Wimpress <code@wimpress.io>
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@ -26,7 +26,7 @@ License: MIT
# If you want to use GPL v2 or later for the /debian/* files use
# the following clauses, or change it to suit. Delete these two lines
Files: debian/*
Copyright: 2021 Martin Wimpress <code@wimpress.io>
Copyright: 2021 - 2024 Martin Wimpress <code@wimpress.io>
License: GPL-2+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

4
debian/install vendored
View File

@ -1,4 +1,4 @@
macrecovery usr/bin
chunkcheck usr/bin
quickemu usr/bin
quickget usr/bin
windowskey usr/bin
quickreport usr/bin

5
debian/watch vendored
View File

@ -1,5 +0,0 @@
version=4
opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%quickemu-$1.tar.gz%" \
https://github.com/wimpysworld/quickemu/tags \
(?:.*?/)?v?(\d[\d.]*)\.tar\.gz

50
devshell.nix Normal file
View File

@ -0,0 +1,50 @@
{ lib,
mkShell,
pkgs,
stdenv,
}:
mkShell {
packages = with pkgs; ([
cdrtools
curl
gawk
gnugrep
gnused
jq
pciutils
procps
python3
qemu_full
samba
socat
spice-gtk
swtpm
unzip
util-linux
xorg.xrandr
zsync
OVMF
OVMFFull
] ++ lib.optionals stdenv.isLinux [
glxinfo
usbutils
xdg-user-dirs
]);
inputsFrom = with pkgs; [
git
];
shellHook = ''
echo "**********************************************************************"
echo "* 'direnv reload' to update '.direnv/bin/quickemu' for testing *"
echo "**********************************************************************"
sed \
-e '/OVMF_CODE_4M.secboot.fd/s|ovmfs=(|ovmfs=("${pkgs.OVMFFull.firmware}","${pkgs.OVMFFull.variables}" |' \
-e '/OVMF_CODE_4M.fd/s|ovmfs=(|ovmfs=("${pkgs.OVMF.firmware}","${pkgs.OVMF.variables}" |' \
-e '/cp "''${VARS_IN}" "''${VARS_OUT}"/a chmod +w "''${VARS_OUT}"' \
-e 's,\$(command -v smbd),${pkgs.samba}/bin/smbd,' \
quickemu > $PWD/.direnv/bin/quickemu
chmod +x $PWD/.direnv/bin/quickemu
'';
}

View File

@ -9,16 +9,18 @@ datadir := $(datarootdir)
mandir := $(datarootdir)/man
bindir := $(PREFIX)/bin
all: quickget.1 quickemu.1 quickemu_conf.1
all: quickget.1 quickemu.1 quickemu_conf.5
clean:
rm *.1
rm *.1 *.5
install_docs: all
install -d $(DESTDIR)$(mandir)/man1
install -d $(DESTDIR)$(mandir)/man5
install -m 644 quickget.1 $(DESTDIR)$(mandir)/man1
install -m 644 quickemu.1 $(DESTDIR)$(mandir)/man1
install -m 644 quickemu_conf.1 $(DESTDIR)$(mandir)/man1
install -m 644 quickemu_conf.5 $(DESTDIR)$(mandir)/man5
rm -f $(DESTDIR)$(mandir)/man1/quickemu_conf.1
# install -m 644 quickgui.1 $(DESTDIR)$(mandir)/man1
@ -26,17 +28,20 @@ install_bins:
install -d $(DESTDIR)$(bindir)
install -m 755 ../quickget $(DESTDIR)$(bindir)
install -m 755 ../quickemu $(DESTDIR)$(bindir)
install -m 755 ../macrecovery $(DESTDIR)$(bindir)
install -m 755 ../quickreport $(DESTDIR)$(bindir)
install -m 755 ../chunkcheck $(DESTDIR)$(bindir)
install: install_bins install_docs
uninstall::
rm -f $(DESTDIR)$(mandir)/man1/quickget.1
rm -f $(DESTDIR)$(mandir)/man1/quickemu.1
rm -f $(DESTDIR)$(mandir)/man1/quickemu_conf.1
rm -f $(DESTDIR)$(mandir)/man5/quickemu_conf.5
rm -f $(DESTDIR)$(bindir)/quickget
rm -f $(DESTDIR)$(bindir)/quickemu
rm -f $(DESTDIR)$(bindir)/quickreport
rm -f $(DESTDIR)$(bindir)/macrecovery
rm -f $(DESTDIR)$(bindir)/chunkcheck
.PHONY: all

View File

@ -1,8 +1,7 @@
PANDOC ?= pandoc
PANDOC_OPTIONS = -f gfm+definition_lists
MANSECTION ?= 1
.SUFFIXES: .1.md .1 .5.md .5
MANPAGE.md = $(PANDOC) --standalone $(PANDOCFLAGS) --to man
%.$(MANSECTION): %.$(MANSECTION).md
$(MANPAGE.md) $< -o $@
.1.md.1 .5.md.5:
$(PANDOC) --standalone $(PANDOC_OPTIONS) --to man -o $@ $<

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
.\" Automatically generated by Pandoc 3.1.8
.\" Automatically generated by Pandoc 3.6.1
.\"
.TH "QUICKEMU_CONF" "1" "October 24, 2023" "quickemu_conf" "Quickemu Configuration Manual"
.TH "QUICKEMU_CONF" "5" "December 30, 2024" "quickemu_conf" "Quickemu Configuration Manual"
.SH NAME
quickemu_conf - Options and parameters in the quickemu <vm>.conf
quickemu_conf \- Options and parameters in the quickemu <vm>.conf
.SH DESCRIPTION
\f[B]quickemu\f[R] will create and run highly optimised desktop virtual
machines for Linux, macOS and Windows.
@ -50,7 +50,7 @@ serial_telnet_host=\[dq]localhost\[dq]
usb_controller=\[dq]ehci\[dq]
# options: ps2, usb, virtio
keyboard=\[dq]usb\[dq]
keyboard_layout=\[dq]en-us\[dq]
keyboard_layout=\[dq]en\-us\[dq]
# options: ps2, usb, tablet, virtio
mouse=\[dq]tablet\[dq]
.EE
@ -58,16 +58,16 @@ mouse=\[dq]tablet\[dq]
.IP
.EX
guest_os=\[dq]linux\[dq]
disk_img=\[dq]debian-bullseye/disk.qcow2\[dq]
iso=\[dq]debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso\[dq]
disk_img=\[dq]debian\-bullseye/disk.qcow2\[dq]
iso=\[dq]debian\-bullseye/firmware\-11.0.0\-amd64\-DVD\-1.iso\[dq]
.EE
.PP
The default macOS configuration looks like this:
.IP
.EX
guest_os=\[dq]macos\[dq]
img=\[dq]macos-catalina/RecoveryImage.img\[dq]
disk_img=\[dq]macos-catalina/disk.qcow2\[dq]
img=\[dq]macos\-catalina/RecoveryImage.img\[dq]
disk_img=\[dq]macos\-catalina/disk.qcow2\[dq]
macos_release=\[dq]catalina\[dq]
.EE
.IP \[bu] 2
@ -89,9 +89,9 @@ The default Windows 11 configuration looks like this:
.IP
.EX
guest_os=\[dq]windows\[dq]
disk_img=\[dq]windows-11/disk.qcow2\[dq]
iso=\[dq]windows-11/Win11_EnglishInternational_x64.iso\[dq]
fixed_iso=\[dq]windows-11/virtio-win.iso\[dq]
disk_img=\[dq]windows\-11/disk.qcow2\[dq]
iso=\[dq]windows\-11/Win11_EnglishInternational_x64.iso\[dq]
fixed_iso=\[dq]windows\-11/virtio\-win.iso\[dq]
tpm=\[dq]on\[dq]
secureboot=\[dq]on\[dq]
.EE
@ -104,13 +104,13 @@ drivers.
.IP \[bu] 2
\f[CR]tpm=\[dq]on\[dq]\f[R] instructs \f[CR]quickemu\f[R] to create a
software emulated TPM device using \f[CR]swtpm\f[R].
.SH BIOS and EFI
.SS BIOS and EFI
Since Quickemu 2.1.0 \f[CR]efi\f[R] is the default boot option.
If you want to override this behaviour then add the following line to
you VM configuration to enable legacy BIOS.
.IP \[bu] 2
\f[CR]boot=\[dq]legacy\[dq]\f[R] - Enable Legacy BIOS boot
.SH Tuning CPU cores, RAM & disks
\f[CR]boot=\[dq]legacy\[dq]\f[R] \- Enable Legacy BIOS boot
.SS Tuning CPU cores, RAM & disks
By default, Quickemu will calculate the number of CPUs cores and RAM to
allocate to a VM based on the specifications of your host computer.
You can override this default behaviour and tune the VM configuration to
@ -118,13 +118,13 @@ your liking.
.PP
Add additional lines to your virtual machine configuration:
.IP \[bu] 2
\f[CR]cpu_cores=\[dq]4\[dq]\f[R] - Specify the number of CPU cores
\f[CR]cpu_cores=\[dq]4\[dq]\f[R] \- Specify the number of CPU cores
allocated to the VM
.IP \[bu] 2
\f[CR]ram=\[dq]4G\[dq]\f[R] - Specify the amount of RAM to allocate to
\f[CR]ram=\[dq]4G\[dq]\f[R] \- Specify the amount of RAM to allocate to
the VM
.IP \[bu] 2
\f[CR]disk_size=\[dq]16G\[dq]\f[R] - Specify the size of the virtual
\f[CR]disk_size=\[dq]16G\[dq]\f[R] \- Specify the size of the virtual
disk allocated to the VM
.SS Disk preallocation
Preallocation mode (allowed values: \f[CR]off\f[R] (default),
@ -137,29 +137,32 @@ the system disk image by adding a line like this to your VM
configuration.
.IP \[bu] 2
\f[CR]preallocation=\[dq]metadata\[dq]\f[R]
.SS CD-ROM disks
.SS CD\-ROM disks
If you want to expose an ISO image from the host to guest add the
following line to the VM configuration:
.IP \[bu] 2
\f[CR]fixed_iso=\[dq]/path/to/image.iso\[dq]\f[R]
.SS Floppy disks
If you\[cq]re like Alan Pope (https://popey.com) you\[cq]ll probably
want to mount a floppy disk image in the guest.
If you\[aq]re like \c
.UR https://popey.com
Alan Pope
.UE \c
\ you\[aq]ll probably want to mount a floppy disk image in the guest.
To do so add the following line to the VM configuration:
.IP \[bu] 2
\f[CR]floppy=\[dq]/path/to/floppy.img\[dq]\f[R]
.SH File Sharing
.SS File Sharing
All File Sharing options will only expose \f[CR]\[ti]/Public\f[R] (or
localised variations) for the current user to the guest VMs.
.SS Samba 🐧 🍏 🪟
If \f[CR]smbd\f[R] is available on the host, Quickemu will automatically
enable the built-in QEMU support for exposing a Samba share from the
enable the built\-in QEMU support for exposing a Samba share from the
host to the guest.
.PP
You can install the minimal Samba components on Ubuntu using:
.IP
.EX
sudo apt install --no-install-recommends samba
sudo apt install \-\-no\-install\-recommends samba
.EE
.PP
If everything is set up correctly, the \f[CR]smbd\f[R] address will be
@ -167,20 +170,21 @@ printed when the virtual machine is started.
For example:
.IP
.EX
- smbd: On guest: smb://10.0.2.4/qemu
\- smbd: On guest: smb://10.0.2.4/qemu
.EE
.PP
If using a Windows guest, right-click on \[lq]This PC\[rq], click
\[lq]Add a network location\[rq], and paste this address, removing
If using a Windows guest, right\-click on \[dq]This PC\[dq], click
\[dq]Add a network location\[dq], and paste this address, removing
\f[CR]smb:\f[R] and replacing forward slashes with backslashes (in this
example \f[CR]\[rs]\[rs]10.0.2.4\[rs]qemu\f[R]).
.SS SPICE WebDAV 🐧 🪟
.IP \[bu] 2
TBD
.SS VirtIO-9P 🐧 🍏
.SS VirtIO\-9P 🐧 🍏
.IP \[bu] 2
TBD
.SH Network port forwarding
.SS Networking
.SS Port forwarding
Add an additional line to your virtual machine configuration.
For example:
.IP \[bu] 2
@ -191,12 +195,12 @@ In the example above:
Port 8123 on the host is forwarded to port 8123 on the guest.
.IP \[bu] 2
Port 8888 on the host is forwarded to port 80 on the guest.
.SH Disable networking
.SS Disable networking
To completely disable all network interfaces in a guest VM add this
additional line to your virtual machine configuration:
.IP \[bu] 2
\f[CR]network=\[dq]none\[dq]\f[R]
.SH Restricted networking
.SS Restricted networking
You can isolate the guest from the host (and broader network) using the
restrict option, which will restrict networking to just the guest and
any virtual devices.
@ -206,7 +210,7 @@ phoning home while still providing a network inside the guest.
Add this additional line to your virtual machine configuration:
.IP \[bu] 2
\f[CR]network=\[dq]restrict\[dq]\f[R]
.SH Bridged networking
.SS Bridged networking
Connect your virtual machine to a preconfigured network bridge.
Add an additional line to your virtual machine configuration:
.IP \[bu] 2
@ -216,21 +220,76 @@ If you want to have a persistent MAC address for your bridged network
interface in the guest VM you can add \f[CR]macaddr\f[R] to the virtual
machine configuration.
QEMU requires that the MAC address is in the range:
\f[B]52:54:00:AB:00:00 - 52:54:00:AB:FF:FF\f[R]
\f[B]52:54:00:AB:00:00 \- 52:54:00:AB:FF:FF\f[R]
.PP
So you can generate your own MAC addresses with:
.IP \[bu] 2
\f[CR]macaddr=\[dq]52:54:00:AB:51:AE\[dq]\f[R]
.SH USB redirection
Quickemu supports USB redirection via SPICE pass-through and host
pass-through.
.SS USB redirection
Quickemu supports USB redirection via SPICE pass\-through and host
pass\-through.
Quickemu supports USB redirection via SPICE pass\-through and host
pass\-through.
.PP
\f[B]NOTE!\f[R] When a USB device is redirected from the host, it will
not be usable by host operating system until the guest redirection is
stopped.
Therefore, do not redirect the input devices, such as the keyboard and
mouse, as it will be difficult (or impossible) to revert the situation.
.SS SPICE redirection (recommended)
Using SPICE for USB pass-through is easiest as it doesn\[cq]t require
any elevated permission, start Quickemu with \f[CR]--display spice\f[R]
and then select \f[CR]Input\f[R] ->
Using SPICE for USB pass\-through is easiest as it doesn\[aq]t require
any elevated permission:
.PP
Both \f[CR]spicy\f[R] from \c
.UR https://www.spice-space.org/spice-gtk.html
spice\-gtk
.UE \c
\ (\f[I]Input \-> Select USB Devices for redirection\f[R]) and
\f[CR]remote\-viewer\f[R] from \c
.UR https://gitlab.com/virt-viewer/virt-viewer
virt\-viewer
.UE \c
\ (\f[I]File \-> USB device selection\f[R]) support this feature.
.IP \[bu] 2
Start Quickemu with \f[CR]\-\-display spice\f[R] and then
.IP \[bu] 2
Select \f[CR]Input\f[R] \-> \f[CR]Select USB Device for redirection\f[R]
from the menu to choose which device(s) you want to attach to the guest.
.IP \[bu] 2
**\f[CR]spicy\f[R] (default)
.RS 2
.IP \[bu] 2
**Select \f[CR]Input\f[R] \->
\f[CR]Select USB Device for redirection\f[R] from the menu to choose
which device(s) you want to attach to the guest.
.SS Host redirection \f[B]NOT Recommended\f[R]
.RE
.IP \[bu] 2
**\f[CR]remote\-viewer\f[R]
.RS 2
.IP \[bu] 2
**Select \f[CR]File\f[R] \-> \f[CR]USB device selection\f[R] from the
menu to choose which device(s) you want to attach to the guest.
.RE
.PP
To ensure that this functionality works as expected, make sure that you
have installed the necessary SPICE Guest Tools on the virtual machine.
.SS Enabling SPICE redirection on NixOS
On NixOS, if you encounter this error:
.IP
.EX
Error setting facl: Operation not permitted
.EE
.PP
Try setting \c
.UR https://search.nixos.org/options?channel=23.11&show=virtualisation.spiceUSBRedirection.enable&from=0&size=50&sort=relevance&type=packages&query=spiceusbredirec
the following option
.UE \c
:
.IP
.EX
virtualisation.spiceUSBRedirection.enable = true;
.EE
.SS Host redirection (\f[B]NOT Recommended\f[R])
\f[B]USB host redirection is not recommended\f[R], it is provided purely
for backwards compatibility to older versions of Quickemu.
Using SPICE is preferred, see above.
@ -253,12 +312,12 @@ the appropriate commands to modify the USB device(s) access permissions,
like this:
.IP
.EX
- USB: Host pass-through requested:
- Sennheiser Communications EPOS GTW 270 on bus 001 device 005 needs permission changes:
sudo chown -v root:user /dev/bus/usb/001/005
\- USB: Host pass\-through requested:
\- Sennheiser Communications EPOS GTW 270 on bus 001 device 005 needs permission changes:
sudo chown \-v root:user /dev/bus/usb/001/005
ERROR! USB permission changes are required 👆
.EE
.SH TPM
.SS TPM
Since Quickemu 2.2.0 a software emulated TPM device can be added to
guest virtual machines.
Just add \f[CR]tpm=\[dq]on\[dq]\f[R] to your VM configuration.
@ -267,10 +326,13 @@ virtual machines.
.SH AUTHORS
Written by Martin Wimpress.
.SH BUGS
Submit bug reports online at:
<https://github.com/quickemu-project/quickemu/issues>
Submit bug reports online at: \c
.UR https://github.com/quickemu-project/quickemu/issues
.UE \c
.SH SEE ALSO
Full sources at: <https://github.com/quickemu-project/quickemu>
Full sources at: \c
.UR https://github.com/quickemu-project/quickemu
.UE \c
.PP
quickget(1), quickemu(1), quickgui(1)
.SH AUTHORS

View File

@ -1,9 +1,9 @@
---
author: Martin Wimpress
date: October 24, 2023
date: December 30, 2024
footer: quickemu_conf
header: Quickemu Configuration Manual
section: 1
section: 5
title: QUICKEMU_CONF
---
@ -23,7 +23,7 @@ installation ISO and QEMU disk for the installed VM
These are the options and defaults for the \<vm\>.conf file
``` bash
``` shell
# Lowercase variables are used in the VM config file only
boot="efi"
cpu_cores=""
@ -67,7 +67,7 @@ mouse="tablet"
# EXAMPLES
``` bash
``` shell
guest_os="linux"
disk_img="debian-bullseye/disk.qcow2"
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
@ -75,24 +75,24 @@ iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
The default macOS configuration looks like this:
``` bash
``` shell
guest_os="macos"
img="macos-catalina/RecoveryImage.img"
disk_img="macos-catalina/disk.qcow2"
macos_release="catalina"
```
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
- `macos_release="catalina"` instructs Quickemu to optimise for a
particular macOS release.
- For example VirtIO Network and Memory Ballooning are available
in Big Sur and newer, but not previous releases.
- And VirtIO Block Media (disks) are supported/stable in Catalina
and newer.
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
- `macos_release="catalina"` instructs Quickemu to optimise for a
particular macOS release.
- For example VirtIO Network and Memory Ballooning are available in
Big Sur and newer, but not previous releases.
- And VirtIO Block Media (disks) are supported/stable in Catalina and
newer.
The default Windows 11 configuration looks like this:
``` bash
``` shell
guest_os="windows"
disk_img="windows-11/disk.qcow2"
iso="windows-11/Win11_EnglishInternational_x64.iso"
@ -101,20 +101,20 @@ tpm="on"
secureboot="on"
```
- `guest_os="windows"` instructs `quickemu` to optimise for Windows.
- `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
device using `swtpm`.
- `guest_os="windows"` instructs `quickemu` to optimise for Windows.
- `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
device using `swtpm`.
# BIOS and EFI
### BIOS and EFI
Since Quickemu 2.1.0 `efi` is the default boot option. If you want to
override this behaviour then add the following line to you VM
configuration to enable legacy BIOS.
- `boot="legacy"` - Enable Legacy BIOS boot
- `boot="legacy"` - Enable Legacy BIOS boot
# Tuning CPU cores, RAM & disks
### Tuning CPU cores, RAM & disks
By default, Quickemu will calculate the number of CPUs cores and RAM to
allocate to a VM based on the specifications of your host computer. You
@ -123,13 +123,12 @@ your liking.
Add additional lines to your virtual machine configuration:
- `cpu_cores="4"` - Specify the number of CPU cores allocated to the
VM
- `ram="4G"` - Specify the amount of RAM to allocate to the VM
- `disk_size="16G"` - Specify the size of the virtual disk allocated
to the VM
- `cpu_cores="4"` - Specify the number of CPU cores allocated to the VM
- `ram="4G"` - Specify the amount of RAM to allocate to the VM
- `disk_size="16G"` - Specify the size of the virtual disk allocated to
the VM
## Disk preallocation
### Disk preallocation
Preallocation mode (allowed values: `off` (default), `metadata`,
`falloc`, `full`). An image with preallocated metadata is initially
@ -139,29 +138,29 @@ Specify what disk preallocation should be used, if any, when creating
the system disk image by adding a line like this to your VM
configuration.
- `preallocation="metadata"`
- `preallocation="metadata"`
## CD-ROM disks
### CD-ROM disks
If you want to expose an ISO image from the host to guest add the
following line to the VM configuration:
- `fixed_iso="/path/to/image.iso"`
- `fixed_iso="/path/to/image.iso"`
## Floppy disks
### Floppy disks
If you're like [Alan Pope](https://popey.com) you'll probably want to
mount a floppy disk image in the guest. To do so add the following line
to the VM configuration:
- `floppy="/path/to/floppy.img"`
- `floppy="/path/to/floppy.img"`
# File Sharing
### File Sharing
All File Sharing options will only expose `~/Public` (or localised
variations) for the current user to the guest VMs.
## Samba 🐧 🍏 🪟
#### Samba 🐧 🍏 🪟
If `smbd` is available on the host, Quickemu will automatically enable
the built-in QEMU support for exposing a Samba share from the host to
@ -169,7 +168,7 @@ the guest.
You can install the minimal Samba components on Ubuntu using:
``` bash
``` shell
sudo apt install --no-install-recommends samba
```
@ -182,34 +181,36 @@ If using a Windows guest, right-click on "This PC", click "Add a network
location", and paste this address, removing `smb:` and replacing forward
slashes with backslashes (in this example `\\10.0.2.4\qemu`).
## SPICE WebDAV 🐧 🪟
#### SPICE WebDAV 🐧 🪟
- TBD
- TBD
## VirtIO-9P 🐧 🍏
#### VirtIO-9P 🐧 🍏
- TBD
- TBD
# Network port forwarding
### Networking
#### Port forwarding
Add an additional line to your virtual machine configuration. For
example:
- `port_forwards=("8123:8123" "8888:80")`
- `port_forwards=("8123:8123" "8888:80")`
In the example above:
- Port 8123 on the host is forwarded to port 8123 on the guest.
- Port 8888 on the host is forwarded to port 80 on the guest.
- Port 8123 on the host is forwarded to port 8123 on the guest.
- Port 8888 on the host is forwarded to port 80 on the guest.
# Disable networking
#### Disable networking
To completely disable all network interfaces in a guest VM add this
additional line to your virtual machine configuration:
- `network="none"`
- `network="none"`
# Restricted networking
#### Restricted networking
You can isolate the guest from the host (and broader network) using the
restrict option, which will restrict networking to just the guest and
@ -219,14 +220,14 @@ This can be used to prevent software running inside the guest from
phoning home while still providing a network inside the guest. Add this
additional line to your virtual machine configuration:
- `network="restrict"`
- `network="restrict"`
# Bridged networking
#### Bridged networking
Connect your virtual machine to a preconfigured network bridge. Add an
additional line to your virtual machine configuration:
- `network="br0"`
- `network="br0"`
If you want to have a persistent MAC address for your bridged network
interface in the guest VM you can add `macaddr` to the virtual machine
@ -235,21 +236,57 @@ configuration. QEMU requires that the MAC address is in the range:
So you can generate your own MAC addresses with:
- `macaddr="52:54:00:AB:51:AE"`
- `macaddr="52:54:00:AB:51:AE"`
# USB redirection
### USB redirection
Quickemu supports USB redirection via SPICE pass-through and host
pass-through.
pass-through. Quickemu supports USB redirection via SPICE pass-through
and host pass-through.
## SPICE redirection (recommended)
**NOTE!** When a USB device is redirected from the host, it will not be
usable by host operating system until the guest redirection is stopped.
Therefore, do not redirect the input devices, such as the keyboard and
mouse, as it will be difficult (or impossible) to revert the situation.
#### SPICE redirection (recommended)
Using SPICE for USB pass-through is easiest as it doesn't require any
elevated permission, start Quickemu with `--display spice` and then
select `Input` -\> `Select USB Device for redirection` from the menu to
choose which device(s) you want to attach to the guest.
elevated permission:
## Host redirection **NOT Recommended**
Both `spicy` from
[spice-gtk](https://www.spice-space.org/spice-gtk.html) (*Input -\>
Select USB Devices for redirection*) and `remote-viewer` from
[virt-viewer](https://gitlab.com/virt-viewer/virt-viewer) (*File -\> USB
device selection*) support this feature.
- Start Quickemu with `--display spice` and then
- Select `Input` -\> `Select USB Device for redirection` from the menu
to choose which device(s) you want to attach to the guest.
- \*\*`spicy` (default)
- \*\*Select `Input` -\> `Select USB Device for redirection` from the
menu to choose which device(s) you want to attach to the guest.
- \*\*`remote-viewer`
- \*\*Select `File` -\> `USB device selection` from the menu to choose
which device(s) you want to attach to the guest.
To ensure that this functionality works as expected, make sure that you
have installed the necessary SPICE Guest Tools on the virtual machine.
##### Enabling SPICE redirection on NixOS
On NixOS, if you encounter this error:
Error setting facl: Operation not permitted
Try setting [the following
option](https://search.nixos.org/options?channel=23.11&show=virtualisation.spiceUSBRedirection.enable&from=0&size=50&sort=relevance&type=packages&query=spiceusbredirec):
``` nix
virtualisation.spiceUSBRedirection.enable = true;
```
#### Host redirection (**NOT Recommended**)
**USB host redirection is not recommended**, it is provided purely for
backwards compatibility to older versions of Quickemu. Using SPICE is
@ -258,14 +295,14 @@ preferred, see above.
Add an additional line to your virtual machine configuration. For
example:
- `usb_devices=("046d:082d" "046d:085e")`
- `usb_devices=("046d:082d" "046d:085e")`
In the example above:
- The USB device with vendor_id 046d and product_id 082d will be
exposed to the guest.
- The USB device with vendor_id 046d and product_id 085e will be
exposed to the guest.
- The USB device with vendor_id 046d and product_id 082d will be exposed
to the guest.
- The USB device with vendor_id 046d and product_id 085e will be exposed
to the guest.
If the USB devices are not writable, `quickemu` will display the
appropriate commands to modify the USB device(s) access permissions,
@ -276,7 +313,7 @@ like this:
sudo chown -v root:user /dev/bus/usb/001/005
ERROR! USB permission changes are required 👆
# TPM
### TPM
Since Quickemu 2.2.0 a software emulated TPM device can be added to
guest virtual machines. Just add `tpm="on"` to your VM configuration.

View File

@ -1,8 +1,8 @@
.\" Automatically generated by Pandoc 3.1.8
.\" Automatically generated by Pandoc 3.6.1
.\"
.TH "QUICKGET" "1" "October 24, 2023" "quickget" "Quickget User Manual"
.TH "QUICKGET" "1" "December 30, 2024" "quickget" "Quickget User Manual"
.SH NAME
quickget - download and prepare materials for building a quickemu VM
quickget \- download and prepare materials for building a quickemu VM
.SH SYNOPSIS
\f[B]quickget\f[R] [\f[I]os\f[R]] [\f[I]release\f[R]]
[\f[I]edition\f[R]] | [\f[I]OPTION\f[R]]*
@ -11,61 +11,95 @@ quickget - download and prepare materials for building a quickemu VM
configuration for \f[CR]quickemu\f[R] to use to build and run
.SH OPTIONS
.TP
\f[B]version | -version | \[en]version\f[R]
show version (from Quickemu)
.TP
\f[B]list | list_csv | list_json\f[R]
provide a csv list of all supported guest OSes, versions and variants.
.TP
\f[B][OS] [Release] [Edition]\f[R]
specify the OS and release (and optional edition) if insufficient input
is provided a list of missing options will be reported and the script
will exit.
Editions may not apply and will be defaulted if not provided.
.TP
\f[B]\-\-download\f[R] [edition]
Download image; no VM configuration
.TP
\f[B]\-\-create\-config\f[R] [path/url]
Create VM config for a OS image
.TP
\f[B]\-\-open\-homepage\f[R]
Open homepage for the OS
.TP
\f[B]\-\-show\f[R] [os]
Show OS information
.TP
\f[B]\-\-url\f[R] [os] [release] [edition]
Show image URL(s)
.TP
\f[B]\-\-check\f[R] [os] [release] [edition]
Check image URL(s)
.TP
\f[B]\-\-list\f[R]
List all supported systems
.TP
\f[B]\-\-list\-csv\f[R]
List everything in csv format
.TP
\f[B]\-\-list\-json\f[R]
List everything in json format
.TP
\f[B]\-\-version\f[R]
Show version
.TP
\f[B]\-\-help\f[R]
Show this help message
.SH NOTES
.SS Ubuntu Guest
.SS Creating Linux guests 🐧
.SS Ubuntu
\f[CR]quickget\f[R] will automatically download an Ubuntu release and
create the virtual machine configuration.
.IP
.EX
quickget ubuntu 22.04
quickemu --vm ubuntu-22.04.conf
quickemu \-\-vm ubuntu\-22.04.conf
.EE
.IP \[bu] 2
Complete the installation as normal.
.IP \[bu] 2
Post-install:
Post\-install:
.RS 2
.IP \[bu] 2
Install the SPICE agent (\f[CR]spice-vdagent\f[R]) in the guest to
Install the SPICE agent (\f[CR]spice\-vdagent\f[R]) in the guest to
enable copy/paste and USB redirection
.RS 2
.IP \[bu] 2
\f[CR]sudo apt install spice-vdagent\f[R]
\f[CR]sudo apt install spice\-vdagent\f[R]
.RE
.IP \[bu] 2
Install the SPICE WebDAV agent (\f[CR]spice-webdavd\f[R]) in the guest
Install the SPICE WebDAV agent (\f[CR]spice\-webdavd\f[R]) in the guest
to enable file sharing.
.RS 2
.IP \[bu] 2
\f[CR]sudo apt install spice-webdavd\f[R]
\f[CR]sudo apt install spice\-webdavd\f[R]
.RE
.RE
.SS Ubuntu devel (daily-live) images
\f[CR]quickget\f[R] can also download/refresh devel images via
.SS Ubuntu daily\-live images
\f[CR]quickget\f[R] can also download/refresh daily\-live images via
\f[CR]zsync\f[R] for Ubuntu developers and testers.
.IP
.EX
quickget ubuntu devel
quickemu --vm ubuntu-devel.conf
quickget ubuntu daily\-live
quickemu \-\-vm ubuntu\-daily\-live.conf
.EE
.PP
You can run \f[CR]quickget ubuntu devel\f[R] to refresh your daily
You can run \f[CR]quickget ubuntu daily\-live\f[R] to refresh your daily
development image as often as you like, it will even automatically
switch to a new series.
.SS Ubuntu Flavours
All the official Ubuntu flavours are supported, just replace
\f[CR]ubuntu\f[R] with your preferred flavour.
.PP
The project \c
.UR https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines
wiki
.UE \c
\ may have further information.
.IP \[bu] 2
\f[CR]edubuntu\f[R] (Edubuntu)
.IP \[bu] 2
@ -73,27 +107,66 @@ All the official Ubuntu flavours are supported, just replace
.IP \[bu] 2
\f[CR]lubuntu\f[R] (Lubuntu)
.IP \[bu] 2
\f[CR]ubuntu-budgie\f[R] (Ubuntu Budgie)
\f[CR]ubuntu\-budgie\f[R] (Ubuntu Budgie)
.IP \[bu] 2
\f[CR]ubuntucinnamon\f[R] (Ubuntu Cinnamon)
.IP \[bu] 2
\f[CR]ubuntukylin\f[R] (Ubuntu Kylin)
.IP \[bu] 2
\f[CR]ubuntu-mate\f[R] (Ubuntu MATE)
\f[CR]ubuntu\-mate\f[R] (Ubuntu MATE)
.IP \[bu] 2
\f[CR]ubuntu-server\f[R] (Ubuntu Server)
\f[CR]ubuntu\-server\f[R] (Ubuntu Server)
.IP \[bu] 2
\f[CR]ubuntustudio\f[R] (Ubuntu Studio)
.IP \[bu] 2
\f[CR]ubuntu\f[R] (Ubuntu)
.IP \[bu] 2
\f[CR]ubuntu-unity\f[R] (Ubuntu Unity)
\f[CR]ubuntu\-unity\f[R] (Ubuntu Unity)
.IP \[bu] 2
\f[CR]xubuntu\f[R] (Xubuntu)
.PP
You can also use \f[CR]quickget\f[R] with advanced options :
.IP
.EX
\-\-download <os> <release> [edition] : Download image; no VM configuration
\-\-create\-config <os> [path/url] [flags] : Create VM config for an OS image
\-\-open\-homepage <os> : Open homepage for the OS
\-\-show [os] : Show OS information
\-\-version : Show version
\-\-help : Show this help message
\-\-disable\-unattended : Force quickget not to set up an unattended installation
\-\-url [os] [release] [edition] : Show image URL(s)
\-\-check [os] [release] [edition] : Check image URL(s)
\-\-list : List all supported systems
\-\-list\-csv : List everything in csv format
\-\-list\-json : List everything in json format
.EE
.PP
Here are some typical uses
.IP
.EX
# show an OS ISO download URL for {os} {release} [edition]
quickget \-\-url fedora 38 Silverblue
# test if an OS ISO is available for {os} {release} [edition]
quickget \-\-check nixos unstable plasma5
# open an OS distribution homepage in a browser
quickget \-\-open\-homepage ubuntu\-mate
# Only download image file into current directory, without creating VM
quickget \-\-download elementary 7.1
.EE
.PP
The \f[CR]\-\-url\f[R], \f[CR]\-\-check\f[R], and
\f[CR]\-\-download\f[R] options are fully functional for all operating
systems, including Windows and macOS.
.PP
Further information is available from the project \c
.UR https://github.com/quickemu-project/quickemu/wiki/06-Advanced-quickget-features
wiki
.UE \c
.SS Other Operating Systems
\f[CR]quickget\f[R] also supports:
.IP \[bu] 2
\f[CR]alma\f[R] (Alma Linux)
\f[CR]alma\f[R] (AlmaLinux)
.IP \[bu] 2
\f[CR]alpine\f[R] (Alpine Linux)
.IP \[bu] 2
@ -107,17 +180,29 @@ All the official Ubuntu flavours are supported, just replace
.IP \[bu] 2
\f[CR]arcolinux\f[R] (Arco Linux)
.IP \[bu] 2
\f[CR]artixlinux\f[R] (Artix Linux)
.IP \[bu] 2
\f[CR]athenaos\f[R] (Athena OS)
.IP \[bu] 2
\f[CR]batocera\f[R] (Batocera)
.IP \[bu] 2
\f[CR]bazzite\f[R] (Bazzite)
.IP \[bu] 2
\f[CR]biglinux\f[R] (BigLinux)
.IP \[bu] 2
\f[CR]blendos\f[R] (BlendOS)
.IP \[bu] 2
\f[CR]bodhi\f[R] (Bodhi)
.IP \[bu] 2
\f[CR]bunsenlabs\f[R] (Bunsenlabs)
\f[CR]bunsenlabs\f[R] (BunsenLabs)
.IP \[bu] 2
\f[CR]cachyos\f[R] (CachyOS)
.IP \[bu] 2
\f[CR]centos-stream\f[R] (CentOS Stream)
\f[CR]centos\-stream\f[R] (CentOS Stream)
.IP \[bu] 2
\f[CR]chimeralinux\f[R] (Chimera Linux)
.IP \[bu] 2
\f[CR]crunchbang++\f[R] (Crunchbangplusplus)
.IP \[bu] 2
\f[CR]debian\f[R] (Debian)
.IP \[bu] 2
@ -127,6 +212,8 @@ All the official Ubuntu flavours are supported, just replace
.IP \[bu] 2
\f[CR]dragonflybsd\f[R] (DragonFlyBSD)
.IP \[bu] 2
\f[CR]easyos\f[R] (EasyOS)
.IP \[bu] 2
\f[CR]elementary\f[R] (elementary OS)
.IP \[bu] 2
\f[CR]endeavouros\f[R] (EndeavourOS)
@ -145,6 +232,10 @@ All the official Ubuntu flavours are supported, just replace
.IP \[bu] 2
\f[CR]ghostbsd\f[R] (GhostBSD)
.IP \[bu] 2
\f[CR]gnomeos\f[R] (GNOME OS)
.IP \[bu] 2
\f[CR]guix\f[R] (Guix)
.IP \[bu] 2
\f[CR]haiku\f[R] (Haiku)
.IP \[bu] 2
\f[CR]holoiso\f[R] (HoloISO)
@ -161,6 +252,8 @@ All the official Ubuntu flavours are supported, just replace
.IP \[bu] 2
\f[CR]lmde\f[R] (Linux Mint Debian Edition)
.IP \[bu] 2
\f[CR]maboxlinux\f[R] (Mabox Linux)
.IP \[bu] 2
\f[CR]mageia\f[R] (Mageia)
.IP \[bu] 2
\f[CR]manjaro\f[R] (Manjaro)
@ -171,8 +264,12 @@ All the official Ubuntu flavours are supported, just replace
.IP \[bu] 2
\f[CR]netbsd\f[R] (NetBSD)
.IP \[bu] 2
\f[CR]nitrux\f[R] (Nitrux)
.IP \[bu] 2
\f[CR]nixos\f[R] (NixOS)
.IP \[bu] 2
\f[CR]nwg\-shell\f[R] (nwg\-shell)
.IP \[bu] 2
\f[CR]openbsd\f[R] (OpenBSD)
.IP \[bu] 2
\f[CR]openindiana\f[R] (OpenIndiana)
@ -181,12 +278,20 @@ All the official Ubuntu flavours are supported, just replace
.IP \[bu] 2
\f[CR]oraclelinux\f[R] (Oracle Linux)
.IP \[bu] 2
\f[CR]parrotsec\f[R] (Parrot Security)
.IP \[bu] 2
\f[CR]peppermint\f[R] (PeppermintOS)
.IP \[bu] 2
\f[CR]popos\f[R] (Pop!_OS)
.IP \[bu] 2
\f[CR]porteus\f[R] (Porteus)
.IP \[bu] 2
\f[CR]primtux\f[R] (PrimTux)
.IP \[bu] 2
\f[CR]proxmox\-ve\f[R] (Proxmox VE)
.IP \[bu] 2
\f[CR]pureos\f[R] (PureOS)
.IP \[bu] 2
\f[CR]reactos\f[R] (ReactOS)
.IP \[bu] 2
\f[CR]rebornos\f[R] (RebornOS)
@ -197,19 +302,29 @@ All the official Ubuntu flavours are supported, just replace
.IP \[bu] 2
\f[CR]slackware\f[R] (Slackware)
.IP \[bu] 2
\f[CR]slax\f[R] (Slax)
.IP \[bu] 2
\f[CR]slint\f[R] (Slint)
.IP \[bu] 2
\f[CR]slitaz\f[R] (SliTaz)
.IP \[bu] 2
\f[CR]solus\f[R] (Solus)
.IP \[bu] 2
\f[CR]spiral\f[R] (Spiral)
\f[CR]sparkylinux\f[R] (SparkyLinux)
.IP \[bu] 2
\f[CR]spirallinux\f[R] (SpiralLinux)
.IP \[bu] 2
\f[CR]tails\f[R] (Tails)
.IP \[bu] 2
\f[CR]tinycore\f[R] (Tiny Core Linux)
.IP \[bu] 2
\f[CR]trisquel\f[R] (Trisquel)
\f[CR]trisquel\f[R] (Trisquel\-)
.IP \[bu] 2
\f[CR]truenas-core\f[R] (TrueNAS Core)
\f[CR]truenas\-core\f[R] (TrueNAS Core)
.IP \[bu] 2
\f[CR]truenas-scale\f[R] (TrueNAS Scale)
\f[CR]truenas\-scale\f[R] (TrueNAS Scale)
.IP \[bu] 2
\f[CR]tuxedo\-os\f[R] (Tuxedo OS)
.IP \[bu] 2
\f[CR]vanillaos\f[R] (Vanilla OS)
.IP \[bu] 2
@ -217,52 +332,69 @@ All the official Ubuntu flavours are supported, just replace
.IP \[bu] 2
\f[CR]vxlinux\f[R] (VX Linux)
.IP \[bu] 2
\f[CR]xerolinux\f[R] (XeroLinux)
.IP \[bu] 2
\f[CR]zorin\f[R] (Zorin OS)
.PP
.SS \c
.UR https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines#manually-create-linux-guests
Custom Linux guests
.UE \c
Or you can download a Linux image and manually create a VM
configuration.
.IP \[bu] 2
Download a .iso image of a Linux distribution
.IP \[bu] 2
Create a VM configuration file; for example
\f[CR]debian-bullseye.conf\f[R]
\f[CR]debian\-bullseye.conf\f[R]
.IP
.EX
guest_os=\[dq]linux\[dq]
disk_img=\[dq]debian-bullseye/disk.qcow2\[dq]
iso=\[dq]debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso\[dq]
disk_img=\[dq]debian\-bullseye/disk.qcow2\[dq]
iso=\[dq]debian\-bullseye/firmware\-11.0.0\-amd64\-DVD\-1.iso\[dq]
.EE
.IP \[bu] 2
Use \f[CR]quickemu\f[R] to start the virtual machine:
.IP
.EX
quickemu --vm debian-bullseye.conf
quickemu \-\-vm debian\-bullseye.conf
.EE
.IP \[bu] 2
Complete the installation as normal.
.IP \[bu] 2
Post-install:
Post\-install:
.RS 2
.IP \[bu] 2
Install the SPICE agent (\f[CR]spice-vdagent\f[R]) in the guest to
Install the SPICE agent (\f[CR]spice\-vdagent\f[R]) in the guest to
enable copy/paste and USB redirection.
.IP \[bu] 2
Install the SPICE WebDAV agent (\f[CR]spice-webdavd\f[R]) in the guest
Install the SPICE WebDAV agent (\f[CR]spice\-webdavd\f[R]) in the guest
to enable file sharing.
.RE
.SS macOS Guest
.SS Supporting old Linux distros
If you want to run an old Linux , from 2016 or earlier, change the
\f[CR]guest_os\f[R] to \f[CR]linux_old\f[R].
This will enable the \f[CR]vmware\-svga\f[R] graphics driver which is
better supported on older distros.
.SS \c
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
Creating macOS Guests
.UE \c
\ 🍏
\f[B]Installing macOS in a VM can be a bit finicky, if you encounter
problems, \c
.UR https://github.com/quickemu-project/quickemu/discussions
check the Discussions
.UE \c
\ for solutions or ask for help there\f[R] 🛟
.PP
\f[CR]quickget\f[R] automatically downloads a macOS recovery image and
creates a virtual machine configuration.
.IP
.EX
quickget macos catalina
quickemu --vm macos-catalina.conf
quickget macos big\-sur
quickemu \-\-vm macos\-big\-sur.conf
.EE
.PP
macOS \f[CR]high-sierra\f[R], \f[CR]mojave\f[R], \f[CR]catalina\f[R],
\f[CR]big-sur\f[R], \f[CR]monterey\f[R] and \f[CR]ventura\f[R] are
macOS \f[CR]mojave\f[R], \f[CR]catalina\f[R], \f[CR]big\-sur\f[R],
\f[CR]monterey\f[R], \f[CR]ventura\f[R] and \f[CR]sonoma\f[R] are
supported.
.IP \[bu] 2
Use cursor keys and enter key to select the \f[B]macOS Base System\f[R]
@ -279,8 +411,9 @@ click \f[B]Erase\f[R].
.IP \[bu] 2
Enter a \f[CR]Name:\f[R] for the disk
.IP \[bu] 2
If you are installing macOS Mojave or later (Catalina, Big Sur, Monterey
and Ventura), choose any of the APFS options as the filesystem.
If you are installing macOS Mojave or later (Catalina, Big Sur,
Monterey, Ventura and Sonoma), choose any of the APFS options as the
filesystem.
MacOS Extended may not work.
.RE
.IP \[bu] 2
@ -308,10 +441,10 @@ disk you named
.RE
.IP \[bu] 2
Once you have finished installing macOS you will be presented with an
the out-of-the-box first-start wizard to configure various options and
set up your username and password
the out\-of\-the\-box first\-start wizard to configure various options
and set up your username and password
.IP \[bu] 2
OPTIONAL: After you have concluded the out-of-the-box wizard, you may
OPTIONAL: After you have concluded the out\-of\-the\-box wizard, you may
want to enable the TRIM feature that the computer industry created for
SSD disks.
This feature in our macOS installation will allow QuickEmu to compact
@ -330,20 +463,21 @@ on the hard disk when files are deleted:
sudo trimforce enable
.EE
.PP
You will be prompted to enter your account\[cq]s password to gain the
You will be prompted to enter your account\[aq]s password to gain the
privilege needed.
Once you\[cq]ve entered your password and pressed enter the command will
Once you\[aq]ve entered your password and pressed enter the command will
request confirmation in the form of two questions that require you to
type y (for a \[lq]yes\[rq] response) followed by enter to confirm.
type y (for a \[dq]yes\[dq] response) followed by enter to confirm.
.PP
If you press enter without first typing y the system will consider that
a negative response as though you said \[lq]no\[rq]:
a negative response as though you said \[dq]no\[dq]:
.IP
.EX
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
IMPORTANT NOTICE: This tool force\-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON\-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
Are you sure you with to proceed (y/N)?
.EE
.PP
And a second confirmation once you\[cq]ve confirmed the previous one:
And a second confirmation once you\[aq]ve confirmed the previous one:
.IP
.EX
Your system will immediately reboot when this is complete.
@ -357,15 +491,15 @@ The default macOS configuration looks like this:
.IP
.EX
guest_os=\[dq]macos\[dq]
img=\[dq]macos-catalina/RecoveryImage.img\[dq]
disk_img=\[dq]macos-catalina/disk.qcow2\[dq]
macos_release=\[dq]catalina\[dq]
img=\[dq]macos\- big\-sur/RecoveryImage.img\[dq]
disk_img=\[dq]macos\- big\-sur/disk.qcow2\[dq]
macos_release=\[dq] big\-sur\[dq]
.EE
.IP \[bu] 2
\f[CR]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for
macOS.
.IP \[bu] 2
\f[CR]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to
\f[CR]macos_release=\[dq] big\-sur\[dq]\f[R] instructs Quickemu to
optimise for a particular macOS release.
.RS 2
.IP \[bu] 2
@ -375,49 +509,60 @@ Sur and newer, but not previous releases.
And VirtIO Block Media (disks) are supported/stable in Catalina and
newer.
.RE
.SS macOS compatibility
.SH macOS compatibility
There are some considerations when running macOS via Quickemu.
.IP \[bu] 2
Supported macOS releases:
.RS 2
.IP \[bu] 2
High Sierra
.IP \[bu] 2
Mojave
.IP \[bu] 2
Catalina \f[B](Recommended)\f[R]
Catalina
.IP \[bu] 2
Big Sur
.IP \[bu] 2
Monterey
.IP \[bu] 2
Ventura
.IP \[bu] 2
Sonoma
.RE
.IP \[bu] 2
\f[CR]quickemu\f[R] will automatically download the required
OpenCore (https://github.com/acidanthera/OpenCorePkg) bootloader and
OVMF firmware from OSX-KVM (https://github.com/kholia/OSX-KVM).
\f[CR]quickemu\f[R] will automatically download the required \c
.UR https://github.com/acidanthera/OpenCorePkg
OpenCore
.UE \c
\ bootloader and OVMF firmware from \c
.UR https://github.com/kholia/OSX-KVM
OSX\-KVM
.UE \c
\&.
.IP \[bu] 2
Optimised by default, but no GPU acceleration is available.
.RS 2
.IP \[bu] 2
Host CPU vendor is detected and guest CPU is optimised accordingly.
.IP \[bu] 2
VirtIO Block
Media (https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used
for the system disk where supported.
\c
.UR https://www.kraxel.org/blog/2019/06/macos-qemu-guest/
VirtIO Block Media
.UE \c
\ is used for the system disk where supported.
.IP \[bu] 2
VirtIO \f[CR]usb-tablet\f[R] (http://philjordan.eu/osx-virt/) is used
for the mouse.
\c
.UR http://philjordan.eu/osx-virt/
VirtIO \f[CR]usb\-tablet\f[R]
.UE \c
\ is used for the mouse.
.IP \[bu] 2
VirtIO Network (\f[CR]virtio-net\f[R]) is supported and enabled on macOS
Big Sur and newer but previous releases use \f[CR]vmxnet3\f[R].
VirtIO Network (\f[CR]virtio\-net\f[R]) is supported and enabled on
macOS Big Sur and newer, but earlier releases use \f[CR]vmxnet3\f[R].
.IP \[bu] 2
VirtIO Memory Ballooning is supported and enabled on macOS Big Sur and
newer but disabled for other support macOS releases.
.RE
.IP \[bu] 2
USB host and SPICE pass-through is:
USB host and SPICE pass\-through is:
.RS 2
.IP \[bu] 2
UHCI (USB 2.0) on macOS Catalina and earlier.
@ -425,31 +570,47 @@ UHCI (USB 2.0) on macOS Catalina and earlier.
XHCI (USB 3.0) on macOS Big Sur and newer.
.RE
.IP \[bu] 2
Display resolution can only be changed via macOS System Preferences.
Display resolution can be changed via \f[CR]quickemu\f[R] using
\f[CR]\-\-width\f[R] and \f[CR]\-\-height\f[R] command line arguments.
.IP \[bu] 2
\f[B]Full Duplex audio requires VoodooHDA
OC (https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
audio-device to the macOS guest VM\f[R].
\f[B]Full Duplex audio requires \c
.UR https://github.com/chris1111/VoodooHDA-OC
VoodooHDA OC
.UE \c
\ or pass\-through a USB audio\-device to the macOS guest VM\f[R].
.RS 2
.IP \[bu] 2
NOTE!
Gatekeeper (https://disable-gatekeeper.github.io/) and System Integrity
Protection
(SIP) (https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection)
need to be disabled to install VoodooHDA OC
\c
.UR https://disable-gatekeeper.github.io/
Gatekeeper
.UE \c
\ and \c
.UR https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection
System Integrity Protection (SIP)
.UE \c
\ need to be disabled to install VoodooHDA OC
.RE
.IP \[bu] 2
File sharing between guest and host is available via
virtio-9p (https://wiki.qemu.org/Documentation/9psetup) and SPICE
webdavd (https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
File sharing between guest and host is available via \c
.UR https://wiki.qemu.org/Documentation/9psetup
virtio\-9p
.UE \c
\ and \c
.UR https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24
SPICE webdavd
.UE \c
\&.
.IP \[bu] 2
Copy/paste via SPICE agent is \f[B]not available on macOS\f[R].
.SS macOS App Store
If you see \f[I]\[lq]Your device or computer could not be
verified\[rq]\f[R] when you try to login to the App Store, make sure
.SH macOS App Store
If you see \f[I]\[dq]Your device or computer could not be
verified\[dq]\f[R] when you try to login to the App Store, make sure
that your wired ethernet device is \f[CR]en0\f[R].
Use \f[CR]ifconfig\f[R] in a terminal to verify this.
.PP
If the wired ethernet device is not \f[CR]en0\f[R], then then go to
\f[I]System Preferences\f[R] -> \f[I]Network\f[R], delete all the
\f[I]System Preferences\f[R] \-> \f[I]Network\f[R], delete all the
network devices and apply the changes.
Next, open a terminal and run the following:
.IP
@ -458,17 +619,62 @@ sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
.EE
.PP
Now reboot, and the App Store should work.
.SS Windows 10 & 11 Guests
\f[CR]quickget\f[R] can download
Windows10 (https://www.microsoft.com/software-download/windows10) and
Windows 11 (https://www.microsoft.com/software-download/windows11)
automatically and create an optimised virtual machine configuration.
This configuration also includes the VirtIO drivers for
Windows (https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/).
.PP
There may be further advice and information about macOS guests in the
project \c
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
wiki
.UE \c
\&.
.SS \c
.UR https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines
Creating Windows guests
.UE \c
\ 🪟
\f[CR]quickget\f[R] can download \c
.UR https://www.microsoft.com/software-download/windows10
\f[B]Windows 10\f[R]
.UE \c
\ and \c
.UR https://www.microsoft.com/software-download/windows11
\f[B]Windows 11\f[R]
.UE \c
\ automatically and create an optimised virtual machine configuration.
This configuration also includes the \c
.UR https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/
VirtIO drivers for Windows
.UE \c
\&.
.PP
\f[B]Windows 8.1\f[R] is also supported but doesn\[aq]t feature any
automated installation or driver optimisation.
.PP
\f[CR]quickget\f[R] can also download \c
.UR https://www.microsoft.com/en-us/evalcenter/download-windows-10-enterprise
Windows 10 LTSC
.UE \c
\ and Windows Server \c
.UR https://www.microsoft.com/en-us/evalcenter/download-windows-server-2012-r2
2012\-r2
.UE \c
, \c
.UR https://www.microsoft.com/en-us/evalcenter/download-windows-server-2016
2016
.UE \c
, \c
.UR https://www.microsoft.com/en-us/evalcenter/download-windows-server-2019
2019
.UE \c
, and \c
.UR https://www.microsoft.com/en-us/evalcenter/download-windows-server-2022
2022
.UE \c
\&.
No automated installation is supported for these releases.
.IP
.EX
quickget windows 11
quickemu --vm windows-11-22H2.conf
quickemu \-\-vm windows\-11.conf
.EE
.IP \[bu] 2
Complete the installation as you normally would.
@ -484,33 +690,21 @@ Username: \f[CR]Quickemu\f[R]
Password: \f[CR]quickemu\f[R]
.RE
.PP
The default Windows 11 configuration looks like this:
.IP
.EX
guest_os=\[dq]windows\[dq]
disk_img=\[dq]windows-11/disk.qcow2\[dq]
iso=\[dq]windows-11/windows-11.iso\[dq]
fixed_iso=\[dq]windows-11/virtio-win.iso\[dq]
tpm=\[dq]on\[dq]
secureboot=\[dq]on\[dq]
.EE
.IP \[bu] 2
\f[CR]guest_os=\[dq]windows\[dq]\f[R] instructs \f[CR]quickemu\f[R] to
optimise for Windows.
.IP \[bu] 2
\f[CR]fixed_iso=\f[R] specifies the ISO image that provides VirtIO
drivers.
.IP \[bu] 2
\f[CR]tpm=\[dq]on\[dq]\f[R] instructs \f[CR]quickemu\f[R] to create a
software emulated TPM device using \f[CR]swtpm\f[R].
Further information is available from the project \c
.UR https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines
wiki
.UE \c
.SH AUTHORS
Written by Martin Wimpress.
.SH BUGS
Submit bug reports online at:
<https://github.com/quickemu-project/quickemu/issues>
Submit bug reports online at: \c
.UR https://github.com/quickemu-project/quickemu/issues
.UE \c
.SH SEE ALSO
Full sources at: <https://github.com/quickemu-project/quickemu>
Full sources at: \c
.UR https://github.com/quickemu-project/quickemu
.UE \c
.PP
quickemu(1), quickemu_conf(1), quickgui(1)
quickemu(1), quickemu_conf(5), quickgui(1)
.SH AUTHORS
Martin Wimpress.

View File

@ -1,6 +1,6 @@
---
author: Martin Wimpress
date: October 24, 2023
date: December 30, 2024
footer: quickget
header: Quickget User Manual
section: 1
@ -22,227 +22,326 @@ configuration for `quickemu` to use to build and run
# OPTIONS
**version \| -version \| --version**
: show version (from Quickemu)
**list \| list_csv \| list_json**
: provide a csv list of all supported guest OSes, versions and
variants.
**\[OS\] \[Release\] \[Edition\]**
: specify the OS and release (and optional edition) if insufficient
input is provided a list of missing options will be reported and the
script will exit. Editions may not apply and will be defaulted if
not provided.
**--download** <os> <release> \[edition\]
: Download image; no VM configuration
**--create-config** <os> \[path/url\]
: Create VM config for a OS image
**--open-homepage** <os>
: Open homepage for the OS
**--show** \[os\]
: Show OS information
**--url** \[os\] \[release\] \[edition\]
: Show image URL(s)
**--check** \[os\] \[release\] \[edition\]
: Check image URL(s)
**--list**
: List all supported systems
**--list-csv**
: List everything in csv format
**--list-json**
: List everything in json format
**--version**
: Show version
**--help**
: Show this help message
# NOTES
## Ubuntu Guest
## Creating Linux guests 🐧
### Ubuntu
`quickget` will automatically download an Ubuntu release and create the
virtual machine configuration.
``` bash
``` shell
quickget ubuntu 22.04
quickemu --vm ubuntu-22.04.conf
```
- Complete the installation as normal.
- Post-install:
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
copy/paste and USB redirection
- `sudo apt install spice-vdagent`
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
enable file sharing.
- `sudo apt install spice-webdavd`
- Complete the installation as normal.
- Post-install:
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
copy/paste and USB redirection
- `sudo apt install spice-vdagent`
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
enable file sharing.
- `sudo apt install spice-webdavd`
### Ubuntu devel (daily-live) images
### Ubuntu daily-live images
`quickget` can also download/refresh devel images via `zsync` for Ubuntu
developers and testers.
`quickget` can also download/refresh daily-live images via `zsync` for
Ubuntu developers and testers.
``` bash
quickget ubuntu devel
quickemu --vm ubuntu-devel.conf
``` shell
quickget ubuntu daily-live
quickemu --vm ubuntu-daily-live.conf
```
You can run `quickget ubuntu devel` to refresh your daily development
image as often as you like, it will even automatically switch to a new
series.
You can run `quickget ubuntu daily-live` to refresh your daily
development image as often as you like, it will even automatically
switch to a new series.
### Ubuntu Flavours
All the official Ubuntu flavours are supported, just replace `ubuntu`
with your preferred flavour.
- `edubuntu` (Edubuntu)
- `kubuntu` (Kubuntu)
- `lubuntu` (Lubuntu)
- `ubuntu-budgie` (Ubuntu Budgie)
- `ubuntucinnamon` (Ubuntu Cinnamon)
- `ubuntukylin` (Ubuntu Kylin)
- `ubuntu-mate` (Ubuntu MATE)
- `ubuntu-server` (Ubuntu Server)
- `ubuntustudio` (Ubuntu Studio)
- `ubuntu` (Ubuntu)
- `ubuntu-unity` (Ubuntu Unity)
- `xubuntu` (Xubuntu)
The project
[wiki](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines)
may have further information.
## Other Operating Systems
- `edubuntu` (Edubuntu)
- `kubuntu` (Kubuntu)
- `lubuntu` (Lubuntu)
- `ubuntu-budgie` (Ubuntu Budgie)
- `ubuntucinnamon` (Ubuntu Cinnamon)
- `ubuntukylin` (Ubuntu Kylin)
- `ubuntu-mate` (Ubuntu MATE)
- `ubuntu-server` (Ubuntu Server)
- `ubuntustudio` (Ubuntu Studio)
- `ubuntu` (Ubuntu)
- `ubuntu-unity` (Ubuntu Unity)
- `xubuntu` (Xubuntu)
You can also use `quickget` with advanced options :
``` text
--download <os> <release> [edition] : Download image; no VM configuration
--create-config <os> [path/url] [flags] : Create VM config for an OS image
--open-homepage <os> : Open homepage for the OS
--show [os] : Show OS information
--version : Show version
--help : Show this help message
--disable-unattended : Force quickget not to set up an unattended installation
--url [os] [release] [edition] : Show image URL(s)
--check [os] [release] [edition] : Check image URL(s)
--list : List all supported systems
--list-csv : List everything in csv format
--list-json : List everything in json format
```
Here are some typical uses
``` shell
# show an OS ISO download URL for {os} {release} [edition]
quickget --url fedora 38 Silverblue
# test if an OS ISO is available for {os} {release} [edition]
quickget --check nixos unstable plasma5
# open an OS distribution homepage in a browser
quickget --open-homepage ubuntu-mate
# Only download image file into current directory, without creating VM
quickget --download elementary 7.1
```
The `--url`, `--check`, and `--download` options are fully functional
for all operating systems, including Windows and macOS.
Further information is available from the project
[wiki](https://github.com/quickemu-project/quickemu/wiki/06-Advanced-quickget-features)
### Other Operating Systems
`quickget` also supports:
- `alma` (Alma Linux)
- `alpine` (Alpine Linux)
- `android` (Android x86)
- `antix` (Antix)
- `archcraft` (Archcraft)
- `archlinux` (Arch Linux)
- `arcolinux` (Arco Linux)
- `batocera` (Batocera)
- `blendos` (BlendOS)
- `bodhi` (Bodhi)
- `bunsenlabs` (Bunsenlabs)
- `cachyos` (CachyOS)
- `centos-stream` (CentOS Stream)
- `debian` (Debian)
- `deepin` (Deepin)
- `devuan` (Devuan)
- `dragonflybsd` (DragonFlyBSD)
- `elementary` (elementary OS)
- `endeavouros` (EndeavourOS)
- `endless` (Endless OS)
- `fedora` (Fedora)
- `freebsd` (FreeBSD)
- `freedos` (FreeDOS)
- `garuda` (Garuda Linux)
- `gentoo` (Gentoo)
- `ghostbsd` (GhostBSD)
- `haiku` (Haiku)
- `holoiso` (HoloISO)
- `kali` (Kali)
- `kdeneon` (KDE Neon)
- `kolibrios` (KolibriOS)
- `linuxlite` (Linux Lite)
- `linuxmint` (Linux Mint)
- `lmde` (Linux Mint Debian Edition)
- `mageia` (Mageia)
- `manjaro` (Manjaro)
- `mxlinux` (MX Linux)
- `netboot` (netboot.xyz)
- `netbsd` (NetBSD)
- `nixos` (NixOS)
- `openbsd` (OpenBSD)
- `openindiana` (OpenIndiana)
- `opensuse` (openSUSE)
- `oraclelinux` (Oracle Linux)
- `peppermint` (PeppermintOS)
- `popos` (Pop!\_OS)
- `porteus` (Porteus)
- `reactos` (ReactOS)
- `rebornos` (RebornOS)
- `rockylinux` (Rocky Linux)
- `siduction` (Siduction)
- `slackware` (Slackware)
- `solus` (Solus)
- `spiral` (Spiral)
- `tails` (Tails)
- `tinycore` (Tiny Core Linux)
- `trisquel` (Trisquel)
- `truenas-core` (TrueNAS Core)
- `truenas-scale` (TrueNAS Scale)
- `vanillaos` (Vanilla OS)
- `void` (Void Linux)
- `vxlinux` (VX Linux)
- `xerolinux` (XeroLinux)
- `zorin` (Zorin OS)
- `alma` (AlmaLinux)
- `alpine` (Alpine Linux)
- `android` (Android x86)
- `antix` (Antix)
- `archcraft` (Archcraft)
- `archlinux` (Arch Linux)
- `arcolinux` (Arco Linux)
- `artixlinux` (Artix Linux)
- `athenaos` (Athena OS)
- `batocera` (Batocera)
- `bazzite` (Bazzite)
- `biglinux` (BigLinux)
- `blendos` (BlendOS)
- `bodhi` (Bodhi)
- `bunsenlabs` (BunsenLabs)
- `cachyos` (CachyOS)
- `centos-stream` (CentOS Stream)
- `chimeralinux` (Chimera Linux)
- `crunchbang++` (Crunchbangplusplus)
- `debian` (Debian)
- `deepin` (Deepin)
- `devuan` (Devuan)
- `dragonflybsd` (DragonFlyBSD)
- `easyos` (EasyOS)
- `elementary` (elementary OS)
- `endeavouros` (EndeavourOS)
- `endless` (Endless OS)
- `fedora` (Fedora)
- `freebsd` (FreeBSD)
- `freedos` (FreeDOS)
- `garuda` (Garuda Linux)
- `gentoo` (Gentoo)
- `ghostbsd` (GhostBSD)
- `gnomeos` (GNOME OS)
- `guix` (Guix)
- `haiku` (Haiku)
- `holoiso` (HoloISO)
- `kali` (Kali)
- `kdeneon` (KDE Neon)
- `kolibrios` (KolibriOS)
- `linuxlite` (Linux Lite)
- `linuxmint` (Linux Mint)
- `lmde` (Linux Mint Debian Edition)
- `maboxlinux` (Mabox Linux)
- `mageia` (Mageia)
- `manjaro` (Manjaro)
- `mxlinux` (MX Linux)
- `netboot` (netboot.xyz)
- `netbsd` (NetBSD)
- `nitrux` (Nitrux)
- `nixos` (NixOS)
- `nwg-shell` (nwg-shell)
- `openbsd` (OpenBSD)
- `openindiana` (OpenIndiana)
- `opensuse` (openSUSE)
- `oraclelinux` (Oracle Linux)
- `parrotsec` (Parrot Security)
- `peppermint` (PeppermintOS)
- `popos` (Pop!\_OS)
- `porteus` (Porteus)
- `primtux` (PrimTux)
- `proxmox-ve` (Proxmox VE)
- `pureos` (PureOS)
- `reactos` (ReactOS)
- `rebornos` (RebornOS)
- `rockylinux` (Rocky Linux)
- `siduction` (Siduction)
- `slackware` (Slackware)
- `slax` (Slax)
- `slint` (Slint)
- `slitaz` (SliTaz)
- `solus` (Solus)
- `sparkylinux` (SparkyLinux)
- `spirallinux` (SpiralLinux)
- `tails` (Tails)
- `tinycore` (Tiny Core Linux)
- `trisquel` (Trisquel-)
- `truenas-core` (TrueNAS Core)
- `truenas-scale` (TrueNAS Scale)
- `tuxedo-os` (Tuxedo OS)
- `vanillaos` (Vanilla OS)
- `void` (Void Linux)
- `vxlinux` (VX Linux)
- `zorin` (Zorin OS)
### [Custom Linux guests](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines#manually-create-linux-guests)
Or you can download a Linux image and manually create a VM
configuration.
- Download a .iso image of a Linux distribution
- Create a VM configuration file; for example `debian-bullseye.conf`
- Download a .iso image of a Linux distribution
- Create a VM configuration file; for example `debian-bullseye.conf`
``` bash
``` shell
guest_os="linux"
disk_img="debian-bullseye/disk.qcow2"
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
```
- Use `quickemu` to start the virtual machine:
- Use `quickemu` to start the virtual machine:
``` bash
``` shell
quickemu --vm debian-bullseye.conf
```
- Complete the installation as normal.
- Post-install:
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
copy/paste and USB redirection.
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
enable file sharing.
- Complete the installation as normal.
- Post-install:
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
copy/paste and USB redirection.
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
enable file sharing.
## macOS Guest
## Supporting old Linux distros
If you want to run an old Linux , from 2016 or earlier, change the
`guest_os` to `linux_old`. This will enable the `vmware-svga` graphics
driver which is better supported on older distros.
## [Creating macOS Guests](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests) 🍏
**Installing macOS in a VM can be a bit finicky, if you encounter
problems, [check the
Discussions](https://github.com/quickemu-project/quickemu/discussions)
for solutions or ask for help there** 🛟
`quickget` automatically downloads a macOS recovery image and creates a
virtual machine configuration.
``` bash
quickget macos catalina
quickemu --vm macos-catalina.conf
``` shell
quickget macos big-sur
quickemu --vm macos-big-sur.conf
```
macOS `high-sierra`, `mojave`, `catalina`, `big-sur`, `monterey` and
`ventura` are supported.
macOS `mojave`, `catalina`, `big-sur`, `monterey`, `ventura` and
`sonoma` are supported.
- Use cursor keys and enter key to select the **macOS Base System**
- From **macOS Utilities**
- Click **Disk Utility** and **Continue**
- Select `QEMU HARDDISK Media` (\~103.08GB) from the list (on
Big Sur and above use `Apple Inc. VirtIO Block Device`) and
click **Erase**.
- Enter a `Name:` for the disk
- If you are installing macOS Mojave or later (Catalina, Big
Sur, Monterey and Ventura), choose any of the APFS options
as the filesystem. MacOS Extended may not work.
- Click **Erase**.
- Click **Done**.
- Close Disk Utility
- From **macOS Utilities**
- Click **Reinstall macOS** and **Continue**
- Complete the installation as you normally would.
- On the first reboot use cursor keys and enter key to select
**macOS Installer**
- On the subsequent reboots use cursor keys and enter key to
select the disk you named
- Once you have finished installing macOS you will be presented with
an the out-of-the-box first-start wizard to configure various
options and set up your username and password
- OPTIONAL: After you have concluded the out-of-the-box wizard, you
may want to enable the TRIM feature that the computer industry
created for SSD disks. This feature in our macOS installation will
allow QuickEmu to compact (shrink) your macOS disk image whenever
you delete files inside the Virtual Machine. Without this step your
macOS disk image will only ever get larger and will not shrink even
when you delete lots of data inside macOS.
- To enable TRIM, open the Terminal application and type the
following command followed by pressing
`<kbd>`{=html}enter`</kbd>`{=html} to tell macos to use the TRIM
command on the hard disk when files are deleted:
- Use cursor keys and enter key to select the **macOS Base System**
- From **macOS Utilities**
- Click **Disk Utility** and **Continue**
- Select `QEMU HARDDISK Media` (~103.08GB) from the list (on Big Sur
and above use `Apple Inc. VirtIO Block Device`) and click
**Erase**.
- Enter a `Name:` for the disk
- If you are installing macOS Mojave or later (Catalina, Big Sur,
Monterey, Ventura and Sonoma), choose any of the APFS options as
the filesystem. MacOS Extended may not work.
- Click **Erase**.
- Click **Done**.
- Close Disk Utility
- From **macOS Utilities**
- Click **Reinstall macOS** and **Continue**
- Complete the installation as you normally would.
- On the first reboot use cursor keys and enter key to select **macOS
Installer**
- On the subsequent reboots use cursor keys and enter key to select
the disk you named
- Once you have finished installing macOS you will be presented with an
the out-of-the-box first-start wizard to configure various options and
set up your username and password
- OPTIONAL: After you have concluded the out-of-the-box wizard, you may
want to enable the TRIM feature that the computer industry created for
SSD disks. This feature in our macOS installation will allow QuickEmu
to compact (shrink) your macOS disk image whenever you delete files
inside the Virtual Machine. Without this step your macOS disk image
will only ever get larger and will not shrink even when you delete
lots of data inside macOS.
- To enable TRIM, open the Terminal application and type the following
command followed by pressing <kbd>enter</kbd> to tell macos to use
the TRIM command on the hard disk when files are deleted:
``` bash
``` shell
sudo trimforce enable
```
You will be prompted to enter your account's password to gain the
privilege needed. Once you've entered your password and pressed
`<kbd>`{=html}enter`</kbd>`{=html} the command will request confirmation
in the form of two questions that require you to type
`<kbd>`{=html}y`</kbd>`{=html} (for a "yes" response) followed by
`<kbd>`{=html}enter`</kbd>`{=html} to confirm. If you press
`<kbd>`{=html}enter`</kbd>`{=html} without first typing
`<kbd>`{=html}y`</kbd>`{=html} the system will consider that a negative
response as though you said "no":
<kbd>enter</kbd> the command will request confirmation in the form of
two questions that require you to type <kbd>y</kbd> (for a "yes"
response) followed by <kbd>enter</kbd> to confirm.
If you press <kbd>enter</kbd> without first typing <kbd>y</kbd> the
system will consider that a negative response as though you said "no":
``` plain
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
@ -261,64 +360,64 @@ soon as the command completes.
The default macOS configuration looks like this:
``` bash
``` shell
guest_os="macos"
img="macos-catalina/RecoveryImage.img"
disk_img="macos-catalina/disk.qcow2"
macos_release="catalina"
img="macos- big-sur/RecoveryImage.img"
disk_img="macos- big-sur/disk.qcow2"
macos_release=" big-sur"
```
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
- `macos_release="catalina"` instructs Quickemu to optimise for a
particular macOS release.
- For example VirtIO Network and Memory Ballooning are available
in Big Sur and newer, but not previous releases.
- And VirtIO Block Media (disks) are supported/stable in Catalina
and newer.
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
- `macos_release=" big-sur"` instructs Quickemu to optimise for a
particular macOS release.
- For example VirtIO Network and Memory Ballooning are available in
Big Sur and newer, but not previous releases.
- And VirtIO Block Media (disks) are supported/stable in Catalina and
newer.
### macOS compatibility
# macOS compatibility
There are some considerations when running macOS via Quickemu.
- Supported macOS releases:
- High Sierra
- Mojave
- Catalina **(Recommended)**
- Big Sur
- Monterey
- Ventura
- `quickemu` will automatically download the required
[OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader
and OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
- Optimised by default, but no GPU acceleration is available.
- Host CPU vendor is detected and guest CPU is optimised
accordingly.
- [VirtIO Block
Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is
used for the system disk where supported.
- [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used
for the mouse.
- VirtIO Network (`virtio-net`) is supported and enabled on macOS
Big Sur and newer but previous releases use `vmxnet3`.
- VirtIO Memory Ballooning is supported and enabled on macOS Big
Sur and newer but disabled for other support macOS releases.
- USB host and SPICE pass-through is:
- UHCI (USB 2.0) on macOS Catalina and earlier.
- XHCI (USB 3.0) on macOS Big Sur and newer.
- Display resolution can only be changed via macOS System Preferences.
- **Full Duplex audio requires [VoodooHDA
OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
audio-device to the macOS guest VM**.
- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and
- Supported macOS releases:
- Mojave
- Catalina
- Big Sur
- Monterey
- Ventura
- Sonoma
- `quickemu` will automatically download the required
[OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader and
OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
- Optimised by default, but no GPU acceleration is available.
- Host CPU vendor is detected and guest CPU is optimised accordingly.
- [VirtIO Block
Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is
used for the system disk where supported.
- [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for
the mouse.
- VirtIO Network (`virtio-net`) is supported and enabled on macOS Big
Sur and newer, but earlier releases use `vmxnet3`.
- VirtIO Memory Ballooning is supported and enabled on macOS Big Sur
and newer but disabled for other support macOS releases.
- USB host and SPICE pass-through is:
- UHCI (USB 2.0) on macOS Catalina and earlier.
- XHCI (USB 3.0) on macOS Big Sur and newer.
- Display resolution can be changed via `quickemu` using `--width` and
`--height` command line arguments.
- **Full Duplex audio requires [VoodooHDA
OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
audio-device to the macOS guest VM**.
- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and
[System Integrity Protection
(SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection)
need to be disabled to install VoodooHDA OC
- File sharing between guest and host is available via
[virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE
webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
- Copy/paste via SPICE agent is **not available on macOS**.
- File sharing between guest and host is available via
[virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE
webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
- Copy/paste via SPICE agent is **not available on macOS**.
### macOS App Store
# macOS App Store
If you see *"Your device or computer could not be verified"* when you
try to login to the App Store, make sure that your wired ethernet device
@ -328,48 +427,52 @@ If the wired ethernet device is not `en0`, then then go to *System
Preferences* -\> *Network*, delete all the network devices and apply the
changes. Next, open a terminal and run the following:
``` bash
``` shell
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
```
Now reboot, and the App Store should work.
## Windows 10 & 11 Guests
There may be further advice and information about macOS guests in the
project
[wiki](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests).
`quickget` can download
[Windows10](https://www.microsoft.com/software-download/windows10) and
[Windows 11](https://www.microsoft.com/software-download/windows11)
## [Creating Windows guests](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines) 🪟
`quickget` can download [**Windows
10**](https://www.microsoft.com/software-download/windows10) and
[**Windows 11**](https://www.microsoft.com/software-download/windows11)
automatically and create an optimised virtual machine configuration.
This configuration also includes the [VirtIO drivers for
Windows](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/).
``` bash
**Windows 8.1** is also supported but doesn't feature any automated
installation or driver optimisation.
`quickget` can also download [Windows 10
LTSC](https://www.microsoft.com/en-us/evalcenter/download-windows-10-enterprise)
and Windows Server
[2012-r2](https://www.microsoft.com/en-us/evalcenter/download-windows-server-2012-r2),
[2016](https://www.microsoft.com/en-us/evalcenter/download-windows-server-2016),
[2019](https://www.microsoft.com/en-us/evalcenter/download-windows-server-2019),
and
[2022](https://www.microsoft.com/en-us/evalcenter/download-windows-server-2022).
No automated installation is supported for these releases.
``` shell
quickget windows 11
quickemu --vm windows-11-22H2.conf
quickemu --vm windows-11.conf
```
- Complete the installation as you normally would.
- All relevant drivers and services should be installed automatically.
- A local administrator user account is automatically created, with
these credentials:
- Username: `Quickemu`
- Password: `quickemu`
- Complete the installation as you normally would.
- All relevant drivers and services should be installed automatically.
- A local administrator user account is automatically created, with
these credentials:
- Username: `Quickemu`
- Password: `quickemu`
The default Windows 11 configuration looks like this:
``` bash
guest_os="windows"
disk_img="windows-11/disk.qcow2"
iso="windows-11/windows-11.iso"
fixed_iso="windows-11/virtio-win.iso"
tpm="on"
secureboot="on"
```
- `guest_os="windows"` instructs `quickemu` to optimise for Windows.
- `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
device using `swtpm`.
Further information is available from the project
[wiki](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines)
# AUTHORS
@ -384,4 +487,4 @@ Submit bug reports online at:
Full sources at: <https://github.com/quickemu-project/quickemu>
quickemu(1), quickemu_conf(1), quickgui(1)
quickemu(1), quickemu_conf(5), quickgui(1)

40
flake.lock Normal file
View File

@ -0,0 +1,40 @@
{
"nodes": {
"flake-schemas": {
"locked": {
"lastModified": 1721999734,
"narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
"rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
"revCount": 75,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A.tar.gz"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1756217674,
"narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=",
"rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620",
"revCount": 808864,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.808864%2Brev-4e7667a90c167f7a81d906e5a75cba4ad8bee620/0198eaa3-105a-74fa-a9b2-0a930acea8de/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A.tar.gz"
}
},
"root": {
"inputs": {
"flake-schemas": "flake-schemas",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

42
flake.nix Normal file
View File

@ -0,0 +1,42 @@
{
description = "Quickemu flake";
inputs = {
flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/*.tar.gz";
nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/*.tar.gz";
};
outputs = {
self,
flake-schemas,
nixpkgs,
}: let
# Define supported systems and a helper function for generating system-specific outputs
supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
system = system;
pkgs = import nixpkgs { inherit system; };
});
in {
# Define schemas for the flake's outputs
schemas = flake-schemas.schemas;
# Define overlays for each supported system
overlays = {
default = final: prev: {
quickemu = final.callPackage ./package.nix { };
};
};
# Define packages for each supported system
packages = forEachSupportedSystem ({pkgs, system, ...}: rec {
quickemu = pkgs.callPackage ./package.nix { };
default = quickemu;
});
# Define devShells for each supported system
devShells = forEachSupportedSystem ({pkgs, system, ...}: {
default = pkgs.callPackage ./devshell.nix { };
});
};
}

View File

@ -1,518 +0,0 @@
#!/usr/bin/env python3
"""
Gather recovery information for Macs.
Copyright (c) 2019, vit9696
"""
from __future__ import print_function
import argparse
import binascii
import datetime
import hashlib
import json
import linecache
import os
import random
import struct
import sys
import textwrap
import time
try:
from urllib.request import Request,HTTPError,urlopen
from urllib.parse import urlencode,urlparse
except ImportError:
from urllib2 import Request,HTTPError,urlopen
from urllib import urlencode
from urlparse import urlparse
SELF_DIR = os.path.dirname(os.path.realpath(__file__))
RECENT_MAC = 'Mac-7BA5B2D9E42DDD94'
MLB_ZERO = '00000000000000000'
MLB_VALID = 'C02749200YGJ803AX'
MLB_PRODUCT = '00000000000J80300'
TYPE_SID = 16
TYPE_K = 64
TYPE_FG = 64
INFO_PRODUCT = 'AP'
INFO_IMAGE_LINK = 'AU'
INFO_IMAGE_HASH = 'AH'
INFO_IMAGE_SESS = 'AT'
INFO_SIGN_LINK = 'CU'
INFO_SIGN_HASH = 'CH'
INFO_SIGN_SESS = 'CT'
INFO_REQURED = [ INFO_PRODUCT, INFO_IMAGE_LINK, INFO_IMAGE_HASH, INFO_IMAGE_SESS,
INFO_SIGN_LINK, INFO_SIGN_HASH, INFO_SIGN_SESS ]
def run_query(url, headers, post=None, raw=False):
if post is not None:
data = '\n'.join([entry + '=' + post[entry] for entry in post])
if sys.version_info[0] >= 3:
data = data.encode('utf-8')
else:
data = None
req = Request(url=url, headers=headers, data=data)
try:
response = urlopen(req)
if raw: return response
return dict(response.info()), response.read()
except HTTPError as e:
print('ERROR: "{}" when connecting to {}'.format(e, url))
sys.exit(1)
def generate_id(type, id=None):
valid_chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
if id is None:
return ''.join(random.choice(valid_chars) for i in range(type))
return id
def product_mlb(mlb):
return '00000000000' + mlb[11] + mlb[12] + mlb[13] + mlb[14] + '00'
def mlb_from_eeee(eeee):
if len(eeee) != 4:
print('ERROR: Invalid EEEE code length!')
sys.exit(1)
return '00000000000' + eeee + '00'
def int_from_unsigned_bytes(bytes, byteorder):
if byteorder == 'little': bytes = bytes[::-1]
encoded = binascii.hexlify(bytes)
return int(encoded, 16)
# zhangyoufu https://gist.github.com/MCJack123/943eaca762730ca4b7ae460b731b68e7#gistcomment-3061078 2021-10-08
Apple_EFI_ROM_public_key_1 = 0xC3E748CAD9CD384329E10E25A91E43E1A762FF529ADE578C935BDDF9B13F2179D4855E6FC89E9E29CA12517D17DFA1EDCE0BEBF0EA7B461FFE61D94E2BDF72C196F89ACD3536B644064014DAE25A15DB6BB0852ECBD120916318D1CCDEA3C84C92ED743FC176D0BACA920D3FCF3158AFF731F88CE0623182A8ED67E650515F75745909F07D415F55FC15A35654D118C55A462D37A3ACDA08612F3F3F6571761EFCCBCC299AEE99B3A4FD6212CCFFF5EF37A2C334E871191F7E1C31960E010A54E86FA3F62E6D6905E1CD57732410A3EB0C6B4DEFDABE9F59BF1618758C751CD56CEF851D1C0EAA1C558E37AC108DA9089863D20E2E7E4BF475EC66FE6B3EFDCF
ChunkListHeader = struct.Struct('<4sIBBBxQQQ')
assert ChunkListHeader.size == 0x24
Chunk = struct.Struct('<I32s')
assert Chunk.size == 0x24
def verify_chunklist(cnkpath):
with open(cnkpath, 'rb') as f:
hash_ctx = hashlib.sha256()
data = f.read(ChunkListHeader.size)
hash_ctx.update(data)
magic, header_size, file_version, chunk_method, signature_method, chunk_count, chunk_offset, signature_offset = ChunkListHeader.unpack(data)
assert magic == b'CNKL'
assert header_size == ChunkListHeader.size
assert file_version == 1
assert chunk_method == 1
assert signature_method in [1, 2]
assert chunk_count > 0
assert chunk_offset == 0x24
assert signature_offset == chunk_offset + Chunk.size * chunk_count
for i in range(chunk_count):
data = f.read(Chunk.size)
hash_ctx.update(data)
chunk_size, chunk_sha256 = Chunk.unpack(data)
yield chunk_size, chunk_sha256
digest = hash_ctx.digest()
if signature_method == 1:
data = f.read(256)
assert len(data) == 256
signature = int_from_unsigned_bytes(data, 'little')
plaintext = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff003031300d0609608648016503040201050004200000000000000000000000000000000000000000000000000000000000000000 | int_from_unsigned_bytes(digest, 'big')
assert pow(signature, 0x10001, Apple_EFI_ROM_public_key_1) == plaintext
elif signature_method == 2:
data = f.read(32)
assert data == digest
raise RuntimeError('Chunklist missing digital signature')
else:
raise NotImplementedError
assert f.read(1) == b''
def get_session(args):
headers = {
'Host' : 'osrecovery.apple.com',
'Connection': 'close',
'User-Agent': 'InternetRecovery/1.0',
}
headers, output = run_query('http://osrecovery.apple.com/', headers)
if args.verbose:
print('Session headers:')
for header in headers:
print('{}: {}'.format(header, headers[header]))
for header in headers:
if header.lower() == 'set-cookie':
cookies = headers[header].split('; ')
for cookie in cookies:
if cookie.startswith('session='):
return cookie
raise RuntimeError('No session in headers ' + str(headers))
def get_image_info(session, bid, mlb=MLB_ZERO, diag = False, os_type = 'default', cid=None):
headers = {
'Host' : 'osrecovery.apple.com',
'Connection' : 'close',
'User-Agent' : 'InternetRecovery/1.0',
'Cookie' : session,
'Content-Type': 'text/plain',
}
post = {
'cid': generate_id(TYPE_SID, cid),
'sn' : mlb,
'bid': bid,
'k' : generate_id(TYPE_K),
'fg' : generate_id(TYPE_FG)
}
if diag:
url = 'http://osrecovery.apple.com/InstallationPayload/Diagnostics'
else:
url = 'http://osrecovery.apple.com/InstallationPayload/RecoveryImage'
post['os'] = os_type
headers, output = run_query(url, headers, post)
if sys.version_info[0] >= 3:
output = output.decode('utf-8')
info = {}
for line in output.split('\n'):
try:
key, value = line.split(': ')
info[key] = value
except:
continue
for k in INFO_REQURED:
if k not in info:
raise RuntimeError('Missing key ' + k)
return info
def save_image(url, sess, filename='', dir=''):
purl = urlparse(url)
headers = {
'Host' : purl.hostname,
'Connection': 'close',
'User-Agent': 'InternetRecovery/1.0',
'Cookie' : '='.join(['AssetToken', sess])
}
if filename == '':
filename = os.path.basename(purl.path)
if filename.find('/') >= 0 or filename == '':
raise RuntimeError('Invalid save path ' + filename)
print('Saving ' + url + ' to ' + filename + '...')
with open (os.path.join(dir, filename), 'wb') as fh:
response = run_query(url, headers, raw=True)
size = 0
while True:
chunk = response.read(2**20)
if not chunk:
break
fh.write(chunk)
size += len(chunk)
print('\r{} MBs downloaded...'.format(size / (2**20)), end='')
sys.stdout.flush()
print('\rDownload complete!')
return os.path.join(dir, os.path.basename(filename))
def verify_image(dmgpath, cnkpath):
print('Verifying image with chunklist...')
with open (dmgpath, 'rb') as dmgf:
cnkcount = 0
for cnksize, cnkhash in verify_chunklist(cnkpath):
cnkcount += 1
print('\rChunk {} ({} bytes)'.format(cnkcount, cnksize), end='')
sys.stdout.flush()
cnk = dmgf.read(cnksize)
if len(cnk) != cnksize:
raise RuntimeError('Invalid chunk {} size: expected {}, read {}'.format(cnkcount, cnksize, len(cnk)))
if hashlib.sha256(cnk).digest() != cnkhash:
raise RuntimeError('Invalid chunk {}: hash mismatch'.format(cnkcount))
if dmgf.read(1) != b'':
raise RuntimeError('Invalid image: larger than chunklist')
print('\rImage verification complete!')
def action_download(args):
"""
Reference information for queries:
Recovery latest:
cid=3076CE439155BA14
sn=...
bid=Mac-E43C1C25D4880AD6
k=4BE523BB136EB12B1758C70DB43BDD485EBCB6A457854245F9E9FF0587FB790C
os=latest
fg=B2E6AA07DB9088BE5BDB38DB2EA824FDDFB6C3AC5272203B32D89F9D8E3528DC
Recovery default:
cid=4A35CB95FF396EE7
sn=...
bid=Mac-E43C1C25D4880AD6
k=0A385E6FFC3DDD990A8A1F4EC8B98C92CA5E19C9FF1DD26508C54936D8523121
os=default
fg=B2E6AA07DB9088BE5BDB38DB2EA824FDDFB6C3AC5272203B32D89F9D8E3528DC
Diagnostics:
cid=050C59B51497CEC8
sn=...
bid=Mac-E43C1C25D4880AD6
k=37D42A8282FE04A12A7D946304F403E56A2155B9622B385F3EB959A2FBAB8C93
fg=B2E6AA07DB9088BE5BDB38DB2EA824FDDFB6C3AC5272203B32D89F9D8E3528DC
"""
session = get_session(args)
info = get_image_info(session, bid=args.board_id, mlb=args.mlb,
diag=args.diagnostics, os_type=args.os_type)
if args.verbose:
print(info)
print('Downloading ' + info[INFO_PRODUCT] + '...')
dmgname = '' if args.basename == '' else args.basename + '.dmg'
dmgpath = save_image(info[INFO_IMAGE_LINK], info[INFO_IMAGE_SESS], dmgname, args.outdir)
cnkname = '' if args.basename == '' else args.basename + '.chunklist'
cnkpath = save_image(info[INFO_SIGN_LINK], info[INFO_SIGN_SESS], cnkname, args.outdir)
try:
verify_image(dmgpath, cnkpath)
return 0
except Exception as err:
if isinstance(err, AssertionError) and str(err)=='':
try:
tb = sys.exc_info()[2]
while tb.tb_next:
tb = tb.tb_next
err = linecache.getline(tb.tb_frame.f_code.co_filename, tb.tb_lineno, tb.tb_frame.f_globals).strip()
except:
err = "Invalid chunklist"
print('\rImage verification failed. ({})'.format(err))
return 1
def action_selfcheck(args):
"""
Sanity check server logic for recovery:
if not valid(bid):
return error()
ppp = get_ppp(sn)
if not valid(ppp):
return latest_recovery(bid = bid) # Returns newest for bid.
if valid(sn):
if os == 'default':
return default_recovery(sn = sn, ppp = ppp) # Returns oldest for sn.
else:
return latest_recovery(sn = sn, ppp = ppp) # Returns newest for sn.
return default_recovery(ppp = ppp) # Returns oldest.
"""
session = get_session(args)
valid_default = get_image_info(session, bid=RECENT_MAC, mlb=MLB_VALID,
diag=False, os_type='default')
valid_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_VALID,
diag=False, os_type='latest')
product_default = get_image_info(session, bid=RECENT_MAC, mlb=MLB_PRODUCT,
diag=False, os_type='default')
product_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_PRODUCT,
diag=False, os_type='latest')
generic_default = get_image_info(session, bid=RECENT_MAC, mlb=MLB_ZERO,
diag=False, os_type='default')
generic_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_ZERO,
diag=False, os_type='latest')
if args.verbose:
print(valid_default)
print(valid_latest)
print(product_default)
print(product_latest)
print(generic_default)
print(generic_latest)
if valid_default[INFO_PRODUCT] == valid_latest[INFO_PRODUCT]:
# Valid MLB must give different default and latest if this is not a too new product.
print('ERROR: Cannot determine any previous product, got {}'.format(valid_default[INFO_PRODUCT]))
return 1
if product_default[INFO_PRODUCT] != product_latest[INFO_PRODUCT]:
# Product-only MLB must give the same value for default and latest.
print('ERROR: Latest and default do not match for product MLB, got {} and {}'.format(
product_default[INFO_PRODUCT], product_latest[INFO_PRODUCT]))
return 1
if generic_default[INFO_PRODUCT] != generic_latest[INFO_PRODUCT]:
# Zero MLB always give the same value for default and latest.
print('ERROR: Generic MLB gives different product, got {} and {}'.format(
generic_default[INFO_PRODUCT], generic_latest[INFO_PRODUCT]))
return 1
if valid_latest[INFO_PRODUCT] != generic_latest[INFO_PRODUCT]:
# Valid MLB must always equal generic MLB.
print('ERROR: Cannot determine unified latest product, got {} and {}'.format(
valid_latest[INFO_PRODUCT], generic_latest[INFO_PRODUCT]))
return 1
if product_default[INFO_PRODUCT] != valid_default[INFO_PRODUCT]:
# Product-only MLB can give the same value with valid default MLB.
# This is not an error for all models, but for our chosen code it is.
print('ERROR: Valid and product MLB give mismatch, got {} and {}'.format(
product_default[INFO_PRODUCT], valid_default[INFO_PRODUCT]))
return 1
print('SUCCESS: Found no discrepancies with MLB validation algorithm!')
return 0
def action_verify(args):
"""
Try to verify MLB serial number.
"""
session = get_session(args)
generic_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_ZERO,
diag=False, os_type='latest')
uvalid_default = get_image_info(session, bid=args.board_id, mlb=args.mlb,
diag=False, os_type='default')
uvalid_latest = get_image_info(session, bid=args.board_id, mlb=args.mlb,
diag=False, os_type='latest')
uproduct_default = get_image_info(session, bid=args.board_id, mlb=product_mlb(args.mlb),
diag=False, os_type='default')
if args.verbose:
print(generic_latest)
print(uvalid_default)
print(uvalid_latest)
print(uproduct_default)
# Verify our MLB number.
if uvalid_default[INFO_PRODUCT] != uvalid_latest[INFO_PRODUCT]:
if uvalid_latest[INFO_PRODUCT] == generic_latest[INFO_PRODUCT]:
print('SUCCESS: {} MLB looks valid and supported!'.format(args.mlb))
else:
print('SUCCESS: {} MLB looks valid, but probably unsupported!'.format(args.mlb))
return 0
print('UNKNOWN: Run selfcheck, check your board-id, or try again later!')
# Here we have matching default and latest products. This can only be true for very
# new models. These models get either latest or special builds.
if uvalid_default[INFO_PRODUCT] == generic_latest[INFO_PRODUCT]:
print('UNKNOWN: {} MLB can be valid if very new!'.format(args.mlb))
return 0
if uproduct_default[INFO_PRODUCT] != uvalid_default[INFO_PRODUCT]:
print('UNKNOWN: {} MLB looks invalid, other models use product {} instead of {}!'.format(
args.mlb, uproduct_default[INFO_PRODUCT], uvalid_default[INFO_PRODUCT]))
return 0
print('UNKNOWN: {} MLB can be valid if very new and using special builds!'.format(args.mlb))
return 0
def action_guess(args):
"""
Attempt to guess which model does this MLB belong.
"""
mlb = args.mlb
anon = mlb.startswith('000')
with open(args.board_db, 'r') as fh:
db = json.load(fh)
supported = {}
session = get_session(args)
generic_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_ZERO,
diag=False, os_type='latest')
for model in db:
try:
if anon:
# For anonymous lookup check when given model does not match latest.
model_latest = get_image_info(session, bid=model, mlb=MLB_ZERO,
diag=False, os_type='latest')
if model_latest[INFO_PRODUCT] != generic_latest[INFO_PRODUCT]:
if db[model] == 'current':
print('WARN: Skipped {} due to using latest product {} instead of {}'.format(
model, model_latest[INFO_PRODUCT], generic_latest[INFO_PRODUCT]))
continue
user_default = get_image_info(session, bid=model, mlb=mlb,
diag=False, os_type='default')
if user_default[INFO_PRODUCT] != generic_latest[INFO_PRODUCT]:
supported[model] = [db[model], user_default[INFO_PRODUCT], generic_latest[INFO_PRODUCT]]
else:
# For normal lookup check when given model has mismatching normal and latest.
user_latest = get_image_info(session, bid=model, mlb=mlb,
diag=False, os_type='latest')
user_default = get_image_info(session, bid=model, mlb=mlb,
diag=False, os_type='default')
if user_latest[INFO_PRODUCT] != user_default[INFO_PRODUCT]:
supported[model] = [db[model], user_default[INFO_PRODUCT], user_latest[INFO_PRODUCT]]
except Exception as e:
print('WARN: Failed to check {}, exception: {}'.format(model, str(e)))
if len(supported) > 0:
print('SUCCESS: MLB {} looks supported for:'.format(mlb))
for model in supported:
print('- {}, up to {}, default: {}, latest: {}'.format(model, supported[model][0],
supported[model][1], supported[model][2]))
return 0
print('UNKNOWN: Failed to determine supported models for MLB {}!'.format(mlb))
def main():
parser = argparse.ArgumentParser(description='Gather recovery information for Macs')
parser.add_argument('action', choices = ['download', 'selfcheck', 'verify', 'guess'],
help='Action to perform: "download" - performs recovery downloading,'
' "selfcheck" checks whether MLB serial validation is possible, "verify" performs'
' MLB serial verification, "guess" tries to find suitable mac model for MLB.')
parser.add_argument('-o', '--outdir', type=str, default=os.getcwd(),
help='customise output directory for downloading, defaults to current directory')
parser.add_argument('-n', '--basename', type=str, default='',
help='customise base name for downloading, defaults to remote name')
parser.add_argument('-b', '--board-id', type=str, default=RECENT_MAC,
help='use specified board identifier for downloading, defaults to ' + RECENT_MAC)
parser.add_argument('-m', '--mlb', type=str, default=MLB_ZERO,
help='use specified logic board serial for downloading, defaults to ' + MLB_ZERO)
parser.add_argument('-e', '--code', type=str, default='',
help='generate product logic board serial with specified product EEEE code')
parser.add_argument('-os', '--os-type', type=str, default='default', choices = ['default', 'latest'],
help='use specified os type, defaults to default ' + MLB_ZERO)
parser.add_argument('-diag', '--diagnostics', action='store_true', help='download diagnostics image')
parser.add_argument('-v', '--verbose', action='store_true', help='print debug information')
parser.add_argument('-db', '--board-db', type=str, default=os.path.join(SELF_DIR, 'boards.json'),
help='use custom board list for checking, defaults to boards.json')
args = parser.parse_args()
if args.code != '':
args.mlb = mlb_from_eeee(args.code)
if len(args.mlb) != 17:
print('ERROR: Cannot use MLBs in non 17 character format!')
sys.exit(1)
if args.action == 'download':
return action_download(args)
elif args.action == 'selfcheck':
return action_selfcheck(args)
elif args.action == 'verify':
return action_verify(args)
elif args.action == 'guess':
return action_guess(args)
else:
assert(False)
if __name__ == '__main__':
sys.exit(main())

107
package.nix Normal file
View File

@ -0,0 +1,107 @@
{ lib
, fetchFromGitHub
, installShellFiles
, makeWrapper
, stdenv
, testers
, cdrtools
, curl
, gawk
, glxinfo
, gnugrep
, gnused
, jq
, pciutils
, procps
, python3
, qemu_full
, samba
, socat
, spice-gtk
, swtpm
, unzip
, usbutils
, util-linux
, xdg-user-dirs
, xrandr
, zsync
, OVMF
, OVMFFull
, quickemu
}:
let
runtimePaths = [
cdrtools
curl
gawk
gnugrep
gnused
jq
pciutils
procps
python3
qemu_full
samba
socat
swtpm
unzip
util-linux
xrandr
zsync
OVMF
OVMFFull
] ++ lib.optionals stdenv.isLinux [
glxinfo
usbutils
xdg-user-dirs
];
versionMatches =
builtins.match ''
.*
readonly[[:blank:]]VERSION="([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+)"
.*
'' (builtins.readFile ./quickemu);
in
stdenv.mkDerivation rec {
pname = "quickemu";
version = builtins.concatStringsSep "" versionMatches;
src = lib.cleanSource ./.;
postPatch = ''
sed -i \
-e '/OVMF_CODE_4M.secboot.fd/s|ovmfs=(|ovmfs=("${OVMFFull.firmware}","${OVMFFull.variables}" |' \
-e '/OVMF_CODE_4M.fd/s|ovmfs=(|ovmfs=("${OVMF.firmware}","${OVMF.variables}" |' \
-e '/cp "''${VARS_IN}" "''${VARS_OUT}"/a chmod +w "''${VARS_OUT}"' \
-e 's,\$(command -v smbd),${samba}/bin/smbd,' \
quickemu
'';
nativeBuildInputs = [ makeWrapper installShellFiles ];
installPhase = ''
runHook preInstall
installManPage docs/quickget.1 docs/quickemu.1 docs/quickemu_conf.5
install -Dm755 -t "$out/bin" chunkcheck quickemu quickget quickreport
# spice-gtk needs to be put in suffix so that when virtualisation.spiceUSBRedirection
# is enabled, the wrapped spice-client-glib-usb-acl-helper is used
for f in chunkcheck quickget quickemu quickreport; do
wrapProgram $out/bin/$f \
--prefix PATH : "${lib.makeBinPath runtimePaths}" \
--suffix PATH : "${lib.makeBinPath [ spice-gtk ]}"
done
runHook postInstall
'';
passthru.tests = testers.testVersion { package = quickemu; };
meta = {
description = "Quickly create and run optimised Windows, macOS and Linux virtual machines";
homepage = "https://github.com/quickemu-project/quickemu";
mainProgram = "quickemu";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fedx-sudo flexiondotorg ];
};
}

3586
quickemu

File diff suppressed because it is too large Load Diff

3599
quickget

File diff suppressed because it is too large Load Diff

121
quickreport Executable file
View File

@ -0,0 +1,121 @@
#!/usr/bin/env bash
quick_report() {
local GPUS
local OS_KERNEL
local PRETTY_NAME
local QUICKEMU
local VERSION
OS_KERNEL=$(uname -s)
if [ "${OS_KERNEL}" == "Darwin" ]; then
# Get macOS product name and version using swvers
if [ -x "$(command -v sw_vers)" ]; then
PRETTY_NAME="$(sw_vers -productName) $(sw_vers -productVersion)"
else
PRETTY_NAME="macOS"
fi
elif [ -e /etc/os-release ]; then
PRETTY_NAME=$(grep PRETTY_NAME /etc/os-release | cut -d'"' -f2)
else
PRETTY_NAME="Unknown OS"
fi
CWD="$(dirname "${0}")"
if [ -x "${CWD}/quickemu" ]; then
QUICKEMU="${CWD}/quickemu"
elif [ -x "$(command -v quickemu)" ]; then
QUICKEMU="$(command -v quickemu)"
fi
if [ -n "${QUICKEMU}" ]; then
VERSION=$(${QUICKEMU} --version)
echo \
"----------------------------------
Quickemu ${VERSION}
----------------------------------"
echo -e "Distro:\t${PRETTY_NAME}"
echo -e "Kernel:\t$(uname -s -r -m)"
if [ "${OS_KERNEL}" == "Darwin" ]; then
echo -e "Memory:\t$(($(sysctl -n hw.memsize) / (1048576*1024)))G"
else
# Determine the number of gigabytes of RAM in the host by extracting the first numerical value from the output.
echo -e "Memory:\t$(free --giga -h | tr ' ' '\n' | grep -m 1 "[0-9]" | cut -d'G' -f 1)G"
fi
# Break IFS on new line
IFS=$'\n'
if [ "${OS_KERNEL}" == "Darwin" ]; then
# Get GPU information using system_profiler
GPUS=$(system_profiler SPDisplaysDataType | grep "Chipset Model" | awk -F: '{print $2}' | sed 's/^ *//')
else
GPUS=$(lspci | grep -i vga | cut -d':' -f3)
fi
if [ "$(echo "${GPUS}" | wc -l)" -eq 1 ]; then
echo "GPU:"
else
echo "GPUs:"
fi
for GPU in ${GPUS}; do
echo " -${GPU}"
done
else
echo \
"----------------------------------
Quickemu missing!
----------------------------------"
exit 1
fi
if command -v curl &> /dev/null; then
VERSION=$(curl --version)
echo \
"----------------------------------
curl $(echo "${VERSION}" | head -n 1 | cut -d' ' -f2)
----------------------------------"
echo -e "Libraries:$(echo "${VERSION}" | head -n 1 | cut -d')' -f2-)"
echo -e "Protocols:$(echo "${VERSION}" | tail -n +3 | head -n 1 | cut -d':' -f2-)"
echo -e "Features: $(echo "${VERSION}" | tail -n +4 | head -n 1 | cut -d':' -f2-)"
else
echo \
"----------------------------------
curl missing
----------------------------------"
fi
local HOST_ARCH
HOST_ARCH=$(uname -m)
local QEMU_ARCH="${HOST_ARCH}"
if [ "${HOST_ARCH}" == "arm64" ]; then
QEMU_ARCH="aarch64"
fi
if command -v "qemu-system-${QEMU_ARCH}" &> /dev/null; then
VERSION=$("qemu-system-${QEMU_ARCH}" --version | head -n 1 | cut -d' ' -f4)
echo \
"----------------------------------
QEMU ${VERSION}
----------------------------------"
"qemu-system-${QEMU_ARCH}" -cpu help
else
echo \
"----------------------------------
QEMU missing
----------------------------------"
fi
echo \
"----------------------------------
CPU
----------------------------------"
if [ "${OS_KERNEL}" == "Darwin" ]; then
sysctl -n machdep.cpu.brand_string
else
lscpu
fi
}
clear
quick_report | tee quickreport.txt

View File

@ -1,85 +0,0 @@
#!/usr/bin/env python3
import html.parser
import os
import sys
import urllib.request
"""
Download Windows product keys from MicroSoft
"""
key_page_url = "https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys"
def usage():
script = os.path.basename(sys.argv[0])
message = f"""Usage: {script} [windows-version]
To specify the version of Windows you'd like, pass a string that matches the
name of the operating system you'd like to download. Case doesn't matter, so
you can use "windows 10" or "Windows 10".
e.g.
{script} "Windows 10"
{script} "enterprise"
"""
print(message, file=sys.stderr)
sys.exit(0)
def download_page(url):
response = urllib.request.urlopen(url)
return response.read().decode("utf-8")
class WindowsKeyPageParser(html.parser.HTMLParser):
def __init__(self, *, convert_charrefs=True):
super().__init__(convert_charrefs=True)
self.product_keys = {}
self.parsing_os = False
def handle_starttag(self, tag, attrs):
self.parsing_os = tag == "td"
def handle_endtag(self, tag):
self.parsing_os = False
def handle_data(self, data):
if self.parsing_os:
self.stash_table_cell(data)
def stash_table_cell(self, data):
if "Windows" in data:
self.current_os = data
else:
product_key = data
self.product_keys[self.current_os] = product_key
def find_keys_for_all_versions(markup):
parser = WindowsKeyPageParser()
parser.feed(markup)
return parser.product_keys
if __name__ == "__main__":
try:
arg = sys.argv[1]
except IndexError:
windows_version = ""
else:
if arg in ["-h", "--help"]:
usage()
windows_version = arg
markup = download_page(key_page_url)
product_keys = find_keys_for_all_versions(markup)
for os_name, product_key in product_keys.items():
if windows_version.lower() in os_name.lower():
print(f"{os_name}: {product_key}")