summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortranch <tranch.xiao@gmail.com>2026-07-25 09:30:11 +0800
committertranch <tranch.xiao@gmail.com>2026-07-25 09:30:11 +0800
commit9c32f16d4c982559e1982454d2ee155e0f2efa48 (patch)
tree802810b5235102b7fd75fa04bcbda02e52db8170
parent9bb1a2bb2fdce598e551d1a53c4cb977870f3157 (diff)
downloadAeroCore-OS-9c32f16d4c982559e1982454d2ee155e0f2efa48.tar.gz
AeroCore-OS-9c32f16d4c982559e1982454d2ee155e0f2efa48.zip
Preserve Deck runtime checks for AeroCore
Patch Bazzite Steam and user setup scripts to recognize aerocore-os as a Deck image, keeping Steam bootstrap and gamescope-related initialization active after rebranding.
-rwxr-xr-xbuild_files/patch-bazzite-deck-identity.sh107
1 files changed, 82 insertions, 25 deletions
diff --git a/build_files/patch-bazzite-deck-identity.sh b/build_files/patch-bazzite-deck-identity.sh
index 078b76c..05b6e5f 100755
--- a/build_files/patch-bazzite-deck-identity.sh
+++ b/build_files/patch-bazzite-deck-identity.sh
@@ -2,34 +2,91 @@
set -euo pipefail
-hardware_setup="${1:-/usr/libexec/bazzite-hardware-setup}"
-# These are literal source lines; variable expansion must happen at boot time.
-# 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* ]]; then'
+root="${AEROCORE_DECK_COMPAT_ROOT:-}"
+root="${root%/}"
+
+target_path() {
+ printf '%s%s\n' "$root" "$1"
+}
+
+patch_condition() {
+ local file="$1"
+ local old_condition="$2"
+ local new_condition="$3"
+ local expected_count="$4"
+ local old_count new_count patched_file
+
+ if [[ ! -f "$file" ]]; then
+ echo "Unable to locate expected Bazzite Deck file: $file" >&2
+ exit 1
+ fi
+
+ new_count="$(grep -Foc "$new_condition" "$file" || true)"
+ if [[ "$new_count" -eq "$expected_count" ]]; then
+ return 0
+ fi
-if grep -Fqx "$new_condition" "$hardware_setup"; then
- exit 0
-fi
+ old_count="$(grep -Foc "$old_condition" "$file" || true)"
+ if [[ "$old_count" -ne "$expected_count" ]]; then
+ echo "Unable to locate the expected Bazzite Deck image check in $file" >&2
+ echo "Expected $expected_count occurrence(s), found old=$old_count new=$new_count" >&2
+ exit 1
+ fi
-if [[ "$(grep -Fxc "$old_condition" "$hardware_setup")" -ne 1 ]]; then
- echo "Unable to locate the Bazzite Deck image check in $hardware_setup" >&2
- exit 1
-fi
+ patched_file="$(mktemp)"
+ awk \
+ -v old_condition="$old_condition" \
+ -v new_condition="$new_condition" \
+ ' {
+ position = index($0, old_condition)
+ if (position) {
+ $0 = substr($0, 1, position - 1) new_condition substr($0, position + length(old_condition))
+ }
+ print
+ }' "$file" > "$patched_file"
-patched_file=$(mktemp)
-trap 'rm -f "$patched_file"' EXIT
+ cp "$patched_file" "$file"
+ rm -f "$patched_file"
-awk \
- -v old_condition="$old_condition" \
- -v new_condition="$new_condition" \
- '$0 == old_condition {
- print new_condition
- next
- }
- { print }' "$hardware_setup" > "$patched_file"
+ new_count="$(grep -Foc "$new_condition" "$file" || true)"
+ if [[ "$new_count" -ne "$expected_count" ]]; then
+ echo "Failed to patch the Bazzite Deck image check in $file" >&2
+ exit 1
+ fi
+}
-cp "$patched_file" "$hardware_setup"
+# Keep AeroCore's public image-name, while restoring the Deck capability checks
+# used by Bazzite's runtime scripts. These are literal source lines; variable
+# expansion must happen later, when the scripts run on the installed system.
+# shellcheck disable=SC2016
+patch_condition \
+ "${1:-$(target_path /usr/libexec/bazzite-hardware-setup)}" \
+ 'if [[ "$IMAGE_NAME" != *deck* && "$IMAGE_NAME" != *dx* ]]; then' \
+ 'if [[ "$IMAGE_NAME" != aerocore-os && "$IMAGE_NAME" != *deck* && "$IMAGE_NAME" != *dx* ]]; then' \
+ 1
+
+# The hardware setup has a second Deck-only block after the top-level image
+# guard. Keep it active for AeroCore as well.
+# shellcheck disable=SC2016
+patch_condition \
+ "${1:-$(target_path /usr/libexec/bazzite-hardware-setup)}" \
+ 'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" ]]; then' \
+ 'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" || $IMAGE_NAME == aerocore-os ]]; then' \
+ 1
-grep -Fqx "$new_condition" "$hardware_setup"
+# bazzite-steam gates the Steam bootstrap archive and -steamdeck flag on the
+# image name. The user setup script has the same Deck-only gating in three
+# places.
+# shellcheck disable=SC2016
+patch_condition \
+ "$(target_path /usr/bin/bazzite-steam)" \
+ 'if [[ $IMAGE_NAME =~ "deck" ]]; then' \
+ 'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME == aerocore-os ]]; then' \
+ 1
+
+# shellcheck disable=SC2016
+patch_condition \
+ "$(target_path /usr/libexec/bazzite-user-setup)" \
+ 'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" ]]; then' \
+ 'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" || $IMAGE_NAME == aerocore-os ]]; then' \
+ 3