Skip to content
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
b51f5d2
chore(anaconda): update Anaconda configuration for centos-release-kmo…
hanthor Aug 5, 2025
5c1bb2d
Merge pull request #4 from hanthor/webui
hanthor Aug 5, 2025
4810555
chore(workflow): update Maximize build space step to use container-st…
hanthor Aug 5, 2025
f5ef86b
chore(workflow): update Maximize build space step to use container-st…
hanthor Aug 5, 2025
d724506
Merge pull request #5 from ublue-os/main
pull[bot] Aug 5, 2025
2733b19
Merge pull request #6 from ublue-os/main
pull[bot] Aug 6, 2025
c76f53a
Merge pull request #7 from ublue-os/main
pull[bot] Aug 6, 2025
fc4248e
chore(anaconda): add LTS configuration script and support for webui i…
hanthor Aug 6, 2025
4ca4205
chore(anaconda): fix incorrect directory for webui in liveinst script
hanthor Aug 6, 2025
8d3e599
chore(anaconda): remove anaconda-liveinst in favor of anaconda-live
hanthor Aug 6, 2025
1252544
chore(anaconda): add libblockdev-btrfs to the installation specificat…
hanthor Aug 6, 2025
3b9fff3
chore(anaconda): add libdnf5 and python3-libdnf5 to installation spec…
hanthor Aug 6, 2025
093546b
chore(anaconda): add a newline after removing anaconda-liveinst for b…
hanthor Aug 6, 2025
d62cb72
Merge branch 'main' into webui
hanthor Aug 6, 2025
6221f41
Merge branch 'main' into webui
hanthor Aug 6, 2025
6c257c7
fix: update image reference and adjust artifact upload condition in w…
hanthor Aug 7, 2025
25bb98f
Merge branch 'main' into webui
hanthor Aug 7, 2025
ad7857e
fix: use central flatpak list
hanthor Aug 7, 2025
138dbc9
revert: changing to xfs
hanthor Aug 7, 2025
60ad518
revert: fedora to btrfs
hanthor Aug 7, 2025
70b7e9d
fix: remove sudo
hanthor Aug 7, 2025
f3e3c56
fix: run both space savers
hanthor Aug 7, 2025
cd31e1c
Update .github/workflows/reusable-build-iso-anaconda.yml
hanthor Aug 7, 2025
10f5339
fix: double maximize space
hanthor Aug 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions .github/workflows/reusable-build-iso-anaconda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,12 @@ jobs:
podman

- name: Maximize build space
if: matrix.platform != 'arm64'
uses: ublue-os/remove-unwanted-software@cc0becac701cf642c8f0a6613bbdaf5dc36b259e # v9
uses: ublue-os/container-storage-action@911baca08baf30c8654933e9e9723cb399892140
continue-on-error: true
with:
remove-codeql: true
target-dir: /var/lib/containers
mount-opts: compress-force=zstd:2
loopback-free: 0.9

- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
Expand Down Expand Up @@ -89,8 +91,10 @@ jobs:
with:
image-ref: ${{ steps.image_ref.outputs.image_ref }}:${{ matrix.image_version }}
flatpaks-list: ${{ github.workspace }}/flatpaks/system-flatpaks.list
hook-post-rootfs: ${{ github.workspace }}/iso_files/configure_iso_anaconda.sh
hook-post-rootfs: ${{ matrix.image_version == 'lts' && format('{0}/iso_files/configure_lts_iso_anaconda.sh', github.workspace) || format('{0}/iso_files/configure_iso_anaconda.sh', github.workspace) }}
kargs: ${{ steps.image_ref.outputs.kargs }}
builder-distro: ${{ matrix.image_version == 'lts' && 'centos' || 'fedora' }}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the important bit



- name: Rename ISO
id: rename
Expand All @@ -108,7 +112,7 @@ jobs:
echo "output_directory=$OUTPUT_DIRECTORY" >> "${GITHUB_OUTPUT}"

- name: Upload to Job Artifacts
if: github.event_name == 'pull_request'
if: github.ref == 'testing'
Comment thread
hanthor marked this conversation as resolved.
Outdated
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: ${{ steps.image_ref.outputs.artifact_format }}
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/reusable-build-iso.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,12 @@ jobs:
podman

- name: Maximize build space
uses: ublue-os/remove-unwanted-software@cc0becac701cf642c8f0a6613bbdaf5dc36b259e # v9
uses: ublue-os/container-storage-action@911baca08baf30c8654933e9e9723cb399892140
continue-on-error: true
with:
remove-codeql: true
target-dir: /var/lib/containers
mount-opts: compress-force=zstd:2
loopback-free: 0.9

