diff --git a/Containerfile.in b/Containerfile.in index 2063d1b1..592cf249 100644 --- a/Containerfile.in +++ b/Containerfile.in @@ -31,7 +31,6 @@ COPY --from=common /wallpapers /system_files/shared # /* https://github.com/ublue-os/brew */ COPY --from=brew /system_files /system_files/shared -# /* Overwrite files from common if necessary */ COPY /system_files /system_files # /* aurora image section */ @@ -51,7 +50,6 @@ ARG IMAGE_FLAVOR="" # /* so ghcurl wrapper is available to all later RUNs */ ENV PATH="/tmp/scripts/helpers:${PATH}" -# /* Copy files from common/from system_files */ # /* Install Packages, miscellaneous things that need a network */ # /* aurora:latest no zfs or nvidia */ @@ -64,7 +62,7 @@ RUN --mount=type=tmpfs,dst=/boot \ --mount=type=bind,from=akmods,src=/rpms/common,dst=/tmp/rpms/common \ --mount=type=bind,from=akmods,src=/rpms/kmods,dst=/tmp/rpms/kmods \ --mount=type=secret,id=GITHUB_TOKEN \ - /ctx/build_scripts/shared/build.sh && \ + /ctx/build_scripts/shared/build-prep.sh && \ /ctx/build_scripts/base/01-packages.sh && \ /ctx/build_scripts/base/02-install-common-kernel-akmods.sh && \ /ctx/build_scripts/base/03-fetch.sh @@ -81,7 +79,7 @@ RUN --mount=type=tmpfs,dst=/boot \ --mount=type=bind,from=akmods,src=/rpms/kmods,dst=/tmp/rpms/kmods \ --mount=type=bind,from=akmods-zfs,src=/rpms/kmods/zfs,dst=/tmp/rpms/kmods/zfs \ --mount=type=secret,id=GITHUB_TOKEN \ - /ctx/build_scripts/shared/build.sh && \ + /ctx/build_scripts/shared/build-prep.sh && \ /ctx/build_scripts/base/01-packages.sh && \ /ctx/build_scripts/base/02-install-common-kernel-akmods.sh && \ /ctx/build_scripts/base/zfs.sh && \ @@ -99,7 +97,7 @@ RUN --mount=type=tmpfs,dst=/boot \ --mount=type=bind,from=akmods,src=/rpms/kmods,dst=/tmp/rpms/kmods \ --mount=type=bind,from=akmods-nvidia-open,src=/rpms,dst=/tmp/rpms/nvidia \ --mount=type=secret,id=GITHUB_TOKEN \ - /ctx/build_scripts/shared/build.sh && \ + /ctx/build_scripts/shared/build-prep.sh && \ /ctx/build_scripts/base/01-packages.sh && \ /ctx/build_scripts/base/02-install-common-kernel-akmods.sh && \ /ctx/build_scripts/base/03-fetch.sh && \ @@ -118,7 +116,7 @@ RUN --mount=type=tmpfs,dst=/boot \ --mount=type=bind,from=akmods-nvidia-open,src=/rpms,dst=/tmp/rpms/nvidia \ --mount=type=bind,from=akmods-zfs,src=/rpms/kmods/zfs,dst=/tmp/rpms/kmods/zfs \ --mount=type=secret,id=GITHUB_TOKEN \ - /ctx/build_scripts/shared/build.sh && \ + /ctx/build_scripts/shared/build-prep.sh && \ /ctx/build_scripts/base/01-packages.sh && \ /ctx/build_scripts/base/02-install-common-kernel-akmods.sh && \ /ctx/build_scripts/base/03-fetch.sh && \ @@ -136,6 +134,7 @@ RUN --network=none \ /ctx/build_scripts/base/19-initramfs.sh && \ /ctx/build_scripts/shared/validate-repos.sh && \ /ctx/build_scripts/shared/clean-stage.sh && \ + /ctx/build_scripts/shared/chunkah-xattr.sh && \ /ctx/build_scripts/base/20-tests.sh CMD ["/sbin/init"] diff --git a/build_scripts/base/01-packages.sh b/build_scripts/base/01-packages.sh index 4eabe7c4..5d23d7af 100755 --- a/build_scripts/base/01-packages.sh +++ b/build_scripts/base/01-packages.sh @@ -218,4 +218,9 @@ if [[ "${IMAGE_FLAVOR}" == "dx" ]]; then /ctx/build_scripts/dx/00-dx.sh fi +# Keep *-logos in RPM DB for downstream package installations +# We are not allowed to ship an empty fedora-logos package +dnf -y swap fedora-logos generic-logos +rpm --erase --nodeps --nodb generic-logos + echo "::endgroup::" diff --git a/build_scripts/base/03-fetch.sh b/build_scripts/base/03-fetch.sh index 10776e4e..0a6877b9 100755 --- a/build_scripts/base/03-fetch.sh +++ b/build_scripts/base/03-fetch.sh @@ -10,10 +10,9 @@ curl --retry 3 -Lo /etc/flatpak/remotes.d/flathub.flatpakrepo https://dl.flathub # Offline Aurora documentation ghcurl "https://github.com/ublue-os/aurora-docs/releases/download/0.1/aurora.pdf" --retry 3 -o /tmp/aurora.pdf install -Dm0644 -t /usr/share/doc/aurora/ /tmp/aurora.pdf -setfattr -n user.component -v "aurora-offline-docs" /usr/share/doc/aurora/aurora.pdf -cp /usr/share/applications/dev.getaurora.offline-docs.desktop /usr/share/kglobalaccel/ # Weekly user count for fastfetch +mkdir -p /usr/share/ublue-os ghcurl https://raw.githubusercontent.com/ublue-os/countme/main/badge-endpoints/aurora.json | jq -r ".message" > /usr/share/ublue-os/fastfetch-user-count # bazaar weekly downloads used for fastfetch @@ -27,19 +26,15 @@ ghcurl "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/NerdFon unzip /tmp/nerdfontsymbols.zip -d /tmp mkdir -p /usr/share/fonts/nerd-fonts/NerdFontsSymbolsOnly/ mv /tmp/SymbolsNerdFont*.ttf /usr/share/fonts/nerd-fonts/NerdFontsSymbolsOnly/ -setfattr -n user.component -v "nerdfonts" /usr/share/fonts/nerd-fonts/NerdFontsSymbolsOnly -setfattr -n user.update-interval -v "yearly" /usr/share/fonts/nerd-fonts/NerdFontsSymbolsOnly # Bash Preexec v0.6.0 ghcurl https://raw.githubusercontent.com/rcaloras/bash-preexec/b73ed5f7f953207b958f15b1773721dded697ac3/bash-preexec.sh --retry 3 -Lo /usr/share/bash-preexec -setfattr -n user.component -v "aurora-config" /usr/share/bash-preexec # use CoreOS' generator for emergency/rescue boot # see detail: https://github.com/ublue-os/main/issues/653 mkdir -p /usr/lib/systemd/system-generators ghcurl "https://raw.githubusercontent.com/coreos/fedora-coreos-config/refs/heads/stable/overlay.d/05core/usr/lib/systemd/system-generators/coreos-sulogin-force-generator" --retry 3 -Lo /usr/lib/systemd/system-generators/coreos-sulogin-force-generator chmod +x /usr/lib/systemd/system-generators/coreos-sulogin-force-generator -setfattr -n user.component -v "aurora-config" /usr/lib/systemd/system-generators/coreos-sulogin-force-generator echo "::endgroup::" diff --git a/build_scripts/base/16-override-install.sh b/build_scripts/base/16-override-install.sh index 2fe84bb8..a8fa72fc 100755 --- a/build_scripts/base/16-override-install.sh +++ b/build_scripts/base/16-override-install.sh @@ -4,6 +4,9 @@ echo "::group:: ===$(basename "$0")===" set -eoux pipefail +# Copy Files to Container +rsync -rvKl /ctx/system_files/shared/ / + # Footgun, See: https://github.com/ublue-os/main/issues/598 rm -f /usr/bin/chsh /usr/bin/lchsh @@ -17,10 +20,6 @@ ln -s "/usr/share/fonts/google-noto-sans-cjk-fonts" "/usr/share/fonts/noto-cjk" # KDE Documentation is available online rm -rf /usr/share/doc/HTML -# ###### -# BASE IMAGE CHANGES -# ###### - rm -f /usr/lib64/qt6/plugins/kf6/krunner/krunner_appstream.so # Use Bazaar for Flatpak refs @@ -38,4 +37,7 @@ setsebool -P samba_export_all_ro=1 setsebool -P samba_export_all_rw=1 sed -i '/^\[homes\]/,/^\[/{/^\[homes\]/d;/^\[/!d}' /etc/samba/smb.conf +# So we can bind offline docs to a shortcut +cp /usr/share/applications/dev.getaurora.offline-docs.desktop /usr/share/kglobalaccel/ + echo "::endgroup::" diff --git a/build_scripts/dx/00-dx.sh b/build_scripts/dx/00-dx.sh index 9d08380c..726a1234 100755 --- a/build_scripts/dx/00-dx.sh +++ b/build_scripts/dx/00-dx.sh @@ -4,6 +4,9 @@ echo "::group:: ===$(basename "$0")===" set -ouex pipefail +# Apply IP Forwarding before installing Docker to prevent messing with LXC networking +sysctl -p + # Load secure COPR helpers # shellcheck source=build_scripts/shared/copr-helpers.sh source /ctx/build_scripts/shared/copr-helpers.sh @@ -105,13 +108,6 @@ copr_install_isolated "ublue-os/packages" "ublue-os-libvirt-workarounds" # DX packages to exclude - common to all versions EXCLUDED_PACKAGES=() -# Version-specific package exclusions for DX -case "$FEDORA_MAJOR_VERSION" in - 43) - EXCLUDED_PACKAGES+=() - ;; -esac - # Remove excluded packages if they are installed if [[ "${#EXCLUDED_PACKAGES[@]}" -gt 0 ]]; then readarray -t INSTALLED_EXCLUDED < <(rpm -qa --queryformat='%{NAME}\n' "${EXCLUDED_PACKAGES[@]}" 2>/dev/null || true) @@ -122,6 +118,20 @@ if [[ "${#EXCLUDED_PACKAGES[@]}" -gt 0 ]]; then fi fi +rsync -rvK /ctx/system_files/dx/ / + +# Load iptable_nat module for docker-in-docker. +# See: +# - https://github.com/ublue-os/bluefin/issues/2365 +# - https://github.com/devcontainers/features/issues/1235 +mkdir -p /etc/modules-load.d +tee /etc/modules-load.d/ip_tables.conf <> /usr/share/kde-settings/kde-profile/default/xdg/kcm-about-distrorc + # Enable DX services if rpm -q docker-ce >/dev/null; then systemctl enable docker.socket diff --git a/build_scripts/shared/build-dx.sh b/build_scripts/shared/build-dx.sh deleted file mode 100755 index 5c474726..00000000 --- a/build_scripts/shared/build-dx.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/bash - -set -xeou pipefail - -echo "::group:: Copy Files" - -# Copy Files to Image -rsync -rvK /ctx/system_files/dx/ / - -echo "::endgroup::" - -# Apply IP Forwarding before installing Docker to prevent messing with LXC networking -sysctl -p - -# Load iptable_nat module for docker-in-docker. -# See: -# - https://github.com/ublue-os/bluefin/issues/2365 -# - https://github.com/devcontainers/features/issues/1235 -mkdir -p /etc/modules-load.d -tee /etc/modules-load.d/ip_tables.conf <> /usr/share/kde-settings/kde-profile/default/xdg/kcm-about-distrorc diff --git a/build_scripts/shared/build-prep.sh b/build_scripts/shared/build-prep.sh new file mode 100755 index 00000000..27c8e23f --- /dev/null +++ b/build_scripts/shared/build-prep.sh @@ -0,0 +1,14 @@ +# This script should generally set up the build so we can move on to start installing packages + +#!/usr/bin/bash + +set -eoux pipefail + +# Speeds up local builds and workaround network flakes, mainly for COPR and negativo +cp /etc/dnf/dnf.conf /etc/dnf/dnf.conf.bak +dnf config-manager setopt keepcache=1 timeout=60 + +mkdir -p /tmp/scripts/helpers +install -Dm0755 /ctx/build_scripts/shared/utils/ghcurl /tmp/scripts/helpers/ghcurl + +echo "::endgroup::" diff --git a/build_scripts/shared/build.sh b/build_scripts/shared/build.sh deleted file mode 100755 index eeb22046..00000000 --- a/build_scripts/shared/build.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/bash - -set -eoux pipefail - -echo "::group:: Copy Files" - -# Speeds up local builds and workaround network flakes, mainly for COPR and negativo -cp /etc/dnf/dnf.conf /etc/dnf/dnf.conf.bak -dnf config-manager setopt keepcache=1 timeout=60 - -# We need to remove this package here because lots of files we add from `{projectbluefin,get-aurora-dev}/common` override the rpm files -# they go away when you do dnf remove -# Keep *-logos in RPM DB for downstream package installations -# We are not allowed to ship an empty fedora-logos package -dnf -y swap fedora-logos generic-logos -rpm --erase --nodeps --nodb generic-logos - -# Copy Files to Container -rsync -rvKl /ctx/system_files/shared/ / - -setfattr -n user.component -v "aurora-wallpapers" /usr/share/backgrounds/aurora -setfattr -n user.update-interval -v "monthly" /usr/share/backgrounds/aurora - -setfattr -n user.component -v "aurora-assets" /usr/share/plasma/avatars/{echo,lumina,scope,tina,vincent}.png -setfattr -n user.component -v "aurora-assets" /etc/bazaar/*.jxl -setfattr -n user.update-interval -v "quarterly" /etc/bazaar/*.jxl - -setfattr -n user.component -v "aurora-plasma-theme" /usr/share/plasma/look-and-feel/dev.getaurora.aurora{,light}.desktop -setfattr -n user.update-interval -v "quarterly" /usr/share/plasma/look-and-feel/dev.getaurora.aurora{,light}.desktop - -setfattr -n user.component -v "aurora-config" /usr/share/ublue-os -setfattr -n user.component -v "homebrew" /usr/share/homebrew.tar.zst - -if [[ "${IMAGE_FLAVOR}" == "dx" ]]; then - /ctx/build_scripts/shared/build-dx.sh -fi - -mkdir -p /tmp/scripts/helpers -install -Dm0755 /ctx/build_scripts/shared/utils/ghcurl /tmp/scripts/helpers/ghcurl - -echo "::endgroup::" diff --git a/build_scripts/shared/chunkah-xattr.sh b/build_scripts/shared/chunkah-xattr.sh new file mode 100755 index 00000000..2fd36e11 --- /dev/null +++ b/build_scripts/shared/chunkah-xattr.sh @@ -0,0 +1,26 @@ +# See: https://github.com/coreos/chunkah#customizing-the-layers +#!/usr/bin/env bash + +set -eoux pipefail + +setfattr -n user.component -v "aurora-wallpapers" /usr/share/backgrounds/aurora +setfattr -n user.update-interval -v "monthly" /usr/share/backgrounds/aurora + +setfattr -n user.component -v "aurora-assets" /usr/share/plasma/avatars/{echo,lumina,scope,tina,vincent}.png +setfattr -n user.component -v "aurora-assets" /etc/bazaar/*.jxl +setfattr -n user.update-interval -v "quarterly" /etc/bazaar/*.jxl + +setfattr -n user.component -v "aurora-plasma-theme" /usr/share/plasma/look-and-feel/dev.getaurora.aurora{,light}.desktop +setfattr -n user.update-interval -v "quarterly" /usr/share/plasma/look-and-feel/dev.getaurora.aurora{,light}.desktop + +setfattr -n user.component -v "aurora-config" /usr/share/ublue-os +setfattr -n user.component -v "homebrew" /usr/share/homebrew.tar.zst + +setfattr -n user.component -v "aurora-offline-docs" /usr/share/doc/aurora/aurora.pdf + +setfattr -n user.component -v "nerdfonts" /usr/share/fonts/nerd-fonts/NerdFontsSymbolsOnly +setfattr -n user.update-interval -v "yearly" /usr/share/fonts/nerd-fonts/NerdFontsSymbolsOnly + +setfattr -n user.component -v "aurora-config" /usr/lib/systemd/system-generators/coreos-sulogin-force-generator + +setfattr -n user.component -v "aurora-config" /usr/share/bash-preexec