From 455d63f408c929ad59aab589dda20ba77d769047 Mon Sep 17 00:00:00 2001 From: tranch Date: Fri, 10 Jul 2026 18:59:48 +0800 Subject: Complete OS rename metadata migration Move the image metadata and desktop naming to the new AeroCore OS\nidentity, and wire the build so the generated os-release data is\nwritten during image construction. --- Containerfile | 8 +++- build_files/image-info | 78 +++++++++++++++++++++++++++++++++ system_files/etc/xdg/kcm-about-distrorc | 5 +++ 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100755 build_files/image-info create mode 100644 system_files/etc/xdg/kcm-about-distrorc diff --git a/Containerfile b/Containerfile index 976da0c..7e029a4 100644 --- a/Containerfile +++ b/Containerfile @@ -7,6 +7,11 @@ COPY system_files /system_files # Base Image FROM ${BASE_IMAGE} +ARG IMAGE_NAME="aerocore-bazzite-image" +ARG IMAGE_VENDOR="AeroCore-IO" +ARG IMAGE_BRANCH="stable" +ARG VERSION_TAG="latest" +ARG VERSION_PRETTY="latest" ## Other possible base images include: # ghcr.io/ublue-os/bazzite-deck:testing # ghcr.io/ublue-os/bazzite-deck:stable-43.20260420 @@ -35,7 +40,8 @@ RUN --mount=type=bind,from=ctx,source=/,target=/ctx \ --mount=type=cache,dst=/var/cache \ --mount=type=cache,dst=/var/log \ --mount=type=tmpfs,dst=/tmp \ - /ctx/build.sh + /ctx/build.sh && \ + /ctx/image-info ### LINTING ## Verify final image and contents are correct. diff --git a/build_files/image-info b/build_files/image-info new file mode 100755 index 0000000..d441917 --- /dev/null +++ b/build_files/image-info @@ -0,0 +1,78 @@ +#!/usr/bin/bash + +set -eoux pipefail + +IMAGE_PRETTY_NAME="AeroCore OS" +IMAGE_ID="aerocore" +IMAGE_LIKE="fedora" +HOME_URL="https://os.aerocore.com.cn" +DOCUMENTATION_URL="https://docs.os.aerocore.com.cn" +SUPPORT_URL="https://os.aerocore.com.cn/support" +BUG_SUPPORT_URL="https://github.com/AeroCore-IO/AeroCore-OS/issues/" +LOGO_ICON="distributor-logo" +LOGO_COLOR="0;38;2;12;109;129" + +IMAGE_INFO="/usr/share/ublue-os/image-info.json" +OSTREE_REGISTRY="${OSTREE_REGISTRY:-docker://ghcr.io}" +OSTREE_NAMESPACE="${OSTREE_NAMESPACE:-$IMAGE_VENDOR}" +IMAGE_REF="ostree-image-signed:${OSTREE_REGISTRY%/}/$OSTREE_NAMESPACE/$IMAGE_NAME" +IMAGE_BRANCH_NORMALIZED="$IMAGE_BRANCH" +BASE_IMAGE_NAME="bazzite-deck" + +if [[ $IMAGE_BRANCH_NORMALIZED == "main" ]]; then + IMAGE_BRANCH_NORMALIZED="stable" +fi + +FEDORA_VERSION=$(rpm -E %fedora) + +mkdir -p "$(dirname "$IMAGE_INFO")" +cat > "$IMAGE_INFO" < /etc/system-release + +if grep -q '^BUILD_ID=' /usr/lib/os-release; then + sed -i "s/^BUILD_ID=.*/BUILD_ID=\"$VERSION_PRETTY\"/" /usr/lib/os-release +else + echo "BUILD_ID=\"$VERSION_PRETTY\"" >> /usr/lib/os-release +fi + +if grep -q '^BOOTLOADER_NAME=' /usr/lib/os-release; then + sed -i "s/^BOOTLOADER_NAME=.*/BOOTLOADER_NAME=\"$IMAGE_PRETTY_NAME $VERSION_PRETTY\"/" /usr/lib/os-release +else + echo "BOOTLOADER_NAME=\"$IMAGE_PRETTY_NAME $VERSION_PRETTY\"" >> /usr/lib/os-release +fi + +# Keep hibernation images tied to this exact image version. +if grep -q '^IMAGE_ID=' /usr/lib/os-release; then + sed -i "s/^IMAGE_ID=.*/IMAGE_ID=\"$IMAGE_NAME-$VERSION_TAG\"/" /usr/lib/os-release +else + echo "IMAGE_ID=\"$IMAGE_NAME-$VERSION_TAG\"" >> /usr/lib/os-release +fi diff --git a/system_files/etc/xdg/kcm-about-distrorc b/system_files/etc/xdg/kcm-about-distrorc new file mode 100644 index 0000000..ed2c831 --- /dev/null +++ b/system_files/etc/xdg/kcm-about-distrorc @@ -0,0 +1,5 @@ +[General] +LogoPath=/usr/share/pixmaps/system-logo-white.png +Name=AeroCore OS +Website=https://os.aerocore.com.cn +Variant=Handheld & HTPC Edition -- cgit v1.2.3 From 54a1a1528fca614ec5fcb8a3e55129a5b822a646 Mon Sep 17 00:00:00 2001 From: tranch Date: Sun, 12 Jul 2026 17:47:10 +0800 Subject: Migrate AeroCore logo assets Import AeroCore branding assets from the Bazzite branding commits. --- .../share/plymouth/themes/spinner/watermark.png | Bin 0 -> 4140 bytes .../shared/usr/share/ublue-os/bazzite/docs.svg | 23 +++++++++++++++ .../shared/usr/share/ublue-os/bazzite/logo.svg | 19 +++++++++++++ .../usr/share/ublue-os/bazzite/updatelogo.png | Bin 0 -> 61110 bytes .../icons/hicolor/128x128/bazzite-logo-icon.png | Bin 0 -> 5613 bytes .../icons/hicolor/16x16/bazzite-logo-icon.png | Bin 0 -> 634 bytes .../icons/hicolor/22x22/bazzite-logo-icon.png | Bin 0 -> 837 bytes .../icons/hicolor/24x24/bazzite-logo-icon.png | Bin 0 -> 921 bytes .../icons/hicolor/256x256/bazzite-logo-icon.png | Bin 0 -> 12105 bytes .../icons/hicolor/32x32/bazzite-logo-icon.png | Bin 0 -> 1203 bytes .../icons/hicolor/36x36/bazzite-logo-icon.png | Bin 0 -> 1345 bytes .../icons/hicolor/48x48/bazzite-logo-icon.png | Bin 0 -> 1853 bytes .../icons/hicolor/64x64/bazzite-logo-icon.png | Bin 0 -> 2571 bytes .../icons/hicolor/96x96/bazzite-logo-icon.png | Bin 0 -> 4083 bytes .../hicolor/scalable/places/bazzite-logo-le.svg | 19 +++++++++++++ .../scalable/places/distributor-logo-white.svg | 11 ++++++++ .../hicolor/scalable/places/distributor-logo.svg | 19 +++++++++++++ .../usr/share/pixmaps/bazzite-logo-le.svg | 19 +++++++++++++ .../usr/share/pixmaps/bootloader/fedora.icns | Bin 0 -> 15377 bytes .../usr/share/pixmaps/combination_med.png | Bin 0 -> 76166 bytes .../usr/share/pixmaps/fedora-gdm-logo.png | Bin 0 -> 8908 bytes .../usr/share/pixmaps/fedora-logo-small.png | Bin 0 -> 9520 bytes .../usr/share/pixmaps/fedora-logo-sprite.png | Bin 0 -> 15673 bytes .../usr/share/pixmaps/fedora-logo-sprite.svg | 19 +++++++++++++ .../overrides/usr/share/pixmaps/fedora-logo.png | Bin 0 -> 48311 bytes .../usr/share/pixmaps/fedora_logo_med.png | Bin 0 -> 11667 bytes .../usr/share/pixmaps/fedora_whitelogo.png | Bin 0 -> 71205 bytes .../usr/share/pixmaps/fedora_whitelogo.svg | 31 +++++++++++++++++++++ .../usr/share/pixmaps/fedora_whitelogo_med.png | Bin 0 -> 10651 bytes .../usr/share/pixmaps/system-logo-white.png | Bin 0 -> 53377 bytes 30 files changed, 160 insertions(+) create mode 100644 system_files/desktop/shared/usr/share/plymouth/themes/spinner/watermark.png create mode 100644 system_files/desktop/shared/usr/share/ublue-os/bazzite/docs.svg create mode 100644 system_files/desktop/shared/usr/share/ublue-os/bazzite/logo.svg create mode 100644 system_files/desktop/shared/usr/share/ublue-os/bazzite/updatelogo.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png create mode 100644 system_files/overrides/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg create mode 100644 system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg create mode 100644 system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo.svg create mode 100644 system_files/overrides/usr/share/pixmaps/bazzite-logo-le.svg create mode 100644 system_files/overrides/usr/share/pixmaps/bootloader/fedora.icns create mode 100644 system_files/overrides/usr/share/pixmaps/combination_med.png create mode 100644 system_files/overrides/usr/share/pixmaps/fedora-gdm-logo.png create mode 100644 system_files/overrides/usr/share/pixmaps/fedora-logo-small.png create mode 100644 system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.png create mode 100644 system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.svg create mode 100644 system_files/overrides/usr/share/pixmaps/fedora-logo.png create mode 100644 system_files/overrides/usr/share/pixmaps/fedora_logo_med.png create mode 100644 system_files/overrides/usr/share/pixmaps/fedora_whitelogo.png create mode 100644 system_files/overrides/usr/share/pixmaps/fedora_whitelogo.svg create mode 100644 system_files/overrides/usr/share/pixmaps/fedora_whitelogo_med.png create mode 100644 system_files/overrides/usr/share/pixmaps/system-logo-white.png diff --git a/system_files/desktop/shared/usr/share/plymouth/themes/spinner/watermark.png b/system_files/desktop/shared/usr/share/plymouth/themes/spinner/watermark.png new file mode 100644 index 0000000..4b53dd2 Binary files /dev/null and b/system_files/desktop/shared/usr/share/plymouth/themes/spinner/watermark.png differ diff --git a/system_files/desktop/shared/usr/share/ublue-os/bazzite/docs.svg b/system_files/desktop/shared/usr/share/ublue-os/bazzite/docs.svg new file mode 100644 index 0000000..a7e16e7 --- /dev/null +++ b/system_files/desktop/shared/usr/share/ublue-os/bazzite/docs.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/system_files/desktop/shared/usr/share/ublue-os/bazzite/logo.svg b/system_files/desktop/shared/usr/share/ublue-os/bazzite/logo.svg new file mode 100644 index 0000000..bd0dae2 --- /dev/null +++ b/system_files/desktop/shared/usr/share/ublue-os/bazzite/logo.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/desktop/shared/usr/share/ublue-os/bazzite/updatelogo.png b/system_files/desktop/shared/usr/share/ublue-os/bazzite/updatelogo.png new file mode 100644 index 0000000..1b3cb8a Binary files /dev/null and b/system_files/desktop/shared/usr/share/ublue-os/bazzite/updatelogo.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png new file mode 100644 index 0000000..30cd4aa Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png new file mode 100644 index 0000000..e7d57f9 Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png new file mode 100644 index 0000000..f368a0a Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png new file mode 100644 index 0000000..b722b22 Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png new file mode 100644 index 0000000..b7acaa2 Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png new file mode 100644 index 0000000..54e23b2 Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png new file mode 100644 index 0000000..ff03f27 Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png new file mode 100644 index 0000000..977f02e Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png new file mode 100644 index 0000000..74477a7 Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png new file mode 100644 index 0000000..ea0d730 Binary files /dev/null and b/system_files/overrides/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png differ diff --git a/system_files/overrides/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg b/system_files/overrides/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg new file mode 100644 index 0000000..291b91c --- /dev/null +++ b/system_files/overrides/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg b/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg new file mode 100644 index 0000000..5f58794 --- /dev/null +++ b/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg @@ -0,0 +1,11 @@ + + + distributor-logo-white + + + + + + + + diff --git a/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo.svg b/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo.svg new file mode 100644 index 0000000..291b91c --- /dev/null +++ b/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/overrides/usr/share/pixmaps/bazzite-logo-le.svg b/system_files/overrides/usr/share/pixmaps/bazzite-logo-le.svg new file mode 100644 index 0000000..bd0dae2 --- /dev/null +++ b/system_files/overrides/usr/share/pixmaps/bazzite-logo-le.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/overrides/usr/share/pixmaps/bootloader/fedora.icns b/system_files/overrides/usr/share/pixmaps/bootloader/fedora.icns new file mode 100644 index 0000000..c16933f Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/bootloader/fedora.icns differ diff --git a/system_files/overrides/usr/share/pixmaps/combination_med.png b/system_files/overrides/usr/share/pixmaps/combination_med.png new file mode 100644 index 0000000..2f75183 Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/combination_med.png differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora-gdm-logo.png b/system_files/overrides/usr/share/pixmaps/fedora-gdm-logo.png new file mode 100644 index 0000000..b903599 Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/fedora-gdm-logo.png differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora-logo-small.png b/system_files/overrides/usr/share/pixmaps/fedora-logo-small.png new file mode 100644 index 0000000..02e6d48 Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/fedora-logo-small.png differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.png b/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.png new file mode 100644 index 0000000..1f02770 Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.png differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.svg b/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.svg new file mode 100644 index 0000000..bd0dae2 --- /dev/null +++ b/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/overrides/usr/share/pixmaps/fedora-logo.png b/system_files/overrides/usr/share/pixmaps/fedora-logo.png new file mode 100644 index 0000000..55d2a45 Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/fedora-logo.png differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora_logo_med.png b/system_files/overrides/usr/share/pixmaps/fedora_logo_med.png new file mode 100644 index 0000000..e5b8db5 Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/fedora_logo_med.png differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.png b/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.png new file mode 100644 index 0000000..66e2c3e Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.png differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.svg b/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.svg new file mode 100644 index 0000000..372e337 --- /dev/null +++ b/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.svg @@ -0,0 +1,31 @@ + + + AeroCoreLogo_WhiteText + + + + + + + + diff --git a/system_files/overrides/usr/share/pixmaps/fedora_whitelogo_med.png b/system_files/overrides/usr/share/pixmaps/fedora_whitelogo_med.png new file mode 100644 index 0000000..3b12a8c Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/fedora_whitelogo_med.png differ diff --git a/system_files/overrides/usr/share/pixmaps/system-logo-white.png b/system_files/overrides/usr/share/pixmaps/system-logo-white.png new file mode 100644 index 0000000..60349b2 Binary files /dev/null and b/system_files/overrides/usr/share/pixmaps/system-logo-white.png differ -- cgit v1.2.3 From 664753059edb7b62e829e058f5c7e187b2437cb5 Mon Sep 17 00:00:00 2001 From: tranch Date: Sun, 12 Jul 2026 17:49:39 +0800 Subject: Fix logo overlay paths Place branding assets under the paths copied directly into the image. --- .../share/plymouth/themes/spinner/watermark.png | Bin 4140 -> 0 bytes .../shared/usr/share/ublue-os/bazzite/docs.svg | 23 --------------- .../shared/usr/share/ublue-os/bazzite/logo.svg | 19 ------------- .../usr/share/ublue-os/bazzite/updatelogo.png | Bin 61110 -> 0 bytes .../icons/hicolor/128x128/bazzite-logo-icon.png | Bin 5613 -> 0 bytes .../icons/hicolor/16x16/bazzite-logo-icon.png | Bin 634 -> 0 bytes .../icons/hicolor/22x22/bazzite-logo-icon.png | Bin 837 -> 0 bytes .../icons/hicolor/24x24/bazzite-logo-icon.png | Bin 921 -> 0 bytes .../icons/hicolor/256x256/bazzite-logo-icon.png | Bin 12105 -> 0 bytes .../icons/hicolor/32x32/bazzite-logo-icon.png | Bin 1203 -> 0 bytes .../icons/hicolor/36x36/bazzite-logo-icon.png | Bin 1345 -> 0 bytes .../icons/hicolor/48x48/bazzite-logo-icon.png | Bin 1853 -> 0 bytes .../icons/hicolor/64x64/bazzite-logo-icon.png | Bin 2571 -> 0 bytes .../icons/hicolor/96x96/bazzite-logo-icon.png | Bin 4083 -> 0 bytes .../hicolor/scalable/places/bazzite-logo-le.svg | 19 ------------- .../scalable/places/distributor-logo-white.svg | 11 -------- .../hicolor/scalable/places/distributor-logo.svg | 19 ------------- .../usr/share/pixmaps/bazzite-logo-le.svg | 19 ------------- .../usr/share/pixmaps/bootloader/fedora.icns | Bin 15377 -> 0 bytes .../usr/share/pixmaps/combination_med.png | Bin 76166 -> 0 bytes .../usr/share/pixmaps/fedora-gdm-logo.png | Bin 8908 -> 0 bytes .../usr/share/pixmaps/fedora-logo-small.png | Bin 9520 -> 0 bytes .../usr/share/pixmaps/fedora-logo-sprite.png | Bin 15673 -> 0 bytes .../usr/share/pixmaps/fedora-logo-sprite.svg | 19 ------------- .../overrides/usr/share/pixmaps/fedora-logo.png | Bin 48311 -> 0 bytes .../usr/share/pixmaps/fedora_logo_med.png | Bin 11667 -> 0 bytes .../usr/share/pixmaps/fedora_whitelogo.png | Bin 71205 -> 0 bytes .../usr/share/pixmaps/fedora_whitelogo.svg | 31 --------------------- .../usr/share/pixmaps/fedora_whitelogo_med.png | Bin 10651 -> 0 bytes .../usr/share/pixmaps/system-logo-white.png | Bin 53377 -> 0 bytes .../icons/hicolor/128x128/bazzite-logo-icon.png | Bin 0 -> 5613 bytes .../icons/hicolor/16x16/bazzite-logo-icon.png | Bin 0 -> 634 bytes .../icons/hicolor/22x22/bazzite-logo-icon.png | Bin 0 -> 837 bytes .../icons/hicolor/24x24/bazzite-logo-icon.png | Bin 0 -> 921 bytes .../icons/hicolor/256x256/bazzite-logo-icon.png | Bin 0 -> 12105 bytes .../icons/hicolor/32x32/bazzite-logo-icon.png | Bin 0 -> 1203 bytes .../icons/hicolor/36x36/bazzite-logo-icon.png | Bin 0 -> 1345 bytes .../icons/hicolor/48x48/bazzite-logo-icon.png | Bin 0 -> 1853 bytes .../icons/hicolor/64x64/bazzite-logo-icon.png | Bin 0 -> 2571 bytes .../icons/hicolor/96x96/bazzite-logo-icon.png | Bin 0 -> 4083 bytes .../hicolor/scalable/places/bazzite-logo-le.svg | 19 +++++++++++++ .../scalable/places/distributor-logo-white.svg | 11 ++++++++ .../hicolor/scalable/places/distributor-logo.svg | 19 +++++++++++++ system_files/usr/share/pixmaps/bazzite-logo-le.svg | 19 +++++++++++++ .../usr/share/pixmaps/bootloader/fedora.icns | Bin 0 -> 15377 bytes system_files/usr/share/pixmaps/combination_med.png | Bin 0 -> 76166 bytes system_files/usr/share/pixmaps/fedora-gdm-logo.png | Bin 0 -> 8908 bytes .../usr/share/pixmaps/fedora-logo-small.png | Bin 0 -> 9520 bytes .../usr/share/pixmaps/fedora-logo-sprite.png | Bin 0 -> 15673 bytes .../usr/share/pixmaps/fedora-logo-sprite.svg | 19 +++++++++++++ system_files/usr/share/pixmaps/fedora-logo.png | Bin 0 -> 48311 bytes system_files/usr/share/pixmaps/fedora_logo_med.png | Bin 0 -> 11667 bytes .../usr/share/pixmaps/fedora_whitelogo.png | Bin 0 -> 71205 bytes .../usr/share/pixmaps/fedora_whitelogo.svg | 31 +++++++++++++++++++++ .../usr/share/pixmaps/fedora_whitelogo_med.png | Bin 0 -> 10651 bytes .../usr/share/pixmaps/system-logo-white.png | Bin 0 -> 53377 bytes .../share/plymouth/themes/spinner/watermark.png | Bin 0 -> 4140 bytes system_files/usr/share/ublue-os/bazzite/docs.svg | 23 +++++++++++++++ system_files/usr/share/ublue-os/bazzite/logo.svg | 19 +++++++++++++ .../usr/share/ublue-os/bazzite/updatelogo.png | Bin 0 -> 61110 bytes 60 files changed, 160 insertions(+), 160 deletions(-) delete mode 100644 system_files/desktop/shared/usr/share/plymouth/themes/spinner/watermark.png delete mode 100644 system_files/desktop/shared/usr/share/ublue-os/bazzite/docs.svg delete mode 100644 system_files/desktop/shared/usr/share/ublue-os/bazzite/logo.svg delete mode 100644 system_files/desktop/shared/usr/share/ublue-os/bazzite/updatelogo.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png delete mode 100644 system_files/overrides/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg delete mode 100644 system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg delete mode 100644 system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo.svg delete mode 100644 system_files/overrides/usr/share/pixmaps/bazzite-logo-le.svg delete mode 100644 system_files/overrides/usr/share/pixmaps/bootloader/fedora.icns delete mode 100644 system_files/overrides/usr/share/pixmaps/combination_med.png delete mode 100644 system_files/overrides/usr/share/pixmaps/fedora-gdm-logo.png delete mode 100644 system_files/overrides/usr/share/pixmaps/fedora-logo-small.png delete mode 100644 system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.png delete mode 100644 system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.svg delete mode 100644 system_files/overrides/usr/share/pixmaps/fedora-logo.png delete mode 100644 system_files/overrides/usr/share/pixmaps/fedora_logo_med.png delete mode 100644 system_files/overrides/usr/share/pixmaps/fedora_whitelogo.png delete mode 100644 system_files/overrides/usr/share/pixmaps/fedora_whitelogo.svg delete mode 100644 system_files/overrides/usr/share/pixmaps/fedora_whitelogo_med.png delete mode 100644 system_files/overrides/usr/share/pixmaps/system-logo-white.png create mode 100644 system_files/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png create mode 100644 system_files/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg create mode 100644 system_files/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg create mode 100644 system_files/usr/share/icons/hicolor/scalable/places/distributor-logo.svg create mode 100644 system_files/usr/share/pixmaps/bazzite-logo-le.svg create mode 100644 system_files/usr/share/pixmaps/bootloader/fedora.icns create mode 100644 system_files/usr/share/pixmaps/combination_med.png create mode 100644 system_files/usr/share/pixmaps/fedora-gdm-logo.png create mode 100644 system_files/usr/share/pixmaps/fedora-logo-small.png create mode 100644 system_files/usr/share/pixmaps/fedora-logo-sprite.png create mode 100644 system_files/usr/share/pixmaps/fedora-logo-sprite.svg create mode 100644 system_files/usr/share/pixmaps/fedora-logo.png create mode 100644 system_files/usr/share/pixmaps/fedora_logo_med.png create mode 100644 system_files/usr/share/pixmaps/fedora_whitelogo.png create mode 100644 system_files/usr/share/pixmaps/fedora_whitelogo.svg create mode 100644 system_files/usr/share/pixmaps/fedora_whitelogo_med.png create mode 100644 system_files/usr/share/pixmaps/system-logo-white.png create mode 100644 system_files/usr/share/plymouth/themes/spinner/watermark.png create mode 100644 system_files/usr/share/ublue-os/bazzite/docs.svg create mode 100644 system_files/usr/share/ublue-os/bazzite/logo.svg create mode 100644 system_files/usr/share/ublue-os/bazzite/updatelogo.png diff --git a/system_files/desktop/shared/usr/share/plymouth/themes/spinner/watermark.png b/system_files/desktop/shared/usr/share/plymouth/themes/spinner/watermark.png deleted file mode 100644 index 4b53dd2..0000000 Binary files a/system_files/desktop/shared/usr/share/plymouth/themes/spinner/watermark.png and /dev/null differ diff --git a/system_files/desktop/shared/usr/share/ublue-os/bazzite/docs.svg b/system_files/desktop/shared/usr/share/ublue-os/bazzite/docs.svg deleted file mode 100644 index a7e16e7..0000000 --- a/system_files/desktop/shared/usr/share/ublue-os/bazzite/docs.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/system_files/desktop/shared/usr/share/ublue-os/bazzite/logo.svg b/system_files/desktop/shared/usr/share/ublue-os/bazzite/logo.svg deleted file mode 100644 index bd0dae2..0000000 --- a/system_files/desktop/shared/usr/share/ublue-os/bazzite/logo.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - AeroCoreIcon - - - - - - - - - - - - - - - - diff --git a/system_files/desktop/shared/usr/share/ublue-os/bazzite/updatelogo.png b/system_files/desktop/shared/usr/share/ublue-os/bazzite/updatelogo.png deleted file mode 100644 index 1b3cb8a..0000000 Binary files a/system_files/desktop/shared/usr/share/ublue-os/bazzite/updatelogo.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png deleted file mode 100644 index 30cd4aa..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png deleted file mode 100644 index e7d57f9..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png deleted file mode 100644 index f368a0a..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png deleted file mode 100644 index b722b22..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png deleted file mode 100644 index b7acaa2..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png deleted file mode 100644 index 54e23b2..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png deleted file mode 100644 index ff03f27..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png deleted file mode 100644 index 977f02e..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png deleted file mode 100644 index 74477a7..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png b/system_files/overrides/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png deleted file mode 100644 index ea0d730..0000000 Binary files a/system_files/overrides/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png and /dev/null differ diff --git a/system_files/overrides/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg b/system_files/overrides/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg deleted file mode 100644 index 291b91c..0000000 --- a/system_files/overrides/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - AeroCoreIcon - - - - - - - - - - - - - - - - diff --git a/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg b/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg deleted file mode 100644 index 5f58794..0000000 --- a/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - distributor-logo-white - - - - - - - - diff --git a/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo.svg b/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo.svg deleted file mode 100644 index 291b91c..0000000 --- a/system_files/overrides/usr/share/icons/hicolor/scalable/places/distributor-logo.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - AeroCoreIcon - - - - - - - - - - - - - - - - diff --git a/system_files/overrides/usr/share/pixmaps/bazzite-logo-le.svg b/system_files/overrides/usr/share/pixmaps/bazzite-logo-le.svg deleted file mode 100644 index bd0dae2..0000000 --- a/system_files/overrides/usr/share/pixmaps/bazzite-logo-le.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - AeroCoreIcon - - - - - - - - - - - - - - - - diff --git a/system_files/overrides/usr/share/pixmaps/bootloader/fedora.icns b/system_files/overrides/usr/share/pixmaps/bootloader/fedora.icns deleted file mode 100644 index c16933f..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/bootloader/fedora.icns and /dev/null differ diff --git a/system_files/overrides/usr/share/pixmaps/combination_med.png b/system_files/overrides/usr/share/pixmaps/combination_med.png deleted file mode 100644 index 2f75183..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/combination_med.png and /dev/null differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora-gdm-logo.png b/system_files/overrides/usr/share/pixmaps/fedora-gdm-logo.png deleted file mode 100644 index b903599..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/fedora-gdm-logo.png and /dev/null differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora-logo-small.png b/system_files/overrides/usr/share/pixmaps/fedora-logo-small.png deleted file mode 100644 index 02e6d48..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/fedora-logo-small.png and /dev/null differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.png b/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.png deleted file mode 100644 index 1f02770..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.png and /dev/null differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.svg b/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.svg deleted file mode 100644 index bd0dae2..0000000 --- a/system_files/overrides/usr/share/pixmaps/fedora-logo-sprite.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - AeroCoreIcon - - - - - - - - - - - - - - - - diff --git a/system_files/overrides/usr/share/pixmaps/fedora-logo.png b/system_files/overrides/usr/share/pixmaps/fedora-logo.png deleted file mode 100644 index 55d2a45..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/fedora-logo.png and /dev/null differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora_logo_med.png b/system_files/overrides/usr/share/pixmaps/fedora_logo_med.png deleted file mode 100644 index e5b8db5..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/fedora_logo_med.png and /dev/null differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.png b/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.png deleted file mode 100644 index 66e2c3e..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.png and /dev/null differ diff --git a/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.svg b/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.svg deleted file mode 100644 index 372e337..0000000 --- a/system_files/overrides/usr/share/pixmaps/fedora_whitelogo.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - AeroCoreLogo_WhiteText - - - - - - - - diff --git a/system_files/overrides/usr/share/pixmaps/fedora_whitelogo_med.png b/system_files/overrides/usr/share/pixmaps/fedora_whitelogo_med.png deleted file mode 100644 index 3b12a8c..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/fedora_whitelogo_med.png and /dev/null differ diff --git a/system_files/overrides/usr/share/pixmaps/system-logo-white.png b/system_files/overrides/usr/share/pixmaps/system-logo-white.png deleted file mode 100644 index 60349b2..0000000 Binary files a/system_files/overrides/usr/share/pixmaps/system-logo-white.png and /dev/null differ diff --git a/system_files/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png new file mode 100644 index 0000000..30cd4aa Binary files /dev/null and b/system_files/usr/share/icons/hicolor/128x128/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png new file mode 100644 index 0000000..e7d57f9 Binary files /dev/null and b/system_files/usr/share/icons/hicolor/16x16/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png new file mode 100644 index 0000000..f368a0a Binary files /dev/null and b/system_files/usr/share/icons/hicolor/22x22/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png new file mode 100644 index 0000000..b722b22 Binary files /dev/null and b/system_files/usr/share/icons/hicolor/24x24/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png new file mode 100644 index 0000000..b7acaa2 Binary files /dev/null and b/system_files/usr/share/icons/hicolor/256x256/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png new file mode 100644 index 0000000..54e23b2 Binary files /dev/null and b/system_files/usr/share/icons/hicolor/32x32/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png new file mode 100644 index 0000000..ff03f27 Binary files /dev/null and b/system_files/usr/share/icons/hicolor/36x36/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png new file mode 100644 index 0000000..977f02e Binary files /dev/null and b/system_files/usr/share/icons/hicolor/48x48/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png new file mode 100644 index 0000000..74477a7 Binary files /dev/null and b/system_files/usr/share/icons/hicolor/64x64/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png b/system_files/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png new file mode 100644 index 0000000..ea0d730 Binary files /dev/null and b/system_files/usr/share/icons/hicolor/96x96/bazzite-logo-icon.png differ diff --git a/system_files/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg b/system_files/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg new file mode 100644 index 0000000..291b91c --- /dev/null +++ b/system_files/usr/share/icons/hicolor/scalable/places/bazzite-logo-le.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg b/system_files/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg new file mode 100644 index 0000000..5f58794 --- /dev/null +++ b/system_files/usr/share/icons/hicolor/scalable/places/distributor-logo-white.svg @@ -0,0 +1,11 @@ + + + distributor-logo-white + + + + + + + + diff --git a/system_files/usr/share/icons/hicolor/scalable/places/distributor-logo.svg b/system_files/usr/share/icons/hicolor/scalable/places/distributor-logo.svg new file mode 100644 index 0000000..291b91c --- /dev/null +++ b/system_files/usr/share/icons/hicolor/scalable/places/distributor-logo.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/usr/share/pixmaps/bazzite-logo-le.svg b/system_files/usr/share/pixmaps/bazzite-logo-le.svg new file mode 100644 index 0000000..bd0dae2 --- /dev/null +++ b/system_files/usr/share/pixmaps/bazzite-logo-le.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/usr/share/pixmaps/bootloader/fedora.icns b/system_files/usr/share/pixmaps/bootloader/fedora.icns new file mode 100644 index 0000000..c16933f Binary files /dev/null and b/system_files/usr/share/pixmaps/bootloader/fedora.icns differ diff --git a/system_files/usr/share/pixmaps/combination_med.png b/system_files/usr/share/pixmaps/combination_med.png new file mode 100644 index 0000000..2f75183 Binary files /dev/null and b/system_files/usr/share/pixmaps/combination_med.png differ diff --git a/system_files/usr/share/pixmaps/fedora-gdm-logo.png b/system_files/usr/share/pixmaps/fedora-gdm-logo.png new file mode 100644 index 0000000..b903599 Binary files /dev/null and b/system_files/usr/share/pixmaps/fedora-gdm-logo.png differ diff --git a/system_files/usr/share/pixmaps/fedora-logo-small.png b/system_files/usr/share/pixmaps/fedora-logo-small.png new file mode 100644 index 0000000..02e6d48 Binary files /dev/null and b/system_files/usr/share/pixmaps/fedora-logo-small.png differ diff --git a/system_files/usr/share/pixmaps/fedora-logo-sprite.png b/system_files/usr/share/pixmaps/fedora-logo-sprite.png new file mode 100644 index 0000000..1f02770 Binary files /dev/null and b/system_files/usr/share/pixmaps/fedora-logo-sprite.png differ diff --git a/system_files/usr/share/pixmaps/fedora-logo-sprite.svg b/system_files/usr/share/pixmaps/fedora-logo-sprite.svg new file mode 100644 index 0000000..bd0dae2 --- /dev/null +++ b/system_files/usr/share/pixmaps/fedora-logo-sprite.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/usr/share/pixmaps/fedora-logo.png b/system_files/usr/share/pixmaps/fedora-logo.png new file mode 100644 index 0000000..55d2a45 Binary files /dev/null and b/system_files/usr/share/pixmaps/fedora-logo.png differ diff --git a/system_files/usr/share/pixmaps/fedora_logo_med.png b/system_files/usr/share/pixmaps/fedora_logo_med.png new file mode 100644 index 0000000..e5b8db5 Binary files /dev/null and b/system_files/usr/share/pixmaps/fedora_logo_med.png differ diff --git a/system_files/usr/share/pixmaps/fedora_whitelogo.png b/system_files/usr/share/pixmaps/fedora_whitelogo.png new file mode 100644 index 0000000..66e2c3e Binary files /dev/null and b/system_files/usr/share/pixmaps/fedora_whitelogo.png differ diff --git a/system_files/usr/share/pixmaps/fedora_whitelogo.svg b/system_files/usr/share/pixmaps/fedora_whitelogo.svg new file mode 100644 index 0000000..372e337 --- /dev/null +++ b/system_files/usr/share/pixmaps/fedora_whitelogo.svg @@ -0,0 +1,31 @@ + + + AeroCoreLogo_WhiteText + + + + + + + + diff --git a/system_files/usr/share/pixmaps/fedora_whitelogo_med.png b/system_files/usr/share/pixmaps/fedora_whitelogo_med.png new file mode 100644 index 0000000..3b12a8c Binary files /dev/null and b/system_files/usr/share/pixmaps/fedora_whitelogo_med.png differ diff --git a/system_files/usr/share/pixmaps/system-logo-white.png b/system_files/usr/share/pixmaps/system-logo-white.png new file mode 100644 index 0000000..60349b2 Binary files /dev/null and b/system_files/usr/share/pixmaps/system-logo-white.png differ diff --git a/system_files/usr/share/plymouth/themes/spinner/watermark.png b/system_files/usr/share/plymouth/themes/spinner/watermark.png new file mode 100644 index 0000000..4b53dd2 Binary files /dev/null and b/system_files/usr/share/plymouth/themes/spinner/watermark.png differ diff --git a/system_files/usr/share/ublue-os/bazzite/docs.svg b/system_files/usr/share/ublue-os/bazzite/docs.svg new file mode 100644 index 0000000..a7e16e7 --- /dev/null +++ b/system_files/usr/share/ublue-os/bazzite/docs.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/system_files/usr/share/ublue-os/bazzite/logo.svg b/system_files/usr/share/ublue-os/bazzite/logo.svg new file mode 100644 index 0000000..bd0dae2 --- /dev/null +++ b/system_files/usr/share/ublue-os/bazzite/logo.svg @@ -0,0 +1,19 @@ + + + AeroCoreIcon + + + + + + + + + + + + + + + + diff --git a/system_files/usr/share/ublue-os/bazzite/updatelogo.png b/system_files/usr/share/ublue-os/bazzite/updatelogo.png new file mode 100644 index 0000000..1b3cb8a Binary files /dev/null and b/system_files/usr/share/ublue-os/bazzite/updatelogo.png differ -- cgit v1.2.3 From 4f8c98d87405956489a3fd0a816eaa2196e52034 Mon Sep 17 00:00:00 2001 From: tranch Date: Sun, 12 Jul 2026 18:45:16 +0800 Subject: Add AeroCore SteamOS splash assets Add the desktop transition logo and replace the SteamOS update splash. --- .../contents/splash/images/bazzite_logo.svgz | Bin 0 -> 1384 bytes .../contents/splash/images/bazzite_logo.svgz | Bin 0 -> 1384 bytes system_files/usr/share/steamos/steamos.png | Bin 0 -> 20042 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/splash/images/bazzite_logo.svgz create mode 100644 system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/splash/images/bazzite_logo.svgz create mode 100644 system_files/usr/share/steamos/steamos.png diff --git a/system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/splash/images/bazzite_logo.svgz b/system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/splash/images/bazzite_logo.svgz new file mode 100644 index 0000000..0da602b Binary files /dev/null and b/system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/splash/images/bazzite_logo.svgz differ diff --git a/system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/splash/images/bazzite_logo.svgz b/system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/splash/images/bazzite_logo.svgz new file mode 100644 index 0000000..0da602b Binary files /dev/null and b/system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/splash/images/bazzite_logo.svgz differ diff --git a/system_files/usr/share/steamos/steamos.png b/system_files/usr/share/steamos/steamos.png new file mode 100644 index 0000000..3c75128 Binary files /dev/null and b/system_files/usr/share/steamos/steamos.png differ -- cgit v1.2.3 From def4f7576cbe1a3e5120fb552ae7415f4086ab8d Mon Sep 17 00:00:00 2001 From: tranch Date: Sun, 12 Jul 2026 19:52:33 +0800 Subject: chore: rename image name Change IMAGE_NAEME to aerocore-os --- Containerfile | 2 +- image-template.env | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Containerfile b/Containerfile index 7e029a4..cdcd945 100644 --- a/Containerfile +++ b/Containerfile @@ -7,7 +7,7 @@ COPY system_files /system_files # Base Image FROM ${BASE_IMAGE} -ARG IMAGE_NAME="aerocore-bazzite-image" +ARG IMAGE_NAME="aerocore-os" ARG IMAGE_VENDOR="AeroCore-IO" ARG IMAGE_BRANCH="stable" ARG VERSION_TAG="latest" diff --git a/image-template.env b/image-template.env index bf848fb..76fb1cc 100644 --- a/image-template.env +++ b/image-template.env @@ -1,7 +1,7 @@ # Here we set a bunch of parameters for your image build # output image name, usually same as repo name, change as needed -IMAGE_NAME=aerocore-bazzite-image +IMAGE_NAME=aerocore-os # Make this the same as your github username/organisation REPO_ORGANIZATION="AeroCore-IO" -- cgit v1.2.3 From 4824ba779c139ca57105b5306d74570fe1788814 Mon Sep 17 00:00:00 2001 From: tranch Date: Sun, 12 Jul 2026 23:33:44 +0800 Subject: Add live installer build workflow Add a Bazzite-style installer payload, CI workflow, and local\nPodman commands for building and testing the live ISO.\n\nFix stale disk image configuration references and installer targets. --- .github/workflows/build-disk.yml | 7 +- .github/workflows/build-live-installer.yml | 116 +++++++++++++++++++++ Justfile | 16 ++- README.md | 15 ++- disk_config/iso-gnome.toml | 2 +- disk_config/iso-kde.toml | 2 +- installer/Containerfile | 15 +++ installer/build.sh | 60 +++++++++++ installer/iso.yaml | 10 ++ .../remove_root_password_prompt.tmpl | 1 + installer/lorax_templates/set_default_user.tmpl | 1 + just_scripts/build-live-installer.sh | 58 +++++++++++ just_scripts/run-live-installer.sh | 23 ++++ 13 files changed, 317 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/build-live-installer.yml create mode 100644 installer/Containerfile create mode 100755 installer/build.sh create mode 100644 installer/iso.yaml create mode 100644 installer/lorax_templates/remove_root_password_prompt.tmpl create mode 100644 installer/lorax_templates/set_default_user.tmpl create mode 100755 just_scripts/build-live-installer.sh create mode 100755 just_scripts/run-live-installer.sh diff --git a/.github/workflows/build-disk.yml b/.github/workflows/build-disk.yml index 1de6c6e..02ef44a 100644 --- a/.github/workflows/build-disk.yml +++ b/.github/workflows/build-disk.yml @@ -20,7 +20,8 @@ on: - main paths: - './disk_config/disk.toml' - - './disk_config/iso.toml' + - './disk_config/iso-kde.toml' + - './disk_config/iso-gnome.toml' - './.github/workflows/build-disk.yml' env: @@ -36,7 +37,7 @@ concurrency: jobs: build: name: Build disk images - runs-on: ${{ inputs.platform == 'amd64' && 'ubuntu-24.04' || 'ubuntu-24.04-arm' }} + runs-on: ${{ inputs.platform == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} strategy: fail-fast: false matrix: @@ -82,7 +83,7 @@ jobs: uses: osbuild/bootc-image-builder-action@30960621b85c9e76c653082f9ef4cab5a10210d5 # main with: builder-image: ${{ env.BIB_IMAGE }} - config-file: ${{ matrix.disk-type == 'anaconda-iso' && './disk_config/iso.toml' || './disk_config/disk.toml' }} + config-file: ${{ matrix.disk-type == 'anaconda-iso' && './disk_config/iso-kde.toml' || './disk_config/disk.toml' }} image: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.DEFAULT_TAG }} chown: ${{ env.USER_UID }}:${{ env.USER_GID }} types: ${{ matrix.disk-type }} diff --git a/.github/workflows/build-live-installer.yml b/.github/workflows/build-live-installer.yml new file mode 100644 index 0000000..870699e --- /dev/null +++ b/.github/workflows/build-live-installer.yml @@ -0,0 +1,116 @@ +name: Build live installer + +on: + workflow_dispatch: + inputs: + image_tag: + description: "AeroCore image tag to install" + required: false + default: latest + type: string + workflow_call: + push: + branches: + - main + paths: + - "installer/**" + - "just_scripts/build-live-installer.sh" + - ".github/workflows/build-live-installer.yml" + +permissions: {} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref || github.run_id }} + cancel-in-progress: true + +jobs: + build-live-installer: + name: Build KDE live installer + runs-on: ubuntu-24.04 + permissions: + contents: read + packages: read + + env: + IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} + IMAGE_TAG: ${{ inputs.image_tag || 'latest' }} + BASE_IMAGE: ghcr.io/ublue-os/bazzite:stable + FEDORA_VERSION: "44" + + steps: + - name: Maximize build space + uses: ublue-os/remove-unwanted-software@cc0becac701cf642c8f0a6613bbdaf5dc36b259e # v9 + with: + remove-codeql: true + + - name: Mount container storage BTRFS loopback + run: | + sudo truncate -s 70G /mnt/podman-storage.img + sudo mkfs.btrfs -f /mnt/podman-storage.img + sudo podman system reset --force + sudo systemctl stop podman.service + sudo mount -o compress-force=zstd:2 /mnt/podman-storage.img /var/lib/containers/storage + sudo systemctl start podman.service + + - name: Checkout + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + + - name: Install just + uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4 + + - name: Prepare image references + run: | + image_name="$(just image_name)" + image_registry="${IMAGE_REGISTRY,,}" + echo "IMAGE_NAME=${image_name,,}" >> "$GITHUB_ENV" + echo "IMAGE_REGISTRY=${image_registry}" >> "$GITHUB_ENV" + + - name: Login to GHCR + run: | + echo '${{ secrets.GITHUB_TOKEN }}' | sudo podman login ghcr.io \ + --username '${{ github.actor }}' --password-stdin + + - name: Pull AeroCore install image + run: | + sudo podman pull "${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" + + - name: Build live installer payload + run: | + sudo podman build \ + --cap-add sys_admin \ + --security-opt label=disable \ + --build-arg "BASE_IMAGE=${BASE_IMAGE}" \ + --build-arg "INSTALL_IMAGE_PAYLOAD=${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" \ + --tag localhost/aerocore-live-payload:latest \ + --file installer/Containerfile \ + . + + - name: Build ISO + id: build + uses: Zeglius/titanoboa@revamp-pr + with: + arch: x86_64 + image_name: aerocore-live-payload + image_repo: localhost + variant: Kinoite + version: ${{ env.FEDORA_VERSION }} + image_tag: latest + iso_name: aerocore-os-${{ env.IMAGE_TAG }}-amd64.iso + enable_cache_dnf: "false" + enable_cache_skopeo: "false" + enable_flatpak_dependencies: "false" + additional_templates: /github/workspace/installer/lorax_templates/remove_root_password_prompt.tmpl /github/workspace/installer/lorax_templates/set_default_user.tmpl + + - name: Display checksum + run: | + cat "${{ steps.build.outputs.iso_path }}/${{ steps.build.outputs.iso_name }}-CHECKSUM" + + - name: Upload ISO artifact + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: aerocore-os-live-installer-${{ env.IMAGE_TAG }} + path: | + ${{ steps.build.outputs.iso_path }}/${{ steps.build.outputs.iso_name }} + ${{ steps.build.outputs.iso_path }}/${{ steps.build.outputs.iso_name }}-CHECKSUM + if-no-files-found: error + compression-level: 0 diff --git a/Justfile b/Justfile index e83466d..9ec4dd1 100644 --- a/Justfile +++ b/Justfile @@ -16,11 +16,21 @@ export HOMEBREW_API_DOMAIN := env_var_or_default("HOMEBREW_API_DOMAIN", "") alias build-vm := build-qcow2 alias rebuild-vm := rebuild-qcow2 alias run-vm := run-vm-qcow2 +alias build-live-iso := build-live-installer +alias run-live-iso := run-live-installer [private] default: @just --list +# Build a Bazzite-style live installer ISO +build-live-installer: + @./just_scripts/build-live-installer.sh + +# Boot the live installer ISO with QEMU +run-live-installer: + @./just_scripts/run-live-installer.sh + # Check Just Syntax [group('Just')] check: @@ -348,7 +358,7 @@ build-raw $target_image=("localhost/" + image_name) $tag=default_tag: && (_build # Build an ISO virtual machine image [group('Build Virtal Machine Image')] -build-iso $target_image=("localhost/" + image_name) $tag=default_tag: && (_build-bib target_image tag "iso" "disk_config/iso.toml") +build-iso $target_image=("localhost/" + image_name) $tag=default_tag: && (_build-bib target_image tag "iso" "disk_config/iso-kde.toml") # Rebuild a QCOW2 virtual machine image [group('Build Virtal Machine Image')] @@ -360,7 +370,7 @@ rebuild-raw $target_image=("localhost/" + image_name) $tag=default_tag: && (_reb # Rebuild an ISO virtual machine image [group('Build Virtal Machine Image')] -rebuild-iso $target_image=("localhost/" + image_name) $tag=default_tag: && (_rebuild-bib target_image tag "iso" "disk_config/iso.toml") +rebuild-iso $target_image=("localhost/" + image_name) $tag=default_tag: && (_rebuild-bib target_image tag "iso" "disk_config/iso-kde.toml") # Run a virtual machine with the specified image type and configuration _run-vm $target_image $tag $type $config: @@ -414,7 +424,7 @@ run-vm-raw $target_image=("localhost/" + image_name) $tag=default_tag: && (_run- # Run a virtual machine from an ISO [group('Run Virtal Machine')] -run-vm-iso $target_image=("localhost/" + image_name) $tag=default_tag: && (_run-vm target_image tag "iso" "disk_config/iso.toml") +run-vm-iso $target_image=("localhost/" + image_name) $tag=default_tag: && (_run-vm target_image tag "iso" "disk_config/iso-kde.toml") # Run a virtual machine using systemd-vmspawn [group('Run Virtal Machine')] diff --git a/README.md b/README.md index fdd7c76..0fc3ba4 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ By focusing strictly on file overlays and configuration writing, this build inte To build AeroCore OS locally, edit `image-template.env` to match your target configurations and then run: ```bash -just build +sudo just build ``` @@ -35,3 +35,16 @@ To test a different upstream base image directly without modifying the environme BASE_IMAGE=ghcr.io/ublue-os/bazzite-deck:testing just build ``` + +To build the Bazzite-style live installer locally, first build the AeroCore +image and then run: + +```bash +sudo just build +just build-live-installer +just run-live-installer +``` + +This requires privileged Podman, a rootful Podman API socket, and roughly +70 GiB of free space. The live installer workflow consumes the published +`latest` AeroCore image and uploads the ISO as a GitHub Actions artifact. diff --git a/disk_config/iso-gnome.toml b/disk_config/iso-gnome.toml index 0a9c84f..0fa5652 100644 --- a/disk_config/iso-gnome.toml +++ b/disk_config/iso-gnome.toml @@ -1,7 +1,7 @@ [customizations.installer.kickstart] contents = """ %post -bootc switch --mutate-in-place --transport registry ghcr.io/ublue-os/image-template:latest +bootc switch --mutate-in-place --transport registry ghcr.io/aerocore-io/aerocore-bazzite-image:latest %end """ diff --git a/disk_config/iso-kde.toml b/disk_config/iso-kde.toml index 17d2787..e6e15a0 100644 --- a/disk_config/iso-kde.toml +++ b/disk_config/iso-kde.toml @@ -1,7 +1,7 @@ [customizations.installer.kickstart] contents = """ %post -bootc switch --mutate-in-place --transport registry ghcr.io/ublue-os/image-template:latest +bootc switch --mutate-in-place --transport registry ghcr.io/aerocore-io/aerocore-bazzite-image:latest %end """ diff --git a/installer/Containerfile b/installer/Containerfile new file mode 100644 index 0000000..fa817b6 --- /dev/null +++ b/installer/Containerfile @@ -0,0 +1,15 @@ +# Build the live installer payload from a desktop Bazzite runtime. +# The image installed to disk is supplied separately as INSTALL_IMAGE_PAYLOAD. + +ARG BASE_IMAGE=ghcr.io/ublue-os/bazzite:stable +ARG INSTALL_IMAGE_PAYLOAD=ghcr.io/AeroCore-IO/aerocore-bazzite-image:stable + +FROM ${BASE_IMAGE} + +ARG BASE_IMAGE +ARG INSTALL_IMAGE_PAYLOAD + +RUN --mount=type=bind,source=.,target=/src \ + env BASE_IMAGE="${BASE_IMAGE}" \ + INSTALL_IMAGE_PAYLOAD="${INSTALL_IMAGE_PAYLOAD}" \ + /src/installer/build.sh diff --git a/installer/build.sh b/installer/build.sh new file mode 100755 index 0000000..7532df8 --- /dev/null +++ b/installer/build.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +set -euxo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BASE_IMAGE=${BASE_IMAGE:?} +INSTALL_IMAGE_PAYLOAD=${INSTALL_IMAGE_PAYLOAD:?} + +# The installer is a live KDE environment. Keep the installed system payload +# separate: it is the AeroCore image, while BASE_IMAGE provides the live UI. +dnf install -y \ + anaconda-live \ + libblockdev-btrfs \ + libblockdev-dm \ + libblockdev-lvm \ + dracut-live \ + livesys-scripts \ + grub2-efi-x64-cdboot + +# Apply the same AeroCore overlay to the live session where possible. +if [[ -d /src/system_files ]]; then + cp -a /src/system_files/. / +fi + +# Make the install payload available to Anaconda. When the build is running +# with the host container store mounted, this avoids a second registry pull. +if mountpoint -q /usr/lib/containers/storage; then + podman save --format oci-archive "${INSTALL_IMAGE_PAYLOAD}" | \ + podman load --storage-opt additionalimagestore='' +else + podman pull "${INSTALL_IMAGE_PAYLOAD}" +fi + +# Tell Anaconda to install the bootc container that was loaded above. +mkdir -p /var/lib/rpm-state +cat >> /usr/share/anaconda/interactive-defaults.ks </dev/null; then + cp -a /usr/lib/efi/*/*/EFI /boot/efi/ +fi + +systemd-firstboot --timezone UTC +dnf clean all diff --git a/installer/iso.yaml b/installer/iso.yaml new file mode 100644 index 0000000..8e6bd73 --- /dev/null +++ b/installer/iso.yaml @@ -0,0 +1,10 @@ +label: "AeroCore-Live" +grub2: + timeout: 3 + entries: + - name: "Launch AeroCore Installer" + linux: "/images/pxeboot/vmlinuz quiet rhgb root=live:CDLABEL=AeroCore-Live enforcing=0 rd.live.image" + initrd: "/images/pxeboot/initrd.img" + - name: "Launch AeroCore Installer (Basic Graphics Mode)" + linux: "/images/pxeboot/vmlinuz quiet rhgb root=live:CDLABEL=AeroCore-Live enforcing=0 rd.live.image nomodeset" + initrd: "/images/pxeboot/initrd.img" diff --git a/installer/lorax_templates/remove_root_password_prompt.tmpl b/installer/lorax_templates/remove_root_password_prompt.tmpl new file mode 100644 index 0000000..3bd0342 --- /dev/null +++ b/installer/lorax_templates/remove_root_password_prompt.tmpl @@ -0,0 +1 @@ +append etc/anaconda/profile.d/fedora-kinoite.conf "\\n[User Interface]\\nhidden_spokes =\\n PasswordSpoke" diff --git a/installer/lorax_templates/set_default_user.tmpl b/installer/lorax_templates/set_default_user.tmpl new file mode 100644 index 0000000..b4cf2c8 --- /dev/null +++ b/installer/lorax_templates/set_default_user.tmpl @@ -0,0 +1 @@ +append usr/share/anaconda/interactive-defaults.ks "\\nuser --name=aerocore --password=aerocore --plaintext --groups=wheel" diff --git a/just_scripts/build-live-installer.sh b/just_scripts/build-live-installer.sh new file mode 100755 index 0000000..16b371e --- /dev/null +++ b/just_scripts/build-live-installer.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +set -euo pipefail + +project_root="$(git rev-parse --show-toplevel)" +cd "${project_root}" + +image_name="${IMAGE_NAME:-$(just image_name)}" +image_tag="${IMAGE_TAG:-$(just generate-default-tag)}" +base_image="${BASE_IMAGE:-ghcr.io/ublue-os/bazzite:stable}" +payload="localhost/${image_name}:live-payload" +output_dir="${project_root}/output" +api_socket="${PODMAN_SOCKET:-/run/podman/podman.sock}" +if [[ "${EUID}" -eq 0 ]]; then + podman_cmd=(podman) +else + podman_cmd=(sudo podman) +fi + +if [[ ! -S "${api_socket}" ]]; then + echo "Podman API socket not found: ${api_socket}" >&2 + echo "Set PODMAN_SOCKET to the rootful Podman socket and retry." >&2 + exit 1 +fi + +mkdir -p "${output_dir}" +"${podman_cmd[@]}" tag "${image_name}:${image_tag}" "${payload}" + +"${podman_cmd[@]}" build \ + --cap-add sys_admin \ + --security-opt label=disable \ + --build-arg "BASE_IMAGE=${base_image}" \ + --build-arg "INSTALL_IMAGE_PAYLOAD=${payload}" \ + --tag localhost/aerocore-live-payload:latest \ + --file installer/Containerfile \ + . + +"${podman_cmd[@]}" run --rm --privileged \ + --volume "${api_socket}:/var/run/docker.sock" \ + --volume "${project_root}/output:/build-container-installer/build" \ + --volume "${project_root}/installer/lorax_templates:/additional_lorax_templates:ro" \ + docker.io/jasonn3/build-container-installer:latest \ + ADDITIONAL_TEMPLATES="/additional_lorax_templates/remove_root_password_prompt.tmpl /additional_lorax_templates/set_default_user.tmpl" \ + ARCH="x86_64" \ + ENABLE_CACHE_DNF="false" \ + ENABLE_CACHE_SKOPEO="false" \ + ENABLE_FLATPAK_DEPENDENCIES="false" \ + IMAGE_NAME="aerocore-live-payload" \ + IMAGE_REPO="localhost" \ + IMAGE_TAG="latest" \ + ISO_NAME="build/aerocore-os-${image_tag}-amd64.iso" \ + VARIANT="Kinoite" \ + VERSION="${FEDORA_VERSION:-44}" + +iso="${output_dir}/aerocore-os-${image_tag}-amd64.iso" +if [[ -f "${iso}" ]]; then + sha256sum "${iso}" | tee "${iso}-CHECKSUM" +fi diff --git a/just_scripts/run-live-installer.sh b/just_scripts/run-live-installer.sh new file mode 100755 index 0000000..2723aae --- /dev/null +++ b/just_scripts/run-live-installer.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -euo pipefail + +project_root="$(git rev-parse --show-toplevel)" +cd "${project_root}" + +image_tag="${IMAGE_TAG:-$(just generate-default-tag)}" +iso="${project_root}/output/aerocore-os-${image_tag}-amd64.iso" + +if [[ ! -f "${iso}" ]]; then + just build-live-installer +fi + +podman run --rm --cap-add NET_ADMIN \ + --publish 127.0.0.1:8006:8006 \ + --env CPU_CORES=2 \ + --env RAM_SIZE=4G \ + --env DISK_SIZE=64G \ + --env BOOT_MODE=uefi \ + --device /dev/kvm \ + --volume "${iso}:/boot.iso:ro" \ + docker.io/qemux/qemu-docker -- cgit v1.2.3 From 03c4de92818b9f8dd641291928a7c0ceb8590d85 Mon Sep 17 00:00:00 2001 From: tranch Date: Sun, 12 Jul 2026 23:35:37 +0800 Subject: Rebuild initramfs with custom branding Regenerate initramfs after applying AeroCore image metadata and assets. --- Containerfile | 3 ++- build_files/build-initramfs | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100755 build_files/build-initramfs diff --git a/Containerfile b/Containerfile index cdcd945..1f09ba1 100644 --- a/Containerfile +++ b/Containerfile @@ -41,7 +41,8 @@ RUN --mount=type=bind,from=ctx,source=/,target=/ctx \ --mount=type=cache,dst=/var/log \ --mount=type=tmpfs,dst=/tmp \ /ctx/build.sh && \ - /ctx/image-info + /ctx/image-info && \ + /ctx/build-initramfs ### LINTING ## Verify final image and contents are correct. diff --git a/build_files/build-initramfs b/build_files/build-initramfs new file mode 100755 index 0000000..9eec951 --- /dev/null +++ b/build_files/build-initramfs @@ -0,0 +1,17 @@ +#!/usr/bin/bash + +set -eoux pipefail + +echo "::group::Executing build-initramfs" +trap 'echo "::endgroup::"' EXIT + +if [[ "${KERNEL_FLAVOR:-}" == "surface" ]]; then + KERNEL_SUFFIX="surface" +else + KERNEL_SUFFIX="" +fi + +QUALIFIED_KERNEL="$(dnf5 repoquery --installed --queryformat='%{evr}.%{arch}' "kernel${KERNEL_SUFFIX:+-${KERNEL_SUFFIX}}")" +/usr/bin/dracut --no-hostonly --kver "$QUALIFIED_KERNEL" --reproducible --zstd -v --add ostree --add fido2 -f "/usr/lib/modules/$QUALIFIED_KERNEL/initramfs.img" + +chmod 0600 /usr/lib/modules/"$QUALIFIED_KERNEL"/initramfs.img -- cgit v1.2.3 From 0746882128c748280e60f9875e6342a219b077e7 Mon Sep 17 00:00:00 2001 From: tranch Date: Mon, 13 Jul 2026 00:17:46 +0800 Subject: Allow env override for image update ref Pass OSTREE_IMAGE_REF from GitHub repository variables into the image build so image-info.json can point systems at the configured update source. --- .github/workflows/build.yml | 1 + Containerfile | 1 + Justfile | 2 +- build_files/image-info | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 56f8da9..1a7f7d4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -69,6 +69,7 @@ jobs: FLATPAK_REMOTE_URL: ${{ vars.FLATPAK_REMOTE_URL }} HOMEBREW_BOTTLE_DOMAIN: ${{ vars.HOMEBREW_BOTTLE_DOMAIN }} HOMEBREW_API_DOMAIN: ${{ vars.HOMEBREW_API_DOMAIN }} + OSTREE_IMAGE_REF: ${{ vars.OSTREE_IMAGE_REF }} run: | sudo -E $(command -v just) build \ ${IMAGE_NAME} \ diff --git a/Containerfile b/Containerfile index 1f09ba1..90bd7c7 100644 --- a/Containerfile +++ b/Containerfile @@ -12,6 +12,7 @@ ARG IMAGE_VENDOR="AeroCore-IO" ARG IMAGE_BRANCH="stable" ARG VERSION_TAG="latest" ARG VERSION_PRETTY="latest" +ARG OSTREE_IMAGE_REF="" ## Other possible base images include: # ghcr.io/ublue-os/bazzite-deck:testing # ghcr.io/ublue-os/bazzite-deck:stable-43.20260420 diff --git a/Justfile b/Justfile index 9ec4dd1..5b5cc02 100644 --- a/Justfile +++ b/Justfile @@ -114,7 +114,7 @@ build $target_image=image_name $tag=default_tag: BUILD_ARGS=() LABELS=() - for arg in BASE_IMAGE FLATPAK_REMOTE_URL HOMEBREW_BOTTLE_DOMAIN HOMEBREW_API_DOMAIN; do + for arg in BASE_IMAGE FLATPAK_REMOTE_URL HOMEBREW_BOTTLE_DOMAIN HOMEBREW_API_DOMAIN OSTREE_IMAGE_REF; do if [[ -n "${!arg:-}" ]]; then BUILD_ARGS+=("--build-arg" "${arg}=${!arg}") fi diff --git a/build_files/image-info b/build_files/image-info index d441917..6c13612 100755 --- a/build_files/image-info +++ b/build_files/image-info @@ -15,7 +15,7 @@ LOGO_COLOR="0;38;2;12;109;129" IMAGE_INFO="/usr/share/ublue-os/image-info.json" OSTREE_REGISTRY="${OSTREE_REGISTRY:-docker://ghcr.io}" OSTREE_NAMESPACE="${OSTREE_NAMESPACE:-$IMAGE_VENDOR}" -IMAGE_REF="ostree-image-signed:${OSTREE_REGISTRY%/}/$OSTREE_NAMESPACE/$IMAGE_NAME" +IMAGE_REF="${OSTREE_IMAGE_REF:-ostree-image-signed:${OSTREE_REGISTRY%/}/$OSTREE_NAMESPACE/$IMAGE_NAME}" IMAGE_BRANCH_NORMALIZED="$IMAGE_BRANCH" BASE_IMAGE_NAME="bazzite-deck" -- cgit v1.2.3 From 70bb475bc2c1dc520caf61acc7e9f62fc11d5975 Mon Sep 17 00:00:00 2001 From: tranch Date: Mon, 13 Jul 2026 00:26:39 +0800 Subject: Publish manual testing image tags Allow manually dispatched testing branch builds to publish and sign both the moving testing tag and a dated testing tag. --- .github/workflows/build.yml | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1a7f7d4..e542a89 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,7 +51,11 @@ jobs: - name: Default Tag id: gen-default-tag run: | - DEFAULT_TAG=$(just generate-default-tag) + if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" && "${GITHUB_REF_NAME}" == "testing" ]]; then + DEFAULT_TAG="testing-$(date -u +%Y%m%d)" + else + DEFAULT_TAG=$(just generate-default-tag) + fi echo "DEFAULT_TAG=${DEFAULT_TAG}" >> $GITHUB_ENV @@ -96,9 +100,13 @@ jobs: - name: Generate Build Tags id: gen-build-tags run: | - alias_tags="$(just generate-build-tags \ - ${IMAGE_NAME} \ - ${DEFAULT_TAG})" + if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" && "${GITHUB_REF_NAME}" == "testing" ]]; then + alias_tags="testing ${DEFAULT_TAG}" + else + alias_tags="$(just generate-build-tags \ + ${IMAGE_NAME} \ + ${DEFAULT_TAG})" + fi echo "Tags for this Action..." echo "${alias_tags}" @@ -114,18 +122,18 @@ jobs: "${DEFAULT_TAG}" \ "${ALIAS_TAGS}" - # These `if` statements are so that pull requests for your custom images do not make it publish any packages under your name without you knowing - # They also check if the runner is on the default branch so that things like the merge queue (if you enable it), are going to work + # These `if` statements keep pull requests from publishing packages. + # They publish default-branch builds and manual testing branch builds. - name: Login to GitHub Container Registry uses: docker/login-action@af1e73f918a031802d376d3c8bbc3fe56130a9b0 # v4.4.0 - if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) + if: github.event_name != 'pull_request' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/testing')) with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Push To GHCR - if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) + if: github.event_name != 'pull_request' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/testing')) id: push-image env: ALIAS_TAGS: ${{ steps.gen-build-tags.outputs.alias_tags }} @@ -145,14 +153,14 @@ jobs: # to consume. For more details, review the image signing section of the README. - name: Install Cosign uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2 - if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) + if: github.event_name != 'pull_request' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/testing')) # https://github.com/containers/container-libs/issues/388 with: cosign-release: 'v2.6.3' - name: Sign container image id: sign-image - if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) + if: github.event_name != 'pull_request' && (github.ref == format('refs/heads/{0}', github.event.repository.default_branch) || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/testing')) env: COSIGN_EXPERIMENTAL: false COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }} -- cgit v1.2.3 From 006d9630c6b11933943245377379addc4b0410e1 Mon Sep 17 00:00:00 2001 From: tranch Date: Mon, 13 Jul 2026 00:55:21 +0800 Subject: Use BTRFS storage for image builds Mount /var/lib/containers on the larger runner disk before building so rpm-ostree rechunk has enough space for bootc images. --- .github/workflows/build.yml | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e542a89..0b1a54b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,12 +27,31 @@ jobs: steps: # These stage versions are pinned by https://github.com/renovatebot/renovate + - name: Show disk space + run: sudo df -h + + - name: Check if /mnt is there + id: check-mnt + run: | + if sudo mountpoint /mnt; then + echo "mnt_is_there=1" >> "$GITHUB_OUTPUT" + else + echo "mnt_is_there=0" >> "$GITHUB_OUTPUT" + fi + + - name: Free Disk Space + if: ${{ steps.check-mnt.outputs.mnt_is_there == '1' }} + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + + - name: Mount BTRFS for podman storage + if: ${{ steps.check-mnt.outputs.mnt_is_there == '1' }} + uses: ublue-os/container-storage-action@main + with: + target-dir: /var/lib/containers + - name: Checkout uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - - name: Maximize build space - uses: ublue-os/remove-unwanted-software@695eb75bc387dbcd9685a8e72d23439d8686cba6 - - name: Install just uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 #v4.0.0 -- cgit v1.2.3 From 4538d902bb97f7f6460b2e50ae838297ae785e87 Mon Sep 17 00:00:00 2001 From: tranch Date: Mon, 13 Jul 2026 01:05:10 +0800 Subject: Free disk space on standard runners --- .github/workflows/build.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0b1a54b..1edbe30 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,6 +30,11 @@ jobs: - name: Show disk space run: sudo df -h + - name: Maximize build space + uses: ublue-os/remove-unwanted-software@695eb75bc387dbcd9685a8e72d23439d8686cba6 + with: + extra-squeeze: true + - name: Check if /mnt is there id: check-mnt run: | @@ -39,16 +44,15 @@ jobs: echo "mnt_is_there=0" >> "$GITHUB_OUTPUT" fi - - name: Free Disk Space - if: ${{ steps.check-mnt.outputs.mnt_is_there == '1' }} - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - name: Mount BTRFS for podman storage if: ${{ steps.check-mnt.outputs.mnt_is_there == '1' }} uses: ublue-os/container-storage-action@main with: target-dir: /var/lib/containers + - name: Show available build space + run: sudo df -h + - name: Checkout uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 -- cgit v1.2.3 From a1d3f73a476f9aa1d6458d344c03fa12dd6efd21 Mon Sep 17 00:00:00 2001 From: tranch Date: Mon, 13 Jul 2026 08:25:32 +0800 Subject: Pass Cosign password to signing step --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1edbe30..e72f937 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -187,6 +187,7 @@ jobs: env: COSIGN_EXPERIMENTAL: false COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }} + COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} DIGEST: ${{ steps.push-image.outputs.digest }} run: | cosign sign -y --key env://COSIGN_PRIVATE_KEY ${IMAGE_REGISTRY}/${IMAGE_NAME}@${DIGEST} -- cgit v1.2.3 From 44279a34ed21056fda257b9d53a0a24e449c0fe9 Mon Sep 17 00:00:00 2001 From: tranch Date: Tue, 14 Jul 2026 11:37:22 +0800 Subject: feat: add aerocore wallpaper and default background symlinks --- system_files/usr/share/backgrounds/default-dark.jxl | 1 + system_files/usr/share/backgrounds/default.jxl | 1 + .../plasmoidsetupscripts/org.kde.plasma.folder.js | 4 ++++ .../plasmoidsetupscripts/org.kde.plasma.folder.js | 4 ++++ .../usr/share/wallpapers/aerocore-wallpaper.jxl | Bin 0 -> 3395468 bytes 5 files changed, 10 insertions(+) create mode 120000 system_files/usr/share/backgrounds/default-dark.jxl create mode 120000 system_files/usr/share/backgrounds/default.jxl create mode 100644 system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/plasmoidsetupscripts/org.kde.plasma.folder.js create mode 100644 system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/plasmoidsetupscripts/org.kde.plasma.folder.js create mode 100644 system_files/usr/share/wallpapers/aerocore-wallpaper.jxl diff --git a/system_files/usr/share/backgrounds/default-dark.jxl b/system_files/usr/share/backgrounds/default-dark.jxl new file mode 120000 index 0000000..f87d865 --- /dev/null +++ b/system_files/usr/share/backgrounds/default-dark.jxl @@ -0,0 +1 @@ +/usr/share/wallpapers/aerocore-wallpaper.jxl \ No newline at end of file diff --git a/system_files/usr/share/backgrounds/default.jxl b/system_files/usr/share/backgrounds/default.jxl new file mode 120000 index 0000000..f87d865 --- /dev/null +++ b/system_files/usr/share/backgrounds/default.jxl @@ -0,0 +1 @@ +/usr/share/wallpapers/aerocore-wallpaper.jxl \ No newline at end of file diff --git a/system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/plasmoidsetupscripts/org.kde.plasma.folder.js b/system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/plasmoidsetupscripts/org.kde.plasma.folder.js new file mode 100644 index 0000000..b207690 --- /dev/null +++ b/system_files/usr/share/plasma/look-and-feel/com.valve.vapor.desktop/contents/plasmoidsetupscripts/org.kde.plasma.folder.js @@ -0,0 +1,4 @@ +applet.wallpaperPlugin = 'org.kde.image' +applet.currentConfigGroup = ["Wallpaper", "org.kde.image", "General"] +applet.writeConfig("Image", "/usr/share/wallpapers/aerocore-wallpaper.jxl") +applet.reloadConfig() diff --git a/system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/plasmoidsetupscripts/org.kde.plasma.folder.js b/system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/plasmoidsetupscripts/org.kde.plasma.folder.js new file mode 100644 index 0000000..b207690 --- /dev/null +++ b/system_files/usr/share/plasma/look-and-feel/com.valve.vgui.desktop/contents/plasmoidsetupscripts/org.kde.plasma.folder.js @@ -0,0 +1,4 @@ +applet.wallpaperPlugin = 'org.kde.image' +applet.currentConfigGroup = ["Wallpaper", "org.kde.image", "General"] +applet.writeConfig("Image", "/usr/share/wallpapers/aerocore-wallpaper.jxl") +applet.reloadConfig() diff --git a/system_files/usr/share/wallpapers/aerocore-wallpaper.jxl b/system_files/usr/share/wallpapers/aerocore-wallpaper.jxl new file mode 100644 index 0000000..9eca7b7 Binary files /dev/null and b/system_files/usr/share/wallpapers/aerocore-wallpaper.jxl differ -- cgit v1.2.3 From 3590672ec3f45b8df3820d65fc0946dc760292ec Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 15 Jul 2026 14:04:06 +0800 Subject: Integrate Instruments release seed Download and verify the selected release during image builds. Bootstrap it once into the first graphical user's XDG directories. --- .github/workflows/build.yml | 4 + Containerfile | 4 + Justfile | 6 +- README.md | 19 +++ build_files/build.sh | 2 + build_files/install-instruments.sh | 182 +++++++++++++++++++++ image-template.env | 7 + .../system/aerocore-instruments-setup.service | 18 ++ .../usr/libexec/aerocore-instruments-setup | 123 ++++++++++++++ 9 files changed, 364 insertions(+), 1 deletion(-) create mode 100755 build_files/install-instruments.sh create mode 100644 system_files/usr/lib/systemd/system/aerocore-instruments-setup.service create mode 100755 system_files/usr/libexec/aerocore-instruments-setup diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e72f937..49d2f81 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -97,6 +97,10 @@ jobs: HOMEBREW_BOTTLE_DOMAIN: ${{ vars.HOMEBREW_BOTTLE_DOMAIN }} HOMEBREW_API_DOMAIN: ${{ vars.HOMEBREW_API_DOMAIN }} OSTREE_IMAGE_REF: ${{ vars.OSTREE_IMAGE_REF }} + INSTRUMENTS_ENABLED: ${{ vars.INSTRUMENTS_ENABLED || 'true' }} + INSTRUMENTS_RELEASE_REPOSITORY: ${{ vars.INSTRUMENTS_RELEASE_REPOSITORY || 'AeroCore-IO/booster-installer' }} + INSTRUMENTS_VERSION: ${{ vars.INSTRUMENTS_VERSION || 'latest' }} + INSTRUMENTS_RELEASE_API_BASE: ${{ vars.INSTRUMENTS_RELEASE_API_BASE || 'https://api.github.com' }} run: | sudo -E $(command -v just) build \ ${IMAGE_NAME} \ diff --git a/Containerfile b/Containerfile index 90bd7c7..c9377ca 100644 --- a/Containerfile +++ b/Containerfile @@ -36,6 +36,10 @@ ARG OSTREE_IMAGE_REF="" ARG FLATPAK_REMOTE_URL="" ARG HOMEBREW_BOTTLE_DOMAIN="" ARG HOMEBREW_API_DOMAIN="" +ARG INSTRUMENTS_ENABLED="true" +ARG INSTRUMENTS_RELEASE_REPOSITORY="AeroCore-IO/booster-installer" +ARG INSTRUMENTS_VERSION="latest" +ARG INSTRUMENTS_RELEASE_API_BASE="https://api.github.com" RUN --mount=type=bind,from=ctx,source=/,target=/ctx \ --mount=type=cache,dst=/var/cache \ diff --git a/Justfile b/Justfile index 5b5cc02..5e73752 100644 --- a/Justfile +++ b/Justfile @@ -12,6 +12,10 @@ export BASE_IMAGE := env_var_or_default("BASE_IMAGE", "ghcr.io/ublue-os/bazzite- export FLATPAK_REMOTE_URL := env_var_or_default("FLATPAK_REMOTE_URL", "") export HOMEBREW_BOTTLE_DOMAIN := env_var_or_default("HOMEBREW_BOTTLE_DOMAIN", "") export HOMEBREW_API_DOMAIN := env_var_or_default("HOMEBREW_API_DOMAIN", "") +export INSTRUMENTS_ENABLED := env_var_or_default("INSTRUMENTS_ENABLED", "true") +export INSTRUMENTS_RELEASE_REPOSITORY := env_var_or_default("INSTRUMENTS_RELEASE_REPOSITORY", "AeroCore-IO/booster-installer") +export INSTRUMENTS_VERSION := env_var_or_default("INSTRUMENTS_VERSION", "latest") +export INSTRUMENTS_RELEASE_API_BASE := env_var_or_default("INSTRUMENTS_RELEASE_API_BASE", "https://api.github.com") alias build-vm := build-qcow2 alias rebuild-vm := rebuild-qcow2 @@ -114,7 +118,7 @@ build $target_image=image_name $tag=default_tag: BUILD_ARGS=() LABELS=() - for arg in BASE_IMAGE FLATPAK_REMOTE_URL HOMEBREW_BOTTLE_DOMAIN HOMEBREW_API_DOMAIN OSTREE_IMAGE_REF; do + for arg in BASE_IMAGE FLATPAK_REMOTE_URL HOMEBREW_BOTTLE_DOMAIN HOMEBREW_API_DOMAIN OSTREE_IMAGE_REF INSTRUMENTS_ENABLED INSTRUMENTS_RELEASE_REPOSITORY INSTRUMENTS_VERSION INSTRUMENTS_RELEASE_API_BASE; do if [[ -n "${!arg:-}" ]]; then BUILD_ARGS+=("--build-arg" "${arg}=${!arg}") fi diff --git a/README.md b/README.md index 0fc3ba4..3fc11c5 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,25 @@ 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 diff --git a/build_files/build.sh b/build_files/build.sh index f1709da..b89907a 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -32,3 +32,5 @@ if [[ -n "${HOMEBREW_API_DOMAIN:-}" ]]; then fi find /etc/environment.d /etc/skel/.config/environment.d -name 99-aerocore-mirrors.conf -type f -exec chmod 0644 {} + 2>/dev/null || true + +/ctx/install-instruments.sh diff --git a/build_files/install-instruments.sh b/build_files/install-instruments.sh new file mode 100755 index 0000000..f85bd3b --- /dev/null +++ b/build_files/install-instruments.sh @@ -0,0 +1,182 @@ +#!/usr/bin/env bash + +set -euo pipefail + +: "${INSTRUMENTS_ENABLED:=true}" +: "${INSTRUMENTS_RELEASE_REPOSITORY:=AeroCore-IO/booster-installer}" +: "${INSTRUMENTS_VERSION:=latest}" +: "${INSTRUMENTS_RELEASE_API_BASE:=https://api.github.com}" +: "${INSTRUMENTS_SEED_ROOT:=/usr/share/aerocore-booster-release}" + +if [[ "${INSTRUMENTS_ENABLED}" != "true" ]]; then + echo "AeroCore Booster image integration is disabled" + exit 0 +fi + +case "$(uname -m)" in + x86_64 | amd64) + asset_suffix="_linux-x86_64.tar.gz" + ;; + *) + echo "Unsupported AeroCore Booster image architecture: $(uname -m)" >&2 + exit 1 + ;; +esac + +for command in curl jq sha256sum tar; do + command -v "$command" >/dev/null 2>&1 || { + echo "Required command is unavailable: $command" >&2 + exit 1 + } +done + +workdir="$(mktemp -d)" +trap 'rm -rf "$workdir"' EXIT + +github_curl() { + local args=( + --fail + --location + --retry 3 + --retry-delay 2 + --retry-max-time 60 + --silent + --show-error + ) + + if [[ -s /run/secrets/GITHUB_TOKEN ]]; then + args+=(--header "Authorization: Bearer $(&2 + exit 1 +fi + +IFS=$'\t' read -r asset_name asset_url <<<"${payload_assets[0]}" +checksum_name="${asset_name}.sha256" +checksum_url="$( + jq -er --arg name "$checksum_name" \ + '.assets[] | select(.name == $name) | .browser_download_url' \ + "$release_json" +)" + +archive="$workdir/$asset_name" +checksum_file="$workdir/$checksum_name" +github_curl "$asset_url" --output "$archive" +github_curl "$checksum_url" --output "$checksum_file" + +expected_checksum="$(awk 'NR == 1 { print $1 }' "$checksum_file")" +actual_checksum="$(sha256sum "$archive" | awk '{ print $1 }')" +if [[ ! "$expected_checksum" =~ ^[[:xdigit:]]{64}$ ]] || + [[ "${actual_checksum,,}" != "${expected_checksum,,}" ]]; then + echo "Checksum verification failed for $asset_name" >&2 + exit 1 +fi + +while IFS= read -r entry; do + case "$entry" in + /* | ../* | */../* | */..) + echo "Unsafe path in release archive: $entry" >&2 + exit 1 + ;; + esac +done < <(tar -tzf "$archive") + +extract_dir="$workdir/extracted" +install -d "$extract_dir" +tar --extract --gzip --file "$archive" --directory "$extract_dir" \ + --no-same-owner + +if [[ -d "$extract_dir/aerocore-booster-release" ]]; then + payload="$extract_dir/aerocore-booster-release" +elif [[ -d "$extract_dir/instruments-ng-release" ]]; then + payload="$extract_dir/instruments-ng-release" +else + echo "Release archive does not contain a supported payload root" >&2 + exit 1 +fi + +required_paths=( + install.sh + appimage/AppRun + appimage/AppRun.wrapped + sidecar/hhd-input-helper.cjs + sidecar/vendor/hhd-input-helper/instruments_hhd_input/__init__.py + runtime/avionics + runtime/cabin + runtime/wing + runtime/node/bin/node + python-wheelhouse + pkg/systemd/ac-avionics.service + pkg/systemd/ac-cabin.service + pkg/systemd/ac-wing.service + pkg/systemd/ac-instruments.service + scripts/check-runtime-health.cjs + manifest.yaml +) + +for path in "${required_paths[@]}"; do + if [[ ! -e "$payload/$path" ]]; then + echo "Required path is missing from Booster release: $path" >&2 + exit 1 + fi +done + +if [[ ! -f "$payload/pkg/aerocore-booster.sh" && + ! -f "$payload/pkg/instruments-ng.sh" ]]; then + echo "Booster launcher is missing from the release payload" >&2 + exit 1 +fi + +# Remove the first implementation's image-owned runtime when upgrading an +# existing AeroCore OS image. The release seed itself remains immutable. +rm -rf /usr/lib/aerocore-booster +rm -f /usr/bin/aerocore-booster +for unit in ac-avionics.service ac-cabin.service ac-wing.service \ + ac-instruments.service; do + rm -f "/usr/lib/systemd/system/$unit" +done + +rm -rf "$INSTRUMENTS_SEED_ROOT" +install -d -m 0755 "$INSTRUMENTS_SEED_ROOT" +cp -a "$payload/." "$INSTRUMENTS_SEED_ROOT/" + +cat >"$INSTRUMENTS_SEED_ROOT/image-release" </dev/null || true)" + if [[ ! "$uid" =~ ^[0-9]+$ ]] || ((uid < 1000)); then + continue + fi + [[ -z "$requested_uid" || "$uid" == "$requested_uid" ]] || continue + + active="$(loginctl show-session "$session" --property=Active --value 2>/dev/null || true)" + state="$(loginctl show-session "$session" --property=State --value 2>/dev/null || true)" + type="$(loginctl show-session "$session" --property=Type --value 2>/dev/null || true)" + seat="$(loginctl show-session "$session" --property=Seat --value 2>/dev/null || true)" + [[ "$active" == "yes" || "$state" == "active" || "$state" == "online" ]] || continue + + user="$(getent passwd "$uid" | cut -d: -f1)" + [[ -n "$user" && "$user" != "root" ]] || continue + if [[ "$type" == "x11" || "$type" == "wayland" ]]; then + printf '%s\n' "$user" + return 0 + fi + if [[ "$seat" == "seat0" ]] && pgrep -u "$uid" -x steam >/dev/null 2>&1; then + printf '%s\n' "$user" + return 0 + fi + done < <(loginctl list-sessions --no-legend --no-pager 2>/dev/null || true) + + return 1 +} + +if [[ -f "$complete_marker" ]]; then + echo "AeroCore Booster user bootstrap is already complete" + exit 0 +fi + +configured_uid="" +if [[ -f "$identity_file" ]]; then + configured_uid="$(awk -F= '$1 == "uid" { print $2; exit }' "$identity_file")" + if [[ ! "$configured_uid" =~ ^[0-9]+$ ]] || + ! getent passwd "$configured_uid" >/dev/null 2>&1; then + configured_uid="" + fi +fi + +deadline=$((SECONDS + AEROCORE_INSTRUMENTS_SETUP_WAIT_SECONDS)) +desktop_user="" +while ((SECONDS < deadline)); do + desktop_user="$(find_graphical_user "$configured_uid" || true)" + [[ -n "$desktop_user" ]] && break + sleep 2 +done + +if [[ -z "$desktop_user" ]]; then + echo "No active graphical user found within ${AEROCORE_INSTRUMENTS_SETUP_WAIT_SECONDS}s" >&2 + exit 1 +fi + +desktop_uid="$(id -u "$desktop_user")" +desktop_group="$(id -gn "$desktop_user")" +desktop_home="$(getent passwd "$desktop_user" | cut -d: -f6)" +if [[ -z "$desktop_home" || ! -d "$desktop_home" ]]; then + echo "Home directory is unavailable for $desktop_user: $desktop_home" >&2 + exit 1 +fi + +install -d -m 0755 "$state_dir" +printf 'user=%s\nuid=%s\n' "$desktop_user" "$desktop_uid" >"$identity_file" +chmod 0644 "$identity_file" + +existing_install=0 +for installed_path in \ + "$desktop_home/.local/share/aerocore-booster/manifest.yaml" \ + "$desktop_home/.local/share/aerocore-booster/appimage/AppRun" \ + "$desktop_home/.local/share/aerocore-booster/aerocore-booster" \ + "$desktop_home/.local/share/instruments-ng/manifest.yaml" \ + "$desktop_home/.local/share/instruments-ng/appimage/AppRun" \ + "$desktop_home/.local/share/instruments-ng/instruments-ng"; do + if [[ -e "$installed_path" ]]; then + existing_install=1 + break + fi +done + +if [[ "$existing_install" == "0" || -f "$attempt_marker" ]]; then + touch "$attempt_marker" + HOME="$desktop_home" \ + AEROCORE_INSTRUMENTS_USER="$desktop_user" \ + AEROCORE_INSTRUMENTS_GROUP="$desktop_group" \ + AEROCORE_INSTRUMENTS_UID="$desktop_uid" \ + AEROCORE_INSTRUMENTS_HOME="$desktop_home" \ + bash "$seed_root/install.sh" install +else + echo "Existing Instruments installation found for $desktop_user; preserving it" +fi + +cat >"$complete_marker" </dev/null 2>&1 || true + +echo "AeroCore Booster user bootstrap completed for $desktop_user (uid $desktop_uid)" -- cgit v1.2.3 From 32f81419098bac6fd02739b18023b921de08bb9b Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 15 Jul 2026 14:39:34 +0800 Subject: Recognize AeroCore as a Deck image Preserve Bazzite's Deck configuration for AeroCore images. Restore SDDM defaults removed by earlier deployments. --- build_files/build.sh | 1 + build_files/image-info | 2 +- build_files/patch-bazzite-deck-identity.sh | 47 ++++++++++++++++++++++ .../usr/lib/tmpfiles.d/aerocore-deck-compat.conf | 2 + 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100755 build_files/patch-bazzite-deck-identity.sh create mode 100644 system_files/usr/lib/tmpfiles.d/aerocore-deck-compat.conf diff --git a/build_files/build.sh b/build_files/build.sh index b89907a..3d37e31 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -34,3 +34,4 @@ fi find /etc/environment.d /etc/skel/.config/environment.d -name 99-aerocore-mirrors.conf -type f -exec chmod 0644 {} + 2>/dev/null || true /ctx/install-instruments.sh +/ctx/patch-bazzite-deck-identity.sh diff --git a/build_files/image-info b/build_files/image-info index 6c13612..84c6495 100755 --- a/build_files/image-info +++ b/build_files/image-info @@ -33,7 +33,7 @@ cat > "$IMAGE_INFO" <&2 + exit 1 +fi + +add_base_image_assignment=0 +if ! grep -Fqx "$base_image_assignment" "$hardware_setup"; then + add_base_image_assignment=1 +fi + +patched_file=$(mktemp) +trap 'rm -f "$patched_file"' EXIT + +awk \ + -v old_condition="$old_condition" \ + -v new_condition="$new_condition" \ + -v base_image_assignment="$base_image_assignment" \ + -v add_base_image_assignment="$add_base_image_assignment" \ + '$0 == old_condition { + if (add_base_image_assignment) { + print base_image_assignment + } + print new_condition + next + } + { print }' "$hardware_setup" > "$patched_file" + +cp "$patched_file" "$hardware_setup" + +grep -Fqx "$new_condition" "$hardware_setup" diff --git a/system_files/usr/lib/tmpfiles.d/aerocore-deck-compat.conf b/system_files/usr/lib/tmpfiles.d/aerocore-deck-compat.conf new file mode 100644 index 0000000..830329f --- /dev/null +++ b/system_files/usr/lib/tmpfiles.d/aerocore-deck-compat.conf @@ -0,0 +1,2 @@ +# Restore the Deck SDDM defaults if an older AeroCore deployment removed them. +C /etc/sddm.conf.d/steamos.conf 0644 root root - /usr/etc/sddm.conf.d/steamos.conf -- cgit v1.2.3 From a1ba0cbb957c2763e43a0bc3b19618ec6059c7e2 Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 15 Jul 2026 15:41:48 +0800 Subject: Preserve upstream desktop metadata Keep the base image's kinoite or silverblue identity intact. Detect AeroCore Deck behavior from its image name instead. --- build_files/image-info | 2 +- build_files/patch-bazzite-deck-identity.sh | 14 +------------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/build_files/image-info b/build_files/image-info index 84c6495..a52d666 100755 --- a/build_files/image-info +++ b/build_files/image-info @@ -17,7 +17,7 @@ OSTREE_REGISTRY="${OSTREE_REGISTRY:-docker://ghcr.io}" OSTREE_NAMESPACE="${OSTREE_NAMESPACE:-$IMAGE_VENDOR}" IMAGE_REF="${OSTREE_IMAGE_REF:-ostree-image-signed:${OSTREE_REGISTRY%/}/$OSTREE_NAMESPACE/$IMAGE_NAME}" IMAGE_BRANCH_NORMALIZED="$IMAGE_BRANCH" -BASE_IMAGE_NAME="bazzite-deck" +BASE_IMAGE_NAME=$(jq -er '."base-image-name"' < "$IMAGE_INFO") if [[ $IMAGE_BRANCH_NORMALIZED == "main" ]]; then IMAGE_BRANCH_NORMALIZED="stable" diff --git a/build_files/patch-bazzite-deck-identity.sh b/build_files/patch-bazzite-deck-identity.sh index 600d97e..078b76c 100755 --- a/build_files/patch-bazzite-deck-identity.sh +++ b/build_files/patch-bazzite-deck-identity.sh @@ -7,9 +7,7 @@ hardware_setup="${1:-/usr/libexec/bazzite-hardware-setup}" # shellcheck disable=SC2016 old_condition='if [[ "$IMAGE_NAME" != *deck* && "$IMAGE_NAME" != *dx* ]]; then' # shellcheck disable=SC2016 -new_condition='if [[ "$IMAGE_NAME" != aerocore-os && "$IMAGE_NAME" != *deck* && "$IMAGE_NAME" != *dx* && "$BASE_IMAGE_NAME" != *deck* && "$BASE_IMAGE_NAME" != *dx* ]]; then' -# shellcheck disable=SC2016 -base_image_assignment='BASE_IMAGE_NAME=$(jq -r '\''."base-image-name"'\'' < $IMAGE_INFO)' +new_condition='if [[ "$IMAGE_NAME" != aerocore-os && "$IMAGE_NAME" != *deck* && "$IMAGE_NAME" != *dx* ]]; then' if grep -Fqx "$new_condition" "$hardware_setup"; then exit 0 @@ -20,23 +18,13 @@ if [[ "$(grep -Fxc "$old_condition" "$hardware_setup")" -ne 1 ]]; then exit 1 fi -add_base_image_assignment=0 -if ! grep -Fqx "$base_image_assignment" "$hardware_setup"; then - add_base_image_assignment=1 -fi - patched_file=$(mktemp) trap 'rm -f "$patched_file"' EXIT awk \ -v old_condition="$old_condition" \ -v new_condition="$new_condition" \ - -v base_image_assignment="$base_image_assignment" \ - -v add_base_image_assignment="$add_base_image_assignment" \ '$0 == old_condition { - if (add_base_image_assignment) { - print base_image_assignment - } print new_condition next } -- cgit v1.2.3 From 392f7d45e3eb7341ba54899a12918743f186bc6c Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 15 Jul 2026 18:43:23 +0800 Subject: Fix ACR promotion environment vars Bind the manual promotion job to the selected GitHub Environment so environment-scoped ACR variables and secrets are available. Resolve the image name from the dispatch override first, then IMAGE_NAME, then image-template.env through just. Pass the Cosign password during signing. --- .github/workflows/promote-acr.yml | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/.github/workflows/promote-acr.yml b/.github/workflows/promote-acr.yml index 99a67f8..890962f 100644 --- a/.github/workflows/promote-acr.yml +++ b/.github/workflows/promote-acr.yml @@ -4,6 +4,11 @@ name: Promote image to ACR on: workflow_dispatch: inputs: + environment: + description: "GitHub Environment containing ACR vars/secrets" + required: true + default: testing + type: environment source_tag: description: "Existing GHCR tag to promote" required: true @@ -13,7 +18,7 @@ on: required: false type: string image_name: - description: "Image name override; defaults to image-template.env" + description: "Image name override; defaults to IMAGE_NAME var, then image-template.env" required: false type: string @@ -21,13 +26,14 @@ env: IMAGE_REGISTRY: "ghcr.io/${{ github.repository_owner }}" concurrency: - group: ${{ github.workflow }}-${{ inputs.image_name || 'default' }}-${{ inputs.source_tag }} + group: ${{ github.workflow }}-${{ inputs.environment }}-${{ inputs.image_name || 'default' }}-${{ inputs.source_tag }} cancel-in-progress: false jobs: promote_acr: name: Promote GHCR image to ACR runs-on: ubuntu-24.04 + environment: ${{ inputs.environment }} permissions: contents: read @@ -48,18 +54,21 @@ jobs: - name: Prepare image variables env: IMAGE_NAME_INPUT: ${{ inputs.image_name }} + IMAGE_NAME_VAR: ${{ vars.IMAGE_NAME }} SOURCE_TAG: ${{ inputs.source_tag }} TARGET_TAGS_INPUT: ${{ inputs.target_tags }} run: | set -euo pipefail - image_name="${IMAGE_NAME_INPUT:-$(just image_name)}" + image_name="${IMAGE_NAME_INPUT:-${IMAGE_NAME_VAR:-$(just image_name)}}" target_tags="${TARGET_TAGS_INPUT:-$SOURCE_TAG}" - echo "IMAGE_REGISTRY=${IMAGE_REGISTRY,,}" >> "$GITHUB_ENV" - echo "IMAGE_NAME=${image_name,,}" >> "$GITHUB_ENV" - echo "SOURCE_TAG=${SOURCE_TAG}" >> "$GITHUB_ENV" - echo "TARGET_TAGS=${target_tags}" >> "$GITHUB_ENV" + { + echo "IMAGE_REGISTRY=${IMAGE_REGISTRY,,}" + echo "IMAGE_NAME=${image_name,,}" + echo "SOURCE_TAG=${SOURCE_TAG}" + echo "TARGET_TAGS=${target_tags}" + } >> "$GITHUB_ENV" - name: Validate ACR configuration env: @@ -68,14 +77,16 @@ jobs: ACR_USERNAME: ${{ secrets.ACR_USERNAME }} ACR_PASSWORD: ${{ secrets.ACR_PASSWORD }} COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }} + COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} run: | set -euo pipefail - : "${ACR_REGISTRY:?Repository variable ACR_REGISTRY is required.}" - : "${ACR_NAMESPACE:?Repository variable ACR_NAMESPACE is required.}" - : "${ACR_USERNAME:?Repository secret ACR_USERNAME is required.}" - : "${ACR_PASSWORD:?Repository secret ACR_PASSWORD is required.}" - : "${COSIGN_PRIVATE_KEY:?Repository secret SIGNING_SECRET is required.}" + : "${ACR_REGISTRY:?Repository or environment variable ACR_REGISTRY is required.}" + : "${ACR_NAMESPACE:?Repository or environment variable ACR_NAMESPACE is required.}" + : "${ACR_USERNAME:?Repository or environment secret ACR_USERNAME is required.}" + : "${ACR_PASSWORD:?Repository or environment secret ACR_PASSWORD is required.}" + : "${COSIGN_PRIVATE_KEY:?Repository or environment secret SIGNING_SECRET is required.}" + : "${COSIGN_PASSWORD:?Repository or environment secret COSIGN_PASSWORD is required.}" - name: Login to GitHub Container Registry env: @@ -140,6 +151,7 @@ jobs: ACR_NAMESPACE: ${{ vars.ACR_NAMESPACE }} COSIGN_EXPERIMENTAL: false COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }} + COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} DIGEST: ${{ steps.promote.outputs.digest }} run: | set -euo pipefail -- cgit v1.2.3 From 04e27e0b977826b475b969f19783c1aad300b560 Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 15 Jul 2026 18:50:32 +0800 Subject: Remove ACR environment input Keep ACR promotion compatible with repositories that do not configure GitHub Environments by using repository-level variables and secrets. --- .github/workflows/promote-acr.yml | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/.github/workflows/promote-acr.yml b/.github/workflows/promote-acr.yml index 890962f..6b00e3b 100644 --- a/.github/workflows/promote-acr.yml +++ b/.github/workflows/promote-acr.yml @@ -4,11 +4,6 @@ name: Promote image to ACR on: workflow_dispatch: inputs: - environment: - description: "GitHub Environment containing ACR vars/secrets" - required: true - default: testing - type: environment source_tag: description: "Existing GHCR tag to promote" required: true @@ -26,14 +21,13 @@ env: IMAGE_REGISTRY: "ghcr.io/${{ github.repository_owner }}" concurrency: - group: ${{ github.workflow }}-${{ inputs.environment }}-${{ inputs.image_name || 'default' }}-${{ inputs.source_tag }} + group: ${{ github.workflow }}-${{ inputs.image_name || 'default' }}-${{ inputs.source_tag }} cancel-in-progress: false jobs: promote_acr: name: Promote GHCR image to ACR runs-on: ubuntu-24.04 - environment: ${{ inputs.environment }} permissions: contents: read @@ -81,12 +75,12 @@ jobs: run: | set -euo pipefail - : "${ACR_REGISTRY:?Repository or environment variable ACR_REGISTRY is required.}" - : "${ACR_NAMESPACE:?Repository or environment variable ACR_NAMESPACE is required.}" - : "${ACR_USERNAME:?Repository or environment secret ACR_USERNAME is required.}" - : "${ACR_PASSWORD:?Repository or environment secret ACR_PASSWORD is required.}" - : "${COSIGN_PRIVATE_KEY:?Repository or environment secret SIGNING_SECRET is required.}" - : "${COSIGN_PASSWORD:?Repository or environment secret COSIGN_PASSWORD is required.}" + : "${ACR_REGISTRY:?Repository variable ACR_REGISTRY is required.}" + : "${ACR_NAMESPACE:?Repository variable ACR_NAMESPACE is required.}" + : "${ACR_USERNAME:?Repository secret ACR_USERNAME is required.}" + : "${ACR_PASSWORD:?Repository secret ACR_PASSWORD is required.}" + : "${COSIGN_PRIVATE_KEY:?Repository secret SIGNING_SECRET is required.}" + : "${COSIGN_PASSWORD:?Repository secret COSIGN_PASSWORD is required.}" - name: Login to GitHub Container Registry env: -- cgit v1.2.3 From 4fc0c9bfe42b5d0e543c5ca44c86d25a19f5e1d9 Mon Sep 17 00:00:00 2001 From: tranch Date: Fri, 17 Jul 2026 06:56:56 +0800 Subject: Fix live installer ISO build Build the live installer from the requested local AeroCore image, use a separate Fedora live base, pass the payload through rootful container storage, and write reproducible checksum entries without host paths. --- .github/workflows/build-live-installer.yml | 17 ++++-- Justfile | 6 ++- disk_config/iso-gnome.toml | 7 --- disk_config/iso-kde.toml | 7 --- installer/Containerfile | 4 ++ installer/build.sh | 13 +++-- just_scripts/build-live-installer.sh | 84 ++++++++++++++++++++++++++---- 7 files changed, 105 insertions(+), 33 deletions(-) diff --git a/.github/workflows/build-live-installer.yml b/.github/workflows/build-live-installer.yml index 870699e..b5fedb3 100644 --- a/.github/workflows/build-live-installer.yml +++ b/.github/workflows/build-live-installer.yml @@ -13,6 +13,7 @@ on: branches: - main paths: + - "Justfile" - "installer/**" - "just_scripts/build-live-installer.sh" - ".github/workflows/build-live-installer.yml" @@ -34,7 +35,7 @@ jobs: env: IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} IMAGE_TAG: ${{ inputs.image_tag || 'latest' }} - BASE_IMAGE: ghcr.io/ublue-os/bazzite:stable + LIVE_BASE_IMAGE: quay.io/fedora/fedora-kinoite:43 FEDORA_VERSION: "44" steps: @@ -76,11 +77,21 @@ jobs: - name: Build live installer payload run: | + mkdir -p output + sudo podman tag \ + "${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" \ + localhost/aerocore-live-payload:latest + sudo podman save \ + --format oci-archive \ + --output output/install-payload.oci \ + localhost/aerocore-live-payload:latest + sudo podman build \ --cap-add sys_admin \ --security-opt label=disable \ - --build-arg "BASE_IMAGE=${BASE_IMAGE}" \ - --build-arg "INSTALL_IMAGE_PAYLOAD=${IMAGE_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" \ + --build-arg "BASE_IMAGE=${LIVE_BASE_IMAGE}" \ + --build-arg "INSTALL_IMAGE_PAYLOAD=localhost/aerocore-live-payload:latest" \ + --build-arg "INSTALL_IMAGE_PAYLOAD_ARCHIVE=/install-payload.oci" \ --tag localhost/aerocore-live-payload:latest \ --file installer/Containerfile \ . diff --git a/Justfile b/Justfile index 5e73752..b65d2c9 100644 --- a/Justfile +++ b/Justfile @@ -9,6 +9,8 @@ export image_logo_url := env_var("IMAGE_LOGO_URL") export default_tag := env_var("DEFAULT_TAG") export bib_image := env_var("BIB_IMAGE") export BASE_IMAGE := env_var_or_default("BASE_IMAGE", "ghcr.io/ublue-os/bazzite-deck:stable") +export LIVE_BASE_IMAGE := env_var_or_default("LIVE_BASE_IMAGE", "quay.io/fedora/fedora-kinoite:43") +export INSTALLER_BUILDER_IMAGE := env_var_or_default("INSTALLER_BUILDER_IMAGE", "ghcr.io/jasonn3/build-container-installer:v1.5.0") export FLATPAK_REMOTE_URL := env_var_or_default("FLATPAK_REMOTE_URL", "") export HOMEBREW_BOTTLE_DOMAIN := env_var_or_default("HOMEBREW_BOTTLE_DOMAIN", "") export HOMEBREW_API_DOMAIN := env_var_or_default("HOMEBREW_API_DOMAIN", "") @@ -28,8 +30,8 @@ default: @just --list # Build a Bazzite-style live installer ISO -build-live-installer: - @./just_scripts/build-live-installer.sh +build-live-installer $target_image=("localhost/" + image_name) $tag=default_tag: + @IMAGE_NAME="{{ target_image }}" IMAGE_TAG="{{ tag }}" ./just_scripts/build-live-installer.sh # Boot the live installer ISO with QEMU run-live-installer: diff --git a/disk_config/iso-gnome.toml b/disk_config/iso-gnome.toml index 0fa5652..33cf931 100644 --- a/disk_config/iso-gnome.toml +++ b/disk_config/iso-gnome.toml @@ -1,10 +1,3 @@ -[customizations.installer.kickstart] -contents = """ -%post -bootc switch --mutate-in-place --transport registry ghcr.io/aerocore-io/aerocore-bazzite-image:latest -%end -""" - [customizations.installer.modules] enable = [ "org.fedoraproject.Anaconda.Modules.Storage", diff --git a/disk_config/iso-kde.toml b/disk_config/iso-kde.toml index e6e15a0..7f6c80d 100644 --- a/disk_config/iso-kde.toml +++ b/disk_config/iso-kde.toml @@ -1,10 +1,3 @@ -[customizations.installer.kickstart] -contents = """ -%post -bootc switch --mutate-in-place --transport registry ghcr.io/aerocore-io/aerocore-bazzite-image:latest -%end -""" - [customizations.installer.modules] enable = [ "org.fedoraproject.Anaconda.Modules.Storage", diff --git a/installer/Containerfile b/installer/Containerfile index fa817b6..50579e6 100644 --- a/installer/Containerfile +++ b/installer/Containerfile @@ -3,13 +3,17 @@ ARG BASE_IMAGE=ghcr.io/ublue-os/bazzite:stable ARG INSTALL_IMAGE_PAYLOAD=ghcr.io/AeroCore-IO/aerocore-bazzite-image:stable +ARG INSTALL_IMAGE_PAYLOAD_ARCHIVE=/install-payload.oci FROM ${BASE_IMAGE} ARG BASE_IMAGE ARG INSTALL_IMAGE_PAYLOAD +ARG INSTALL_IMAGE_PAYLOAD_ARCHIVE RUN --mount=type=bind,source=.,target=/src \ + --mount=type=bind,source=output/install-payload.oci,target=/install-payload.oci,ro \ env BASE_IMAGE="${BASE_IMAGE}" \ INSTALL_IMAGE_PAYLOAD="${INSTALL_IMAGE_PAYLOAD}" \ + INSTALL_IMAGE_PAYLOAD_ARCHIVE="${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" \ /src/installer/build.sh diff --git a/installer/build.sh b/installer/build.sh index 7532df8..033fe9b 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -5,10 +5,14 @@ set -euxo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BASE_IMAGE=${BASE_IMAGE:?} INSTALL_IMAGE_PAYLOAD=${INSTALL_IMAGE_PAYLOAD:?} +INSTALL_IMAGE_PAYLOAD_ARCHIVE=${INSTALL_IMAGE_PAYLOAD_ARCHIVE:-} # The installer is a live KDE environment. Keep the installed system payload # separate: it is the AeroCore image, while BASE_IMAGE provides the live UI. -dnf install -y \ +# Bazzite excludes some base packages from normal transactions. The live +# installer needs Anaconda's exact NetworkManager dependencies, so clear the +# excludes only for this dependency install. +dnf --setopt=excludepkgs= install -y \ anaconda-live \ libblockdev-btrfs \ libblockdev-dm \ @@ -22,9 +26,10 @@ if [[ -d /src/system_files ]]; then cp -a /src/system_files/. / fi -# Make the install payload available to Anaconda. When the build is running -# with the host container store mounted, this avoids a second registry pull. -if mountpoint -q /usr/lib/containers/storage; then +# Make the install payload available to Anaconda. +if [[ -n "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" && -f "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" ]]; then + podman load --storage-opt additionalimagestore='' < "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" +elif mountpoint -q /usr/lib/containers/storage; then podman save --format oci-archive "${INSTALL_IMAGE_PAYLOAD}" | \ podman load --storage-opt additionalimagestore='' else diff --git a/just_scripts/build-live-installer.sh b/just_scripts/build-live-installer.sh index 16b371e..45335cb 100755 --- a/just_scripts/build-live-installer.sh +++ b/just_scripts/build-live-installer.sh @@ -5,41 +5,98 @@ set -euo pipefail project_root="$(git rev-parse --show-toplevel)" cd "${project_root}" -image_name="${IMAGE_NAME:-$(just image_name)}" +image_name="${IMAGE_NAME:-localhost/$(just image_name)}" image_tag="${IMAGE_TAG:-$(just generate-default-tag)}" -base_image="${BASE_IMAGE:-ghcr.io/ublue-os/bazzite:stable}" -payload="localhost/${image_name}:live-payload" +live_base_image="${LIVE_BASE_IMAGE:-quay.io/fedora/fedora-kinoite:43}" +installer_builder_image="${INSTALLER_BUILDER_IMAGE:-ghcr.io/jasonn3/build-container-installer:v1.5.0}" +source_image="${image_name}:${image_tag}" +payload="localhost/aerocore-live-payload:latest" output_dir="${project_root}/output" +payload_archive="${output_dir}/install-payload.oci" +iso="${output_dir}/aerocore-os-${image_tag}-amd64.iso" +checksum="${iso}-CHECKSUM" api_socket="${PODMAN_SOCKET:-/run/podman/podman.sock}" if [[ "${EUID}" -eq 0 ]]; then podman_cmd=(podman) + socket_test=(test -S "${api_socket}") else podman_cmd=(sudo podman) + socket_test=(sudo test -S "${api_socket}") fi -if [[ ! -S "${api_socket}" ]]; then +if ! "${socket_test[@]}"; then echo "Podman API socket not found: ${api_socket}" >&2 echo "Set PODMAN_SOCKET to the rootful Podman socket and retry." >&2 exit 1 fi +ensure_rootful_image() { + local root_image_id user_image_id user_name user_uid copy_tmp + + root_image_id="$("${podman_cmd[@]}" images \ + --filter "reference=${source_image}" \ + --format "{{.ID}}" | head -n1)" + + if [[ -n "${root_image_id}" ]]; then + return 0 + fi + + if [[ "${EUID}" -ne 0 ]]; then + just _rootful_load_image "${image_name}" "${image_tag}" + return + fi + + if [[ -z "${SUDO_USER:-}" ]]; then + return + fi + + user_name="${SUDO_USER}" + user_uid="$(id -u "${user_name}")" + user_image_id="$(sudo -u "${user_name}" \ + env XDG_RUNTIME_DIR="/run/user/${user_uid}" \ + podman images \ + --filter "reference=${source_image}" \ + --format "{{.ID}}" | head -n1)" + + if [[ -z "${user_image_id}" ]]; then + return + fi + + copy_tmp="$(mktemp -p "${project_root}" -d -t _build_podman_scp.XXXXXXXXXX)" + TMPDIR="${copy_tmp}" podman image scp \ + "${user_uid}@localhost::${source_image}" \ + "root@localhost::${source_image}" + rm -rf "${copy_tmp}" +} + mkdir -p "${output_dir}" -"${podman_cmd[@]}" tag "${image_name}:${image_tag}" "${payload}" +ensure_rootful_image + +"${podman_cmd[@]}" tag "${source_image}" "${payload}" +"${podman_cmd[@]}" save --format oci-archive --output "${payload_archive}" "${payload}" "${podman_cmd[@]}" build \ --cap-add sys_admin \ --security-opt label=disable \ - --build-arg "BASE_IMAGE=${base_image}" \ + --build-arg "BASE_IMAGE=${live_base_image}" \ --build-arg "INSTALL_IMAGE_PAYLOAD=${payload}" \ - --tag localhost/aerocore-live-payload:latest \ + --build-arg "INSTALL_IMAGE_PAYLOAD_ARCHIVE=/install-payload.oci" \ + --tag "${payload}" \ --file installer/Containerfile \ . +if [[ "${EUID}" -eq 0 ]]; then + rm -f "${iso}" "${checksum}" +else + sudo rm -f "${iso}" "${checksum}" +fi + "${podman_cmd[@]}" run --rm --privileged \ --volume "${api_socket}:/var/run/docker.sock" \ + --volume /var/lib/containers/storage:/var/lib/containers/storage \ --volume "${project_root}/output:/build-container-installer/build" \ --volume "${project_root}/installer/lorax_templates:/additional_lorax_templates:ro" \ - docker.io/jasonn3/build-container-installer:latest \ + "${installer_builder_image}" \ ADDITIONAL_TEMPLATES="/additional_lorax_templates/remove_root_password_prompt.tmpl /additional_lorax_templates/set_default_user.tmpl" \ ARCH="x86_64" \ ENABLE_CACHE_DNF="false" \ @@ -47,12 +104,19 @@ mkdir -p "${output_dir}" ENABLE_FLATPAK_DEPENDENCIES="false" \ IMAGE_NAME="aerocore-live-payload" \ IMAGE_REPO="localhost" \ + IMAGE_SRC="containers-storage:${payload}" \ IMAGE_TAG="latest" \ ISO_NAME="build/aerocore-os-${image_tag}-amd64.iso" \ VARIANT="Kinoite" \ VERSION="${FEDORA_VERSION:-44}" -iso="${output_dir}/aerocore-os-${image_tag}-amd64.iso" if [[ -f "${iso}" ]]; then - sha256sum "${iso}" | tee "${iso}-CHECKSUM" + if [[ "${EUID}" -ne 0 ]]; then + sudo chown "$(id -u):$(id -g)" "${iso}" + sudo rm -f "${checksum}" + (cd "${output_dir}" && sha256sum "$(basename "${iso}")") | sudo tee "${checksum}" + sudo chown "$(id -u):$(id -g)" "${checksum}" + else + (cd "${output_dir}" && sha256sum "$(basename "${iso}")") | tee "${checksum}" + fi fi -- cgit v1.2.3 From 0e0290ab60bb89b9ddaedfe3a10127ba999f9383 Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 22 Jul 2026 08:40:43 +0800 Subject: Constrain builds to bazzite-deck Keep the live installer Fedora version aligned with the deck base image and fail early if BASE_IMAGE is overridden to a non-deck variant. --- .github/workflows/build-live-installer.yml | 3 ++- Containerfile | 2 +- build_files/build.sh | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-live-installer.yml b/.github/workflows/build-live-installer.yml index b5fedb3..98441df 100644 --- a/.github/workflows/build-live-installer.yml +++ b/.github/workflows/build-live-installer.yml @@ -35,8 +35,9 @@ jobs: env: IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} IMAGE_TAG: ${{ inputs.image_tag || 'latest' }} + # Keep these aligned with the Fedora major used by the target bazzite-deck base image. LIVE_BASE_IMAGE: quay.io/fedora/fedora-kinoite:43 - FEDORA_VERSION: "44" + FEDORA_VERSION: "43" steps: - name: Maximize build space diff --git a/Containerfile b/Containerfile index c9377ca..16e85a2 100644 --- a/Containerfile +++ b/Containerfile @@ -7,6 +7,7 @@ COPY system_files /system_files # Base Image FROM ${BASE_IMAGE} +ARG BASE_IMAGE ARG IMAGE_NAME="aerocore-os" ARG IMAGE_VENDOR="AeroCore-IO" ARG IMAGE_BRANCH="stable" @@ -16,7 +17,6 @@ ARG OSTREE_IMAGE_REF="" ## Other possible base images include: # ghcr.io/ublue-os/bazzite-deck:testing # ghcr.io/ublue-os/bazzite-deck:stable-43.20260420 -# ghcr.io/ublue-os/bazzite:stable ### [IM]MUTABLE /opt ## Some bootable images, like Fedora, have /opt symlinked to /var/opt, in order to diff --git a/build_files/build.sh b/build_files/build.sh index 3d37e31..03adff0 100755 --- a/build_files/build.sh +++ b/build_files/build.sh @@ -2,6 +2,15 @@ set -ouex pipefail +case "${BASE_IMAGE:-}" in + ghcr.io/ublue-os/bazzite-deck:* | ghcr.io/ublue-os/bazzite-deck@*) + ;; + *) + echo "AeroCore OS only supports bazzite-deck BASE_IMAGE values for HTPC game-mode builds: ${BASE_IMAGE:-}" >&2 + exit 1 + ;; +esac + # Copy the contents of system_files/ of the git repo to / cp -avf "/ctx/system_files"/. / -- cgit v1.2.3 From 9a5fc8296062669cd43689727451da6946860b7d Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 22 Jul 2026 16:08:54 +0800 Subject: ci: pin Titanoboa live installer action --- .github/workflows/build-live-installer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-live-installer.yml b/.github/workflows/build-live-installer.yml index 98441df..059c3e9 100644 --- a/.github/workflows/build-live-installer.yml +++ b/.github/workflows/build-live-installer.yml @@ -99,7 +99,7 @@ jobs: - name: Build ISO id: build - uses: Zeglius/titanoboa@revamp-pr + uses: Zeglius/titanoboa@7737f4748458252ac827dca14b3d6dd09298472a # revamp-pr with: arch: x86_64 image_name: aerocore-live-payload -- cgit v1.2.3 From 226cda5808873f213ea858f85404eb8d61d7c82b Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 22 Jul 2026 16:21:37 +0800 Subject: ci: fix workflow inputs and paths --- .github/workflows/build-disk.yml | 7 +++---- .github/workflows/build.yml | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-disk.yml b/.github/workflows/build-disk.yml index 02ef44a..869277d 100644 --- a/.github/workflows/build-disk.yml +++ b/.github/workflows/build-disk.yml @@ -19,10 +19,9 @@ on: branches: - main paths: - - './disk_config/disk.toml' - - './disk_config/iso-kde.toml' - - './disk_config/iso-gnome.toml' - - './.github/workflows/build-disk.yml' + - 'disk_config/disk.toml' + - 'disk_config/iso-kde.toml' + - '.github/workflows/build-disk.yml' env: IMAGE_NAME: ${{ github.event.repository.name }} # output of build.yml, keep in sync diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 49d2f81..3182eff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ env: IMAGE_REGISTRY: "ghcr.io/${{ github.repository_owner }}" # do not edit concurrency: - group: ${{ github.workflow }}-${{ github.ref || github.run_id }}-${{ inputs.brand_name}}-${{ inputs.stream_name }} + group: ${{ github.workflow }}-${{ github.ref || github.run_id }} cancel-in-progress: true jobs: -- cgit v1.2.3 From 40ee74f08f96c7be7c3356b98152a6a1f1a31f4d Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 22 Jul 2026 16:31:49 +0800 Subject: ci: add live installer PR validation --- .github/workflows/validate-live-installer.yml | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/validate-live-installer.yml diff --git a/.github/workflows/validate-live-installer.yml b/.github/workflows/validate-live-installer.yml new file mode 100644 index 0000000..3d35a5d --- /dev/null +++ b/.github/workflows/validate-live-installer.yml @@ -0,0 +1,40 @@ +name: Validate live installer + +on: + pull_request: + paths: + - "Justfile" + - "installer/**" + - "just_scripts/build-live-installer.sh" + - ".github/workflows/build-live-installer.yml" + - ".github/workflows/validate-live-installer.yml" + +permissions: + contents: read + +jobs: + validate-live-installer: + name: Validate live installer inputs + runs-on: ubuntu-24.04 + + steps: + - name: Checkout + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + + - name: Install just + uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4 + + - name: Validate workflow YAML + run: | + ruby -e 'require "yaml"; Dir[".github/workflows/*.yml"].each { |file| YAML.load_file(file) }' + + - name: Validate Justfile formatting + run: | + just --unstable --fmt --check -f Justfile + + - name: Validate build scripts + run: | + for script in build_files/*.sh installer/*.sh just_scripts/*.sh; do + bash -n "$script" + done + bash -n system_files/usr/libexec/aerocore-instruments-setup -- cgit v1.2.3 From 54790d45fba14c63544355e4c78247e9e05d6c7d Mon Sep 17 00:00:00 2001 From: tranch Date: Wed, 22 Jul 2026 16:40:16 +0800 Subject: ci: quote workflow shell variables --- .github/workflows/build-disk.yml | 14 ++++++++------ .github/workflows/build.yml | 35 ++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build-disk.yml b/.github/workflows/build-disk.yml index 869277d..cef58be 100644 --- a/.github/workflows/build-disk.yml +++ b/.github/workflows/build-disk.yml @@ -54,11 +54,13 @@ jobs: # Concatenate the types with a hyphen DISK_TYPE=$(echo "${{ matrix.disk-type }}" | tr ' ' '-') # Lowercase the image uri - echo "IMAGE_REGISTRY=${IMAGE_REGISTRY,,}" >> ${GITHUB_ENV} - echo "IMAGE_NAME=${IMAGE_NAME,,}" >> ${GITHUB_ENV} - echo "DISK_TYPE=${DISK_TYPE}" >> ${GITHUB_ENV} - echo "USER_UID=${USER_UID}" >> ${GITHUB_ENV} - echo "USER_GID=${USER_GID}" >> ${GITHUB_ENV} + { + echo "IMAGE_REGISTRY=${IMAGE_REGISTRY,,}" + echo "IMAGE_NAME=${IMAGE_NAME,,}" + echo "DISK_TYPE=${DISK_TYPE}" + echo "USER_UID=${USER_UID}" + echo "USER_GID=${USER_GID}" + } >> "$GITHUB_ENV" - name: Install dependencies if: inputs.platform == 'arm64' @@ -112,4 +114,4 @@ jobs: run: | sudo apt-get update sudo apt-get install -y rclone - rclone copy $SOURCE_DIR S3:${{ secrets.S3_BUCKET_NAME }} + rclone copy "$SOURCE_DIR" "S3:${{ secrets.S3_BUCKET_NAME }}" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3182eff..a4661fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -69,7 +69,7 @@ jobs: run: | IMAGE_NAME=$(just image_name) - echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV + echo "IMAGE_NAME=${IMAGE_NAME}" >> "$GITHUB_ENV" - name: Default Tag id: gen-default-tag @@ -80,13 +80,13 @@ jobs: DEFAULT_TAG=$(just generate-default-tag) fi - echo "DEFAULT_TAG=${DEFAULT_TAG}" >> $GITHUB_ENV + echo "DEFAULT_TAG=${DEFAULT_TAG}" >> "$GITHUB_ENV" - name: Prepare environment run: | # Lowercase the image uri https://github.com/macbre/push-to-ghcr/issues/12 - echo "IMAGE_REGISTRY=${IMAGE_REGISTRY,,}" >> ${GITHUB_ENV} - echo "IMAGE_NAME=${IMAGE_NAME,,}" >> ${GITHUB_ENV} + echo "IMAGE_REGISTRY=${IMAGE_REGISTRY,,}" >> "$GITHUB_ENV" + echo "IMAGE_NAME=${IMAGE_NAME,,}" >> "$GITHUB_ENV" # This actually builds the container image - name: Build Image @@ -102,17 +102,17 @@ jobs: INSTRUMENTS_VERSION: ${{ vars.INSTRUMENTS_VERSION || 'latest' }} INSTRUMENTS_RELEASE_API_BASE: ${{ vars.INSTRUMENTS_RELEASE_API_BASE || 'https://api.github.com' }} run: | - sudo -E $(command -v just) build \ - ${IMAGE_NAME} \ - ${DEFAULT_TAG} + sudo -E "$(command -v just)" build \ + "${IMAGE_NAME}" \ + "${DEFAULT_TAG}" # This is optional, this provides smaller delta updates - name: Rechunk with rpm-ostree id: rechunk run: | - sudo -E $(command -v just) ostree-rechunk \ - ${IMAGE_NAME} \ - ${DEFAULT_TAG} + sudo -E "$(command -v just)" ostree-rechunk \ + "${IMAGE_NAME}" \ + "${DEFAULT_TAG}" # If you are feeling adventurous, use the new distro agnostic rechunker # https://github.com/coreos/chunkah @@ -131,20 +131,20 @@ jobs: alias_tags="testing ${DEFAULT_TAG}" else alias_tags="$(just generate-build-tags \ - ${IMAGE_NAME} \ - ${DEFAULT_TAG})" + "${IMAGE_NAME}" \ + "${DEFAULT_TAG}")" fi echo "Tags for this Action..." echo "${alias_tags}" - echo "alias_tags=${alias_tags}" >> $GITHUB_OUTPUT + echo "alias_tags=${alias_tags}" >> "$GITHUB_OUTPUT" - name: Tag Image id: tag-images env: ALIAS_TAGS: ${{ steps.gen-build-tags.outputs.alias_tags }} run: | - sudo -E $(command -v just) tag-images \ + sudo -E "$(command -v just)" tag-images \ "${IMAGE_NAME}" \ "${DEFAULT_TAG}" \ "${ALIAS_TAGS}" @@ -167,12 +167,13 @@ jobs: run: | set -euox pipefail for tag in ${ALIAS_TAGS}; do - sudo -E podman push --digestfile=/tmp/digestfile ${IMAGE_NAME}:${tag} ${IMAGE_REGISTRY}/${IMAGE_NAME}:${tag} + sudo -E podman push --digestfile=/tmp/digestfile \ + "${IMAGE_NAME}:${tag}" "${IMAGE_REGISTRY}/${IMAGE_NAME}:${tag}" done digest=$(< /tmp/digestfile) - echo "digest=${digest}" >> $GITHUB_OUTPUT + echo "digest=${digest}" >> "$GITHUB_OUTPUT" # This section is optional and only needs to be enabled if you plan on distributing # your project for others to consume. You will need to create a public and private key @@ -194,4 +195,4 @@ jobs: COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} DIGEST: ${{ steps.push-image.outputs.digest }} run: | - cosign sign -y --key env://COSIGN_PRIVATE_KEY ${IMAGE_REGISTRY}/${IMAGE_NAME}@${DIGEST} + cosign sign -y --key env://COSIGN_PRIVATE_KEY "${IMAGE_REGISTRY}/${IMAGE_NAME}@${DIGEST}" -- cgit v1.2.3