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