1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# AeroCore OS
A customized Bazzite-deck image tailored for living-room HTPCs, featuring China-localized updates and an integrated game accelerator.
AeroCore OS is built on top of the `ublue-os/image-template` ecosystem. Unlike a heavy fork of `ublue-os/bazzite`, AeroCore OS adopts a **layered architecture** that starts directly from a pre-built upstream Bazzite image:
```dockerfile
FROM ghcr.io/ublue-os/bazzite-deck:stable
```
By focusing strictly on file overlays and configuration writing, this build intentionally avoids invasive operations like `dnf5 install/remove`, COPR enablement, akmods pulls, or kernel recompilations. This architectural choice keeps AeroCore OS completely immune to Fedora/COPR dependency drift during major upstream transition windows (e.g., Bazzite 43 to 44).
## AeroCore Booster integration
Image builds download the selected AeroCore Booster release from
`AeroCore-IO/booster-installer`, verify its published SHA-256 checksum, and
store the complete release seed under `/usr/share/aerocore-booster-release`.
The release installer runs once for the first active graphical user and copies
the application into that user's XDG directories. After bootstrapping, updates
and uninstallation remain owned by the normal Instruments user-space installer.
The bootstrap completion marker is stored at
`/var/lib/aerocore/instruments-bootstrap-complete`, so uninstalling the user
application does not cause the image seed to reinstall it on the next boot.
Remove that marker and enable `aerocore-instruments-setup.service` to explicitly
bootstrap the application again.
Set `INSTRUMENTS_VERSION` to a release tag for reproducible builds, or leave it
as `latest` for rolling development images. Set `INSTRUMENTS_ENABLED=false` to
build without Booster. The release repository and API base can be overridden
with `INSTRUMENTS_RELEASE_REPOSITORY` and `INSTRUMENTS_RELEASE_API_BASE`.
---
## Key Features & Optimizations
* **Couch-Gaming Tailored:** Optimized settings for a seamless, out-of-the-box living-room console experience.
* **China-Localized Mirrors:** Pre-configured environment setups (e.g., `/etc/environment.d/99-aerocore-mirrors.conf`) utilizing low-latency, mainland China-hosted update streams.
* **Integrated Game Accelerator:** Embedded network booster configuration to ensure low-latency connection for Steam and local gaming services.
* **Maintainable Overlay Structure:** Structured `system_files/` directory for robust, long-term AeroCore core file injection without touching upstream packages.
## Local Build
To build AeroCore OS locally, you may create a private `.env` from the
committed template and edit it to match your target configuration:
```bash
cp image-template.env .env
# edit .env
```
`.env` is ignored by Git and optional. When it is absent, Just reads the
required values from the runtime environment. Variables supplied by the shell
or CI environment override matching values in `.env`, so you can test a
different upstream base without changing files.
To test a different upstream base image directly without modifying the environment files:
```bash
BASE_IMAGE=ghcr.io/ublue-os/bazzite-deck:testing just build
```
To build the Bazzite-style live ISO locally, first build the AeroCore
image and then run:
```bash
sudo just build
just build-live-iso
just run-installer-iso
```
This requires privileged Podman, a rootful Podman API socket, `git`, and
roughly 70 GiB of free space. Local ISO generation uses the same pinned
Titanoboa builder as the live ISO workflow, and writes the ISO plus its
SHA-256 checksum under `output/`.
|