From 8da35c1898c8eecad3ed5ac9ec722e29c931c0fb Mon Sep 17 00:00:00 2001
From: Jason DeTiberus <915544+detiber@users.noreply.github.com>
Date: Sat, 14 Dec 2024 19:45:59 -0500
Subject: [PATCH] blow up the world
---
.gitattributes | 13 +
.github/dependabot.yml | 6 +-
.github/workflows/base-build.yml | 4 +-
.github/workflows/bluefin-latest.yml | 27 +
.github/workflows/bluefin-reusable-build.yml | 279 ++++++
.github/workflows/bluefin-stable.yml | 26 +
.github/workflows/build.yml | 43 -
{hack => docs/archived}/base.butane | 0
{hack => docs/archived}/base.ign | 0
.../archived}/beardy-autorebase.butane | 0
{hack => docs/archived}/beardy-autorebase.ign | 0
.../archived}/beardy-bootc-switch.butane | 0
.../archived}/beardy-bootc-switch.ign | 0
{hack => docs/archived}/boot-remote.ipxe | 0
docs/archived/osbuild-blueprint-bootc.toml | 9 +
docs/archived/osbuild-blueprint.toml | 33 +
.../archived/recipes}/beardy-bazzite-deck.yml | 0
.../archived/recipes}/beardy-bazzite.yml | 0
{recipes => docs/archived/recipes}/beardy.yml | 0
files/scripts/example.sh | 10 -
files/system/common/etc/.gitkeep | 1 -
.../common/etc/sudoers.d/wheel-nopassword | 1 -
.../common/etc/ublue-update/ublue-update.toml | 8 -
.../share/applications/system-update.desktop | 9 -
.../usr/share/ublue-os/just/10-update.just | 45 -
.../usr/share/ublue-os/topgrade-bootc.toml | 11 -
.../common/usr/share/ublue-os/topgrade.toml | 11 -
hack/bib-img-config.toml | 6 -
just/archive.just | 357 ++++++++
just/bib.just | 20 +
just/common.just | 25 +
justfile | 479 +----------
ublue-image-template/Containerfile | 213 -----
ublue-image-template/README.md | 87 --
.../common/usr => variants/bazzite}/.gitkeep | 0
variants/bluefin/.gitignore | 11 +
variants/bluefin/Containerfile | 36 +
.../bluefin/beardy_flatpaks/flatpaks | 0
variants/bluefin/boot_menu.yml | 6 +
.../bluefin/build_files/base}/.gitkeep | 0
.../bluefin/build_files/base/00-image-info.sh | 53 ++
.../bluefin/build_files/base/04-packages.sh | 51 ++
.../bluefin/build_files/dx/03-packages-dx.sh | 55 ++
.../bluefin/build_files/shared/build-base.sh | 66 ++
.../bluefin/build_files/shared/build-dx.sh | 42 +
.../bluefin/build_files/shared/clean-stage.sh | 8 +
variants/bluefin/dx_flatpaks/flatpaks | 0
variants/bluefin/just/beardy-apps.just | 0
variants/bluefin/just/beardy-system.just | 0
variants/bluefin/justfile | 812 ++++++++++++++++++
variants/bluefin/packages.json | 37 +
.../bluefin/system_files/bluefin/.gitkeep | 0
variants/bluefin/system_files/dx/.gitkeep | 0
.../shared}/etc/distrobox/distrobox.conf | 0
.../shared}/etc/distrobox/distrobox.example | 0
.../shared}/etc/distrobox/distrobox.ini | 0
{bootc => variants/bootc}/Containerfile | 10 +-
variants/bootc/bib-img-config.toml | 4 +
{hack => variants/bootc}/bib-iso-config.toml | 1 +
variants/bootc/justfile | 28 +
variants/ublue/Containerfile | 89 ++
.../ublue}/scripts/unwrap-cli.sh | 0
62 files changed, 2126 insertions(+), 906 deletions(-)
create mode 100644 .gitattributes
create mode 100644 .github/workflows/bluefin-latest.yml
create mode 100644 .github/workflows/bluefin-reusable-build.yml
create mode 100644 .github/workflows/bluefin-stable.yml
delete mode 100644 .github/workflows/build.yml
rename {hack => docs/archived}/base.butane (100%)
rename {hack => docs/archived}/base.ign (100%)
rename {hack => docs/archived}/beardy-autorebase.butane (100%)
rename {hack => docs/archived}/beardy-autorebase.ign (100%)
rename {hack => docs/archived}/beardy-bootc-switch.butane (100%)
rename {hack => docs/archived}/beardy-bootc-switch.ign (100%)
rename {hack => docs/archived}/boot-remote.ipxe (100%)
create mode 100644 docs/archived/osbuild-blueprint-bootc.toml
create mode 100644 docs/archived/osbuild-blueprint.toml
rename {recipes => docs/archived/recipes}/beardy-bazzite-deck.yml (100%)
rename {recipes => docs/archived/recipes}/beardy-bazzite.yml (100%)
rename {recipes => docs/archived/recipes}/beardy.yml (100%)
delete mode 100644 files/scripts/example.sh
delete mode 100644 files/system/common/etc/.gitkeep
delete mode 100644 files/system/common/etc/sudoers.d/wheel-nopassword
delete mode 100644 files/system/common/etc/ublue-update/ublue-update.toml
delete mode 100644 files/system/common/usr/share/applications/system-update.desktop
delete mode 100644 files/system/common/usr/share/ublue-os/just/10-update.just
delete mode 100644 files/system/common/usr/share/ublue-os/topgrade-bootc.toml
delete mode 100644 files/system/common/usr/share/ublue-os/topgrade.toml
delete mode 100644 hack/bib-img-config.toml
create mode 100644 just/archive.just
create mode 100644 just/bib.just
create mode 100644 just/common.just
delete mode 100644 ublue-image-template/Containerfile
delete mode 100644 ublue-image-template/README.md
rename {files/system/common/usr => variants/bazzite}/.gitkeep (100%)
create mode 100644 variants/bluefin/.gitignore
create mode 100644 variants/bluefin/Containerfile
rename files/scripts/fix-copr-repos.sh => variants/bluefin/beardy_flatpaks/flatpaks (100%)
create mode 100644 variants/bluefin/boot_menu.yml
rename {modules => variants/bluefin/build_files/base}/.gitkeep (100%)
create mode 100755 variants/bluefin/build_files/base/00-image-info.sh
create mode 100755 variants/bluefin/build_files/base/04-packages.sh
create mode 100755 variants/bluefin/build_files/dx/03-packages-dx.sh
create mode 100755 variants/bluefin/build_files/shared/build-base.sh
create mode 100755 variants/bluefin/build_files/shared/build-dx.sh
create mode 100755 variants/bluefin/build_files/shared/clean-stage.sh
create mode 100644 variants/bluefin/dx_flatpaks/flatpaks
create mode 100644 variants/bluefin/just/beardy-apps.just
create mode 100644 variants/bluefin/just/beardy-system.just
create mode 100644 variants/bluefin/justfile
create mode 100644 variants/bluefin/packages.json
create mode 100644 variants/bluefin/system_files/bluefin/.gitkeep
create mode 100644 variants/bluefin/system_files/dx/.gitkeep
rename {files/system/common => variants/bluefin/system_files/shared}/etc/distrobox/distrobox.conf (100%)
rename {files/system/common => variants/bluefin/system_files/shared}/etc/distrobox/distrobox.example (100%)
rename {files/system/common => variants/bluefin/system_files/shared}/etc/distrobox/distrobox.ini (100%)
rename {bootc => variants/bootc}/Containerfile (77%)
create mode 100644 variants/bootc/bib-img-config.toml
rename {hack => variants/bootc}/bib-iso-config.toml (98%)
create mode 100644 variants/bootc/justfile
create mode 100644 variants/ublue/Containerfile
rename {files => variants/ublue}/scripts/unwrap-cli.sh (100%)
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..9a5a2c5
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,13 @@
+*.yml linguist-detectable=true
+*.yml linguist-language=YAML
+
+*.yaml linguist-detectable=true
+*.yaml linguist-language=YAML
+
+*.just linguist-detectable=true
+*.just linguist-documentation=false
+*.just linguist-language=Just
+
+*.json linguist-detectable=true
+*.json linguist-documentation=false
+*.json linguist-language=JSON
\ No newline at end of file
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 1230149..a7feb97 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -3,4 +3,8 @@ updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
- interval: "daily"
+ interval: "weekly"
+ - package-ecosystem: "devcontainers"
+ directory: "/"
+ schedule:
+ interval: weekly
\ No newline at end of file
diff --git a/.github/workflows/base-build.yml b/.github/workflows/base-build.yml
index 9bb6455..0c6ee48 100644
--- a/.github/workflows/base-build.yml
+++ b/.github/workflows/base-build.yml
@@ -35,12 +35,12 @@
matrix:
include:
- base: bootc
- containerfile: bootc/Containerfile
+ containerfile: variants/bootc/Containerfile
name: "${{ github.event.repository.name }}-bootc" # the name of the image produced by this build, matches repo name appended with '-bootc'
description: "bootc-based base image for bearded developers"
- base: ublue
- containerfile: ublue-image-template/Containerfile
+ containerfile: variants/ublue/Containerfile
name: "${{ github.event.repository.name }}-ublue" # the name of the image produced by this build, matches repo name appended with '-ublue'
description: "ublue-based base image for bearded developers"
steps:
diff --git a/.github/workflows/bluefin-latest.yml b/.github/workflows/bluefin-latest.yml
new file mode 100644
index 0000000..c326e25
--- /dev/null
+++ b/.github/workflows/bluefin-latest.yml
@@ -0,0 +1,27 @@
+name: Latest Images
+on:
+ merge_group:
+ pull_request:
+ branches:
+ - main
+ paths-ignore:
+ - "**.md"
+ schedule:
+ - cron: "50 5 * * 1,2,3,4,5,6" # 5:50 UTC All But Sunday (1 hour after bluefin)
+ - cron: "50 5 * * 0" # 5:50 UTC Sunday (1 hour after bluefin)
+ workflow_call:
+ workflow_dispatch:
+
+jobs:
+ build-image-latest:
+ name: Build Latest Images
+ uses: ./.github/workflows/bluefin-reusable-build.yml
+ secrets: inherit
+ strategy:
+ fail-fast: false
+ matrix:
+ brand_name: ["beardy-bluefin"]
+ with:
+ image_flavors: '["main", "nvidia", "hwe", "hwe-nvidia"]'
+ brand_name: ${{ matrix.brand_name }}
+ stream_name: latest
diff --git a/.github/workflows/bluefin-reusable-build.yml b/.github/workflows/bluefin-reusable-build.yml
new file mode 100644
index 0000000..0829a53
--- /dev/null
+++ b/.github/workflows/bluefin-reusable-build.yml
@@ -0,0 +1,279 @@
+name: Reusable Build and Push
+on:
+ workflow_call:
+ inputs:
+ image_flavors:
+ description: "JSON string of flavors to build, '[main, nvidia, hwe, hwe-nvidia]'"
+ default: "['main']"
+ type: string
+ brand_name:
+ description: "The Brand Name: beardy-bluefin"
+ required: true
+ default: beardy-bluefin
+ type: string
+ stream_name:
+ description: "The Fedora Version: stable, or latest"
+ required: true
+ type: string
+ outputs:
+ images:
+ description: "An array of images built and pushed to the registry"
+ value: ${{ jobs.check.outputs.images }}
+env:
+ IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref || github.run_id }}-${{ inputs.brand_name}}-${{ inputs.stream_name }}
+ cancel-in-progress: true
+
+jobs:
+ build_container:
+ name: image
+ runs-on: ubuntu-24.04
+ continue-on-error: false
+ outputs:
+ image_full: ${{ steps.generate-outputs.outputs.image }}
+ strategy:
+ fail-fast: false
+ matrix:
+ image_flavor: ${{ fromJson(inputs.image_flavors) }}
+ base_name: ["${{ inputs.brand_name }}", "${{ inputs.brand_name }}-dx"]
+ stream_name: ["${{ inputs.stream_name }}"]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
+
+ - name: Install Just
+ shell: bash
+ run: |
+ set -eoux pipefail
+ JUST_VERSION=$(curl -L https://api.github.com/repos/casey/just/releases/latest | jq -r '.tag_name')
+ curl -sSLO https://github.com/casey/just/releases/download/${JUST_VERSION}/just-${JUST_VERSION}-x86_64-unknown-linux-musl.tar.gz
+ tar -zxvf just-${JUST_VERSION}-x86_64-unknown-linux-musl.tar.gz -C /tmp just
+ sudo mv /tmp/just /usr/local/bin/just
+ rm -f just-${JUST_VERSION}-x86_64-unknown-linux-musl.tar.gz
+
+ - name: Check Just Syntax
+ shell: bash
+ run: |
+ just check
+
+ - name: Image Name
+ shell: bash
+ run: |
+ IMAGE_NAME="$(just bluefin::image_name ${{ matrix.base_name }} ${{ matrix.stream_name }} ${{ matrix.image_flavor }})"
+ echo "IMAGE_NAME=${IMAGE_NAME}" >> $GITHUB_ENV
+
+ - name: Default Tag
+ shell: bash
+ run: |
+ DEFAULT_TAG="$(just bluefin::generate-default-tag \
+ ${{ matrix.stream_name }} \
+ "1")"
+ echo "Default Tag: ${DEFAULT_TAG}"
+ echo "DEFAULT_TAG=${DEFAULT_TAG}" >> $GITHUB_ENV
+
+ - name: Maximize build space
+ uses: ublue-os/remove-unwanted-software@517622d6452028f266b7ba4cc9a123b5f58a6b53 # v7
+ with:
+ remove-codeql: true
+
+ - name: Build Image
+ id: build-image
+ shell: bash
+ run: |
+ sudo just repo_organization="${{ github.repository_owner }}" \
+ bluefin::build-ghcr "${{ matrix.base_name }}" \
+ "${{ matrix.stream_name }}" \
+ "${{ matrix.image_flavor }}" \
+ ""
+
+ - name: Rechunk Image
+ id: rechunk-image
+ shell: bash
+ run: |
+ sudo just bluefin::rechunk "${{ matrix.base_name }}" \
+ "${{ matrix.stream_name }}" \
+ "${{ matrix.image_flavor }}" \
+ "1"
+
+ - name: Load Image into Podman
+ id: load-rechunk
+ shell: bash
+ run: |
+ just bluefin::load-rechunk "${{ matrix.base_name }}" \
+ "${{ env.DEFAULT_TAG }}" \
+ "${{ matrix.image_flavor }}"
+
+ - name: Secureboot Check
+ id: secureboot
+ shell: bash
+ run: |
+ just bluefin::secureboot "${{ matrix.base_name }}" \
+ "${{ env.DEFAULT_TAG }}" \
+ "${{ matrix.image_flavor }}"
+
+ - name: Generate tags
+ id: generate-tags
+ shell: bash
+ run: |
+ alias_tags="$(just bluefin::generate-build-tags \
+ "${{ matrix.base_name }}" \
+ "${{ matrix.stream_name }}" \
+ "${{ matrix.image_flavor }}" \
+ "" \
+ "1" \
+ "$(podman inspect ${{ env.IMAGE_NAME }}:${{ env.DEFAULT_TAG }} | jq -r '.[].Config.Labels["org.opencontainers.image.version"]')" \
+ "${{ github.event_name }}" \
+ "${{ github.event.number }}")"
+
+ echo "Tags for this Action..."
+ echo "$alias_tags"
+ echo "alias_tags=${alias_tags}" >> $GITHUB_OUTPUT
+
+ # Tag Images
+ - name: Tag Images
+ shell: bash
+ run: |
+ set -eoux pipefail
+ just bluefin::tag-images "${{ env.IMAGE_NAME }}" \
+ "${{ env.DEFAULT_TAG }}" \
+ "${{ steps.generate-tags.outputs.alias_tags }}"
+
+ # Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR.
+ # https://github.com/macbre/push-to-ghcr/issues/12
+ - name: Lowercase Registry
+ id: registry_case
+ uses: ASzc/change-string-case-action@d0603cd0a7dd490be678164909f65c7737470a7f # v6
+ with:
+ string: ${{ env.IMAGE_REGISTRY }}
+
+ - name: Login to GitHub Container Registry
+ if: github.event_name != 'pull_request'
+ run: |
+ echo ${{ secrets.GITHUB_TOKEN }} | podman login ghcr.io -u ${{ github.actor }} --password-stdin
+ echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
+
+ - name: Push to GHCR
+ id: push
+ if: github.event_name != 'pull_request'
+ uses: Wandalen/wretry.action@ffdd254f4eaf1562b8a2c66aeaa37f1ff2231179 # v3.7.3
+ with:
+ attempt_limit: 3
+ attempt_delay: 15000
+ command: |
+ set -euox pipefail
+
+ for tag in ${{ steps.generate-tags.outputs.alias_tags }}; do
+ podman push ${{ env.IMAGE_NAME }}:${tag} ${{ steps.registry_case.outputs.lowercase }}/${{ env.IMAGE_NAME }}:${tag}
+ done
+
+ if [[ "${{ matrix.image_flavor }}" =~ hwe ]]; then
+
+ image_name="${{ env.IMAGE_NAME }}"
+ asus_name="${image_name/hwe/asus}"
+ surface_name="${image_name/hwe/surface}"
+
+ for tag in ${{ steps.generate-tags.outputs.alias_tags }}; do
+ podman push ${asus_name}:${tag} ${{ steps.registry_case.outputs.lowercase }}/${asus_name}:${tag}
+ podman push ${surface_name}:${tag} ${{ steps.registry_case.outputs.lowercase }}/${surface_name}:${tag}
+ done
+ fi
+
+ digest=$(skopeo inspect docker://${{ steps.registry_case.outputs.lowercase }}/${{ env.IMAGE_NAME }}:${{ env.DEFAULT_TAG }} --format '{{.Digest}}')
+
+ echo "digest=${digest}" >> $GITHUB_OUTPUT
+
+ - name: Sign container image
+ if: github.event_name != 'pull_request'
+ run: |
+ cosign sign -y --key env://COSIGN_PRIVATE_KEY ${{ steps.registry_case.outputs.lowercase }}/${{ env.IMAGE_NAME }}@${TAGS}
+ env:
+ TAGS: ${{ steps.push.outputs.outputs && fromJSON(steps.push.outputs.outputs).digest }}
+ COSIGN_EXPERIMENTAL: false
+ COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }}
+
+ - name: Sign container image
+ if: github.event_name != 'pull_request' && contains(matrix.image_flavor, 'hwe')
+ shell: bash
+ run: |
+ image_name="${{ env.IMAGE_NAME }}"
+ asus_name="${image_name/hwe/asus}"
+ surface_name="${image_name/hwe/surface}"
+ cosign sign -y --key env://COSIGN_PRIVATE_KEY ${{ steps.registry_case.outputs.lowercase }}/${asus_name}@${TAGS}
+ cosign sign -y --key env://COSIGN_PRIVATE_KEY ${{ steps.registry_case.outputs.lowercase }}/${surface_name}@${TAGS}
+ env:
+ TAGS: ${{ steps.push.outputs.outputs && fromJSON(steps.push.outputs.outputs).digest }}
+ COSIGN_EXPERIMENTAL: false
+ COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }}
+
+ - name: Generate file containing outputs
+ if: github.event_name != 'pull_request'
+ env:
+ DIGEST: ${{ steps.push.outputs.outputs && fromJSON(steps.push.outputs.outputs).digest }}
+ IMAGE_REGISTRY: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }}
+ IMAGE_NAME: ${{ env.IMAGE_NAME }}
+ FEDORA_VERSION: ${{ matrix.stream_name }}
+ run: echo "${IMAGE_REGISTRY}@${DIGEST}" > "${IMAGE_NAME}-${FEDORA_VERSION}.txt"
+
+ - name: Upload artifact
+ if: github.event_name != 'pull_request'
+ uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4
+ with:
+ name: image-${{ env.IMAGE_NAME }}-${{ matrix.stream_name }}
+ retention-days: 1
+ if-no-files-found: error
+ path: |
+ ${{ env.IMAGE_NAME }}-${{ matrix.stream_name }}.txt
+
+ check:
+ name: Check all ${{ matrix.stream_name }} builds successful
+ if: always()
+ runs-on: ubuntu-latest
+ needs: [build_container]
+ outputs:
+ images: ${{ steps.generate-outputs.outputs.images }}
+ steps:
+ - name: Download artifacts
+ if: github.event_name != 'pull_request'
+ id: download-artifacts
+ uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4
+ with:
+ pattern: image-*
+ merge-multiple: true
+
+ - name: Create output
+ if: github.event_name != 'pull_request'
+ id: generate-outputs
+ env:
+ JOBS: ${{ toJson(needs) }}
+ ARTIFACT_PATH: ${{ steps.download-artifacts.outputs.download-path }}
+ run: |
+ # Initialize the array
+ images=()
+
+ # Populate the array with each line from each file in the artifacts directory
+ for file in $ARTIFACT_PATH/*; do
+ while IFS= read -r line; do
+ images+=("$line")
+ done < "$file"
+ done
+
+ # Create the GITHUB_OUTPUT in the format '["image1", "image2", ...]'
+ echo "images=$(printf '%s\n' "${images[@]}" | jq -R -s -c 'split("\n") | .[:-1]')" >> $GITHUB_OUTPUT
+
+ - name: Check Jobs
+ env:
+ JOBS: ${{ toJson(needs) }}
+ run: |
+ echo "Job status:"
+ echo $JOBS | jq -r 'to_entries[] | " - \(.key): \(.value.result)"'
+
+ for i in $(echo $JOBS | jq -r 'to_entries[] | .value.result'); do
+ if [ "$i" != "success" ] && [ "$i" != "skipped" ]; then
+ echo ""
+ echo "Status check not okay!"
+ exit 1
+ fi
+ done
\ No newline at end of file
diff --git a/.github/workflows/bluefin-stable.yml b/.github/workflows/bluefin-stable.yml
new file mode 100644
index 0000000..2f2a3cc
--- /dev/null
+++ b/.github/workflows/bluefin-stable.yml
@@ -0,0 +1,26 @@
+name: Stable Images
+on:
+ merge_group: # Make Stable-Daily run on merge groups
+ pull_request:
+ branches:
+ - main
+ paths-ignore:
+ - "**.md"
+ schedule:
+ - cron: "50 6 * * 1,2,3,4,5,6" # 6:50 UTC everyday (1 hour after bluefin)
+ - cron: "50 6 * * 0" # 6:50 UTC sunday (1 hour after bluefin)
+ workflow_call:
+ workflow_dispatch:
+
+jobs:
+ build-image-stable:
+ name: Build Stable Images
+ uses: ./.github/workflows/bluefin-reusable-build.yml
+ secrets: inherit
+ strategy:
+ fail-fast: false
+ matrix:
+ brand_name: ["beardy-bluefin"]
+ with:
+ brand_name: ${{ matrix.brand_name }}
+ stream_name: stable
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
deleted file mode 100644
index 9f91f9a..0000000
--- a/.github/workflows/build.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: bluebuild
-on:
- schedule:
- - cron:
- "00 06 * * *" # build at 06:00 UTC every day
- # (20 minutes after last ublue images start building)
- push:
- paths-ignore: # don't rebuild if only documentation has changed
- - "**.md"
-
- pull_request:
- workflow_dispatch: # allow manually triggering builds
-concurrency:
- # only run one build at a time
- group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
- cancel-in-progress: true
-jobs:
- bluebuild:
- name: Build Custom Image
- runs-on: ubuntu-latest
- permissions:
- contents: read
- packages: write
- id-token: write
- strategy:
- fail-fast: false # stop GH from cancelling all matrix builds if one fails
- matrix:
- recipe:
- - beardy.yml
- # - beardy-bazzite.yml
- # - beardy-bazzite-deck.yml
- steps:
- # the build is fully handled by the reusable github action
- - name: Build Custom Image
- uses: blue-build/github-action@v1.8
- with:
- recipe: ${{ matrix.recipe }}
- cosign_private_key: ${{ secrets.SIGNING_SECRET }}
- registry_token: ${{ github.token }}
- pr_event_number: ${{ github.event.number }}
-
- # enabled by default, disable if your image is small and you want faster builds
- maximize_build_space: true
diff --git a/hack/base.butane b/docs/archived/base.butane
similarity index 100%
rename from hack/base.butane
rename to docs/archived/base.butane
diff --git a/hack/base.ign b/docs/archived/base.ign
similarity index 100%
rename from hack/base.ign
rename to docs/archived/base.ign
diff --git a/hack/beardy-autorebase.butane b/docs/archived/beardy-autorebase.butane
similarity index 100%
rename from hack/beardy-autorebase.butane
rename to docs/archived/beardy-autorebase.butane
diff --git a/hack/beardy-autorebase.ign b/docs/archived/beardy-autorebase.ign
similarity index 100%
rename from hack/beardy-autorebase.ign
rename to docs/archived/beardy-autorebase.ign
diff --git a/hack/beardy-bootc-switch.butane b/docs/archived/beardy-bootc-switch.butane
similarity index 100%
rename from hack/beardy-bootc-switch.butane
rename to docs/archived/beardy-bootc-switch.butane
diff --git a/hack/beardy-bootc-switch.ign b/docs/archived/beardy-bootc-switch.ign
similarity index 100%
rename from hack/beardy-bootc-switch.ign
rename to docs/archived/beardy-bootc-switch.ign
diff --git a/hack/boot-remote.ipxe b/docs/archived/boot-remote.ipxe
similarity index 100%
rename from hack/boot-remote.ipxe
rename to docs/archived/boot-remote.ipxe
diff --git a/docs/archived/osbuild-blueprint-bootc.toml b/docs/archived/osbuild-blueprint-bootc.toml
new file mode 100644
index 0000000..9edf32c
--- /dev/null
+++ b/docs/archived/osbuild-blueprint-bootc.toml
@@ -0,0 +1,9 @@
+[customizations]
+
+[[customizations.user]]
+name = "beardy"
+groups = ["wheel"]
+
+[customizations.installer]
+unattended = true
+sudo-nopasswd = ["user", "%wheel"]
diff --git a/docs/archived/osbuild-blueprint.toml b/docs/archived/osbuild-blueprint.toml
new file mode 100644
index 0000000..705f9e0
--- /dev/null
+++ b/docs/archived/osbuild-blueprint.toml
@@ -0,0 +1,33 @@
+name = "beardy-os"
+description = "The preferred OS for bearded developers."
+version = "0.0.1"
+
+distro = "???"
+
+[customizations]
+hostname = "beardy"
+
+[[customizations.user]]
+name = "beardy"
+groups = ["wheel"]
+
+[[customizations.timezone]]
+timezone = "US/Eastern"
+
+[[customizations.locale]]
+languages = ["en_US.UTF-8"]
+keyboard = "us"
+
+[customizations.installer]
+unattended = true
+sudo-nopasswd = ["user", "%wheel"]
+
+[customizations.installer.kickstart]
+contents = """
+text --non-interactive
+zerombr
+clearpart --all --initlabel --disklabel=gpt
+autopart --noswap --type=lvm
+network --bootproto=dhcp --device=link --activate --onboot=on
+"""
+
diff --git a/recipes/beardy-bazzite-deck.yml b/docs/archived/recipes/beardy-bazzite-deck.yml
similarity index 100%
rename from recipes/beardy-bazzite-deck.yml
rename to docs/archived/recipes/beardy-bazzite-deck.yml
diff --git a/recipes/beardy-bazzite.yml b/docs/archived/recipes/beardy-bazzite.yml
similarity index 100%
rename from recipes/beardy-bazzite.yml
rename to docs/archived/recipes/beardy-bazzite.yml
diff --git a/recipes/beardy.yml b/docs/archived/recipes/beardy.yml
similarity index 100%
rename from recipes/beardy.yml
rename to docs/archived/recipes/beardy.yml
diff --git a/files/scripts/example.sh b/files/scripts/example.sh
deleted file mode 100644
index fdb2e04..0000000
--- a/files/scripts/example.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env bash
-
-# Tell this script to exit if there are any errors.
-# You should have this in every custom script, to ensure that your completed
-# builds actually ran successfully without any errors!
-set -oue pipefail
-
-# Your code goes here.
-echo 'This is an example shell script'
-echo 'Scripts here will run during build if specified in recipe.yml'
diff --git a/files/system/common/etc/.gitkeep b/files/system/common/etc/.gitkeep
deleted file mode 100644
index 8b13789..0000000
--- a/files/system/common/etc/.gitkeep
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/files/system/common/etc/sudoers.d/wheel-nopassword b/files/system/common/etc/sudoers.d/wheel-nopassword
deleted file mode 100644
index c4065fc..0000000
--- a/files/system/common/etc/sudoers.d/wheel-nopassword
+++ /dev/null
@@ -1 +0,0 @@
-%wheel ALL = (ALL) NOPASSWD: ALL
\ No newline at end of file
diff --git a/files/system/common/etc/ublue-update/ublue-update.toml b/files/system/common/etc/ublue-update/ublue-update.toml
deleted file mode 100644
index fcd67a2..0000000
--- a/files/system/common/etc/ublue-update/ublue-update.toml
+++ /dev/null
@@ -1,8 +0,0 @@
-# copied from https://github.com/ublue-os/bluefin
-[checks]
- min_battery_percent = 20.0
- max_cpu_load_percent = 50.0
- max_mem_percent = 90.0
- network_not_metered = true # Abort if network connection is metered
-[notify]
- dbus_notify = false
diff --git a/files/system/common/usr/share/applications/system-update.desktop b/files/system/common/usr/share/applications/system-update.desktop
deleted file mode 100644
index 2839171..0000000
--- a/files/system/common/usr/share/applications/system-update.desktop
+++ /dev/null
@@ -1,9 +0,0 @@
-# copied from https://github.com/ublue-os/bluefin
-[Desktop Entry]
-Type=Application
-Name=System Update
-Comment=Update Bluefin, Flatpaks, Distrobox containers, and more
-Icon=ublue-update
-Categories=ConsoleOnly;System;
-Terminal=true
-Exec=/usr/bin/ujust update
diff --git a/files/system/common/usr/share/ublue-os/just/10-update.just b/files/system/common/usr/share/ublue-os/just/10-update.just
deleted file mode 100644
index 2ace18a..0000000
--- a/files/system/common/usr/share/ublue-os/just/10-update.just
+++ /dev/null
@@ -1,45 +0,0 @@
-# vim: set ft=make :
-# copied from https://github.com/ublue-os/bluefin
-
-alias upgrade := update
-
-# Update system, flatpaks, and containers all at once
-update:
- #!/usr/bin/bash
- TOPGRADE_CONFIG="/usr/share/ublue-os/topgrade"
- /usr/bin/grep "^LockLayering=true" /etc/rpm-ostreed.conf &>/dev/null && TOPGRADE_CONFIG="${TOPGRADE_CONFIG}-bootc"
- /usr/bin/topgrade --config "${TOPGRADE_CONFIG}.toml" --keep
-
-alias auto-update := toggle-updates
-
-# Turn automatic updates on or off
-toggle-updates ACTION="prompt":
- #!/usr/bin/bash
- source /usr/lib/ujust/ujust.sh
- CURRENT_STATE="Disabled"
- if systemctl is-enabled ublue-update.timer | grep -q enabled; then
- CURRENT_STATE="Enabled"
- fi
- OPTION={{ ACTION }}
- if [ "$OPTION" == "prompt" ]; then
- echo "Automatic updates are currently: ${bold}${CURRENT_STATE}${normal}"
- echo "Enable or Disable automatic updates?"
- OPTION=$(ugum choose Enable Disable)
- elif [ "$OPTION" == "help" ]; then
- echo "Usage: ujust toggle-updates