repo_organization := "ublue-os" common_image := "ghcr.io/get-aurora-dev/common:latest" images := '( [aurora]=aurora )' flavors := '( [main]=main [nvidia-open]=nvidia-open )' tags := '( [stable]=stable [latest]=latest [testing]=testing )' export SUDO_DISPLAY := if `if [ -n "${DISPLAY:-}" ] || [ -n "${WAYLAND_DISPLAY:-}" ]; then echo true; fi` == "true" { "true" } else { "false" } export SUDOIF := if `id -u` == "0" { "" } else if SUDO_DISPLAY == "true" { "sudo --askpass" } else { "sudo" } export PODMAN := if path_exists("/usr/bin/podman") == "true" { env("PODMAN", "/usr/bin/podman") } else if path_exists("/usr/bin/docker") == "true" { env("PODMAN", "docker") } else { env("PODMAN", "exit 1 ; ") } just := just_executable() [private] default: @{{ just }} --list # Check Just Syntax [group('Just')] check: #!/usr/bin/bash find . -type f -name "*.just" | while read -r file; do echo "Checking syntax: $file" {{ just }} --unstable --fmt --check -f $file done echo "Checking syntax: Justfile" {{ just }} --unstable --fmt --check -f Justfile # Fix Just Syntax [group('Just')] fix: #!/usr/bin/bash find . -type f -name "*.just" | while read -r file; do echo "Checking syntax: $file" {{ just }} --unstable --fmt -f $file done echo "Checking syntax: Justfile" {{ just }} --unstable --fmt -f Justfile || { exit 1; } # Clean Repo [group('Utility')] clean: #!/usr/bin/bash set -eoux pipefail rm -rf output/ rm -rf common/ rm -f *.iso* rm -f flatpaks.list # Check if valid combo [group('Utility')] [private] validate $image $tag $flavor: #!/usr/bin/bash set -eou pipefail declare -A images={{ images }} declare -A tags={{ tags }} declare -A flavors={{ flavors }} # Handle Stable Daily if [[ "${tag}" == "stable-daily" ]]; then tag="stable" fi checkimage="${images[${image}]-}" checktag="${tags[${tag}]-}" checkflavor="${flavors[${flavor}]-}" # Validity Checks if [[ -z "$checkimage" ]]; then echo "Invalid Image..." exit 1 fi if [[ -z "$checktag" ]]; then echo "Invalid tag..." exit 1 fi if [[ -z "$checkflavor" ]]; then echo "Invalid flavor..." exit 1 fi # Image Name [group('Utility')] image_name image="aurora" tag="stable" flavor="main": #!/usr/bin/bash set -eou pipefail {{ just }} validate {{ image }} {{ tag }} {{ flavor }} if [[ "{{ flavor }}" =~ main ]]; then image_name={{ image }} else image_name="{{ image }}-{{ flavor }}" fi echo "${image_name}" # Clone Common Repository [group('ISO')] clone-common: #!/usr/bin/bash set -eoux pipefail if [[ ! -d "common" ]]; then git clone https://github.com/get-aurora-dev/common.git common else echo "Common repository already cloned" fi # Generate Flatpak List [group('ISO')] generate-flatpak-list: #!/usr/bin/bash set -eoux pipefail {{ just }} clone-common find common -iname "*system-flatpaks.Brewfile" -exec cat '{}' ';' | \ grep -v '#' | \ grep -F -e "flatpak" | \ sed 's/flatpak //' | \ tr -d '"' | \ tee flatpaks.list # Verify Container with Cosign [group('Utility')] verify-container container="" registry="ghcr.io/ublue-os" key="": #!/usr/bin/bash set -eou pipefail # Get Cosign if Needed if [[ ! $(command -v cosign) ]]; then COSIGN_CONTAINER_ID=$(${SUDOIF} ${PODMAN} create cgr.dev/chainguard/cosign:latest bash) ${SUDOIF} ${PODMAN} cp "${COSIGN_CONTAINER_ID}":/usr/bin/cosign /usr/local/bin/cosign ${SUDOIF} ${PODMAN} rm -f "${COSIGN_CONTAINER_ID}" fi # Verify Cosign Image Signatures if needed if [[ -n "${COSIGN_CONTAINER_ID:-}" ]]; then if ! cosign verify --certificate-oidc-issuer=https://token.actions.githubusercontent.com --certificate-identity=https://github.com/chainguard-images/images/.github/workflows/release.yaml@refs/heads/main cgr.dev/chainguard/cosign >/dev/null; then echo "NOTICE: Failed to verify cosign image signatures." exit 1 fi fi # Public Key for Container Verification key={{ key }} if [[ -z "${key:-}" ]]; then key="https://raw.githubusercontent.com/ublue-os/main/main/cosign.pub" fi # Verify Container using cosign public key if ! cosign verify --key "${key}" "{{ registry }}"/"{{ container }}" >/dev/null; then echo "NOTICE: Verification failed. Please ensure your public key is correct." exit 1 fi # Test ISO Configuration Script [group('ISO')] test-iso-config: #!/usr/bin/bash set -eoux pipefail bash -n iso_files/configure_iso_anaconda-webui.sh echo "ISO configuration script syntax is valid"