From 6a91c76d7c02439a510bad944436ed17f81858ae Mon Sep 17 00:00:00 2001 From: TheCodeLamp <12064217+TheCodeLamp@users.noreply.github.com> Date: Sun, 13 Sep 2026 17:52:15 +0200 Subject: [PATCH 1/5] Remove `RobotoMono` --- build_scripts/install-desktop.sh | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/build_scripts/install-desktop.sh b/build_scripts/install-desktop.sh index 07b163f..0cbea90 100755 --- a/build_scripts/install-desktop.sh +++ b/build_scripts/install-desktop.sh @@ -38,30 +38,6 @@ winetricks \ dnf config-manager setopt "rpmfusion*".enabled=0 echo "::endgroup::" -# ===================== FONTS ====================== - -echo "::group:: Build Desktop - Fonts" - -FONT_NAME="RobotoMono" -FONTS_FOLDER="/usr/share/fonts/${FONT_NAME}" -URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/${FONT_NAME}.tar.xz" -TMPFILE="$(mktemp /tmp/${FONT_NAME}.XXXXXX.tar.xz)" - -mkdir -p "$FONTS_FOLDER" -curl -fL -o "$TMPFILE" "$URL" -tar -xJf "$TMPFILE" -C "$FONTS_FOLDER" - -rm -f "$TMPFILE" - -fc-cache -vf "$FONTS_FOLDER" - -unset FONT_NAME -unset FONTS_FOLDER -unset URL -unset TMPFILE - -echo "::endgroup::" - # =================== LIBREWOLF ==================== echo "::group:: Build Desktop - Librewolf" From 803bb8aa3a010d08ad37045c9d5bd970104c3be5 Mon Sep 17 00:00:00 2001 From: TheCodeLamp <12064217+TheCodeLamp@users.noreply.github.com> Date: Sun, 13 Sep 2026 17:53:07 +0200 Subject: [PATCH 2/5] Added missing new line --- Containerfile.base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Containerfile.base b/Containerfile.base index 0a20d6d..d66439b 100644 --- a/Containerfile.base +++ b/Containerfile.base @@ -6,7 +6,7 @@ FROM ghcr.io/nushell/nushell:latest-alpine as nushell FROM quay.io/fedora/fedora-bootc:44 COPY --from=nushell /usr/bin/nu /usr/bin/nu -RUN printf '/bin/nu\n/usr/bin/nu' >> /etc/shells +RUN printf '/bin/nu\n/usr/bin/nu\n' >> /etc/shells COPY yum-repos/custom.repo /etc/yum.repos.d/custom.repo From 362b0539ca1e06dc84b896770a4d05b77aa7b8de Mon Sep 17 00:00:00 2001 From: TheCodeLamp <12064217+TheCodeLamp@users.noreply.github.com> Date: Sun, 13 Sep 2026 18:00:41 +0200 Subject: [PATCH 3/5] Set TIMESTAMP once --- .github/workflows/build.yml | 11 ++++++----- build.sh | 2 +- push.sh | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cac8ac0..22ce582 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,10 +37,11 @@ jobs: - name: Checkout uses: actions/checkout@v5 - - name: Lowercase image name + - name: Set build env vars run: | - 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}" + echo "TIMESTAMP=$(date -u +%Y%m%d)" >> "${GITHUB_ENV}" - name: Login to GHCR run: | @@ -50,9 +51,9 @@ jobs: run: | CACHE_PUSH="false" if [ "${{ github.event_name }}" != "pull_request" ]; then CACHE_PUSH="true"; fi - ./build.sh "${{ matrix.variant }}" "${{ env.IMAGE_NAME }}" "${{ env.IMAGE_REGISTRY }}" $CACHE_PUSH + ./build.sh "${{ matrix.variant }}" "${{ env.IMAGE_NAME }}" "${{ env.IMAGE_REGISTRY }}" $CACHE_PUSH "${{ env.TIMESTAMP }}" - name: Push ${{ matrix.variant }} image if: github.event_name != 'pull_request' run: | - ./push.sh "${{ matrix.variant }}" "${{ env.IMAGE_NAME }}" "${{ env.IMAGE_REGISTRY }}" + ./push.sh "${{ matrix.variant }}" "${{ env.IMAGE_NAME }}" "${{ env.IMAGE_REGISTRY }}" "${{ env.TIMESTAMP }}" diff --git a/build.sh b/build.sh index dab95ec..694ac1a 100755 --- a/build.sh +++ b/build.sh @@ -7,10 +7,10 @@ VARIANT=${1:?VARIANT required (base|desktop|laptop)} IMAGE_NAME=${2:?IMAGE_NAME required} IMAGE_REGISTRY=${3:?IMAGE_REGISTRY required} CACHE_PUSH=${4:?CACHE_PUSH required (true|false)} +TIMESTAMP=${5:?TIMESTAMP required} FULL_IMAGE="${IMAGE_REGISTRY}/${IMAGE_NAME}" CACHE_REPO="${FULL_IMAGE}-cache-${VARIANT}" -TIMESTAMP=$(date -u +%Y%m%d) echo "$(buildah --version)" diff --git a/push.sh b/push.sh index daa11f4..108a1c6 100755 --- a/push.sh +++ b/push.sh @@ -6,9 +6,9 @@ set -ouex pipefail VARIANT=${1:?VARIANT required (base|desktop|laptop)} IMAGE_NAME=${2:?IMAGE_NAME required} IMAGE_REGISTRY=${3:?IMAGE_REGISTRY required} +TIMESTAMP=${4:?TIMESTAMP required} FULL_IMAGE="${IMAGE_REGISTRY}/${IMAGE_NAME}" -TIMESTAMP=$(date -u +%Y%m%d) echo "Pushing ${VARIANT} variant of ${FULL_IMAGE}" From 67c568f703d481d3babfe72256e4b62c2f8f7d61 Mon Sep 17 00:00:00 2001 From: TheCodeLamp <12064217+TheCodeLamp@users.noreply.github.com> Date: Sun, 13 Sep 2026 18:02:01 +0200 Subject: [PATCH 4/5] Remove unused permission --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 22ce582..e3630b3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,6 @@ jobs: permissions: contents: read packages: write - id-token: write steps: - name: Checkout From 3cfd4093b048296b3ab488790d8e9ad5f1467bd7 Mon Sep 17 00:00:00 2001 From: TheCodeLamp <12064217+TheCodeLamp@users.noreply.github.com> Date: Sun, 13 Sep 2026 19:42:45 +0200 Subject: [PATCH 5/5] Run variants only if they have changed --- .github/workflows/build.yml | 59 ++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e3630b3..39c611c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,14 +19,71 @@ concurrency: cancel-in-progress: true jobs: + changes: + name: Determine which variants need building + runs-on: ubuntu-24.04 + outputs: + variants: ${{ steps.set-matrix.outputs.variants }} + steps: + - name: Checkout + uses: actions/checkout@v5 + with: + fetch-depth: 0 # paths-filter needs history to diff against on push events + + - name: Detect changed layers + uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + shared: + - '.github/workflows/build.yml' + - 'yum-repos/**' + - 'build.sh' + - 'push.sh' + - 'build_scripts/install-base.sh' + - 'build_scripts/clean-base.sh' + base: + - 'Containerfile.base' + desktop: + - 'Containerfile.desktop' + - 'build_scripts/install-desktop.sh' + - 'build_scripts/clean-desktop.sh' + laptop: + - 'Containerfile.laptop' + - 'build_scripts/install-desktop.sh' + - 'build_scripts/clean-desktop.sh' + - 'build_scripts/install-laptop.sh' + - 'build_scripts/clean-laptop.sh' + - 'dracut.conf' + + - name: Build matrix list + id: set-matrix + run: | + if [ "${{ github.event_name }}" != "pull_request" ]; then + echo 'variants=["base","desktop","laptop"]' >> "${GITHUB_OUTPUT}" + exit 0 + fi + + variants=() + [ "${{ steps.filter.outputs.shared }}" = "true" ] && variants+=("base" "desktop" "laptop") + [ "${{ steps.filter.outputs.base }}" = "true" ] && variants+=("base") + [ "${{ steps.filter.outputs.desktop }}" = "true" ] && variants+=("desktop") + [ "${{ steps.filter.outputs.laptop }}" = "true" ] && variants+=("laptop") + + unique=$(printf '%s\n' "${variants[@]}" | sort -u | jq -R . | jq -s -c 'map(select(length > 0))') + echo "variants=${unique}" >> "${GITHUB_OUTPUT}" + build_push: name: Build and push ${{ matrix.variant }} image + needs: changes + if: needs.changes.outputs.variants != '[]' runs-on: ubuntu-24.04 + timeout-minutes: 40 strategy: fail-fast: false matrix: - variant: [base, desktop, laptop] + variant: ${{ fromJson(needs.changes.outputs.variants) }} permissions: contents: read