- name: Setup Just
uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3
Expand Down
12 changes: 7 additions & 5 deletions iso_files/configure_iso_anaconda.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ SPECS=(
"anaconda-live"
)
if [[ "$IMAGE_TAG" =~ lts ]]; then
dnf config-manager --set-enabled centos-hyperscale
dnf config-manager --set-enabled centos-release-kmods-kernel
dnf copr enable -y jreilly/anaconda-webui

SPECS+=("anaconda-webui")
elif [[ "$(rpm -E %fedora)" -ge 42 ]]; then
SPECS+=("anaconda-webui")
fi
Expand Down Expand Up @@ -85,12 +88,11 @@ efi_dir = fedora
menu_auto_hide = True

[Storage]
default_scheme = BTRFS
btrfs_compression = zstd:1
default_scheme = xfs
default_partitioning =
/ (min 1 GiB, max 70 GiB)
/home (min 500 MiB, free 50 GiB)
/var (btrfs)
/var

[User Interface]
custom_stylesheet = /usr/share/anaconda/pixmaps/silverblue/fedora-silverblue.css
Expand All @@ -112,7 +114,7 @@ fi

# Configure
. /etc/os-release
if [[ "$IMAGE_TAG" =~ gts|lts ]]; then
if [[ "$IMAGE_TAG" =~ gts ]]; then
echo "Bluefin ${IMAGE_TAG^^} release $VERSION_ID (${VERSION_CODENAME:=Big Bird})" >/etc/system-release
else
echo "Bluefin release $VERSION_ID ($VERSION_CODENAME)" >/etc/system-release
Expand Down
188 changes: 188 additions & 0 deletions iso_files/configure_lts_iso_anaconda.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
#!/usr/bin/env bash

@hanthor hanthor Aug 7, 2025

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made an entirely different script for LTS, too many differences. May need the custom sbkey for GDX/HWE once we add akmods to those builds


set -eoux pipefail

IMAGE_INFO="$(cat /usr/share/ublue-os/image-info.json)"
IMAGE_TAG="$(jq -c -r '."image-tag"' <<<"$IMAGE_INFO")"
IMAGE_REF="$(jq -c -r '."image-ref"' <<<"$IMAGE_INFO")"
IMAGE_REF="${IMAGE_REF##*://}"
# sbkey='https://github.com/ublue-os/akmods/raw/main/certs/public_key.der'

# Configure Live Environment

# Remove packages from liveCD to save space
dnf remove -y google-noto-fonts-all ublue-brew ublue-motd yaru-theme || true

# Setup dock
tee /usr/share/glib-2.0/schemas/zz2-org.gnome.shell.gschema.override <<EOF
[org.gnome.shell]
welcome-dialog-last-shown-version='4294967295'
favorite-apps = ['anaconda.desktop', 'documentation.desktop', 'discourse.desktop', 'org.mozilla.firefox.desktop', 'org.gnome.Nautilus.desktop']
EOF


glib-compile-schemas /usr/share/glib-2.0/schemas

systemctl disable rpm-ostree-countme.service
systemctl disable tailscaled.service
systemctl disable bootloader-update.service
# systemctl disable brew-upgrade.timer
# systemctl disable brew-update.timer
# systemctl disable brew-setup.service
systemctl disable rpm-ostreed-automatic.timer
systemctl disable uupd.timer
systemctl disable ublue-system-setup.service
# systemctl disable ublue-guest-user.service
systemctl disable check-sb-key.service
# systemctl --global disable ublue-flatpak-manager.service
systemctl --global disable podman-auto-update.timer
systemctl --global disable ublue-user-setup.service

# Configure Anaconda

# remove anaconda-liveinst to be replaced with anaconda-live
dnf remove -y anaconda-liveinst

# Install Anaconda, Webui if >= F42
SPECS=(
"libdnf5"
"python3-libdnf5"
"libblockdev"
"libblockdev-lvm"
"libblockdev-dm"
"libblockdev-btrfs"
"anaconda-live"
"anaconda-webui"
"firefox"
)

dnf copr enable -y jreilly1821/anaconda-webui

dnf install -y "${SPECS[@]}"


# Fix the wrong dir for webui
sudo sed -i 's|/usr/libexec/webui-desktop|/usr/libexec/anaconda/webui-desktop|g' /bin/liveinst
Comment thread
hanthor marked this conversation as resolved.
Outdated

# Anaconda Profile Detection

# Bluefin
tee /etc/anaconda/profile.d/bluefin-lts.conf <<'EOF'
# Anaconda configuration file for Bluefin LTS

[Profile]
# Define the profile.
profile_id = bluefin

[Profile Detection]
# Match os-release values
os_id = bluefin-lts

[Network]
default_on_boot = FIRST_WIRED_WITH_LINK

[Bootloader]
efi_dir = centos
menu_auto_hide = True

[Storage]
file_system_type = xfs
default_partitioning =
/ (min 5 GiB, max 70 GiB)
/var (min 5 GiB)

[User Interface]
custom_stylesheet = /usr/share/anaconda/pixmaps/silverblue/fedora-silverblue.css
hidden_spokes =
NetworkSpoke
PasswordSpoke
UserSpoke
hidden_webui_pages =
anaconda-screen-accounts

[Localization]
use_geolocation = False
EOF

sed -i 's/^ID=.*/ID=bluefin-lts/' /usr/lib/os-release
echo "VARIANT_ID=bluefin-lts" >>/usr/lib/os-release

# Configure
. /etc/os-release
# if [[ "$IMAGE_TAG" =~ gts ]]; then
# echo "Bluefin ${IMAGE_TAG^^} release $VERSION_ID (${VERSION_CODENAME:=Big Bird})" >/etc/system-release
# else
echo "Bluefin release $VERSION_ID Achillobator" >/etc/system-release
sed -i 's/ANACONDA_PRODUCTVERSION=.*/ANACONDA_PRODUCTVERSION=""/' /usr/{,s}bin/liveinst || true
sed -i 's|^Icon=.*|Icon=/usr/share/pixmaps/fedora-logo-icon.png|' /usr/share/applications/liveinst.desktop || true
sed -i 's| Fedora| Bluefin|' /usr/share/anaconda/gnome/fedora-welcome || true
sed -i 's|Activities|in the dock|' /usr/share/anaconda/gnome/fedora-welcome || true

# Get Artwork
git clone --depth=1 https://github.com/ublue-os/packages.git /root/packages
mkdir -p /usr/share/anaconda/pixmaps/silverblue
cp -r /root/packages/bluefin/fedora-logos/src/anaconda/* /usr/share/anaconda/pixmaps/silverblue/
rm -rf /root/packages

# Interactive Kickstart
tee -a /usr/share/anaconda/interactive-defaults.ks <<EOF
ostreecontainer --url=ghcr.io/ublue-os/bluefin:lts --transport=containers-storage --no-signature-verification
%include /usr/share/anaconda/post-scripts/install-configure-upgrade.ks
%include /usr/share/anaconda/post-scripts/install-flatpaks.ks
EOF

# Signed Images
tee /usr/share/anaconda/post-scripts/install-configure-upgrade.ks <<EOF
%post --erroronfail
bootc switch --mutate-in-place --enforce-container-sigpolicy --transport registry $IMAGE_REF:$IMAGE_TAG
%end
EOF

# # Disable Fedora Flatpak
# tee /usr/share/anaconda/post-scripts/disable-fedora-flatpak.ks <<'EOF'
# %post --erroronfail
# systemctl disable flatpak-add-fedora-repos.service
# %end
# EOF

# Install Flatpaks
tee /usr/share/anaconda/post-scripts/install-flatpaks.ks <<'EOF'
%post --erroronfail --nochroot
deployment="$(ostree rev-parse --repo=/mnt/sysimage/ostree/repo ostree/0/1/0)"
target="/mnt/sysimage/ostree/deploy/default/deploy/$deployment.0/var/lib/"
mkdir -p "$target"
rsync -aAXUHKP /var/lib/flatpak "$target"
%end
EOF

# Fetch the Secureboot Public Key
# curl --retry 15 -Lo /etc/sb_pubkey.der "$sbkey"

# # Enroll Secureboot Key
# tee /usr/share/anaconda/post-scripts/secureboot-enroll-key.ks <<'EOF'
# %post --erroronfail --nochroot
# set -oue pipefail

# readonly ENROLLMENT_PASSWORD="universalblue"
# readonly SECUREBOOT_KEY="/etc/sb_pubkey.der"

# if [[ ! -d "/sys/firmware/efi" ]]; then
# echo "EFI mode not detected. Skipping key enrollment."
# exit 0
# fi

# if [[ ! -f "$SECUREBOOT_KEY" ]]; then
# echo "Secure boot key not provided: $SECUREBOOT_KEY"
# exit 0
# fi

# SYS_ID="$(cat /sys/devices/virtual/dmi/id/product_name)"
# if [[ ":Jupiter:Galileo:" =~ ":$SYS_ID:" ]]; then
# echo "Steam Deck hardware detected. Skipping key enrollment."
# exit 0
# fi

# mokutil --timeout -1 || :
# echo -e "$ENROLLMENT_PASSWORD\n$ENROLLMENT_PASSWORD" | mokutil --import "$SECUREBOOT_KEY" || :
# %end
# EOF
Loading