11# Hypercube Build System
2+ # Single unified image with NVIDIA support included
23
34# Configuration
45export repo_organization := env (" REPO_ORGANIZATION" , " binarypie-dev" )
56export image_name := env (" IMAGE_NAME" , " hypercube" )
6- export base_image := env (" BASE_IMAGE" , " ghcr.io/ublue-os/base-main" )
7- export base_image_nvidia := env (" BASE_IMAGE_NVIDIA" , " ghcr.io/ublue-os/base-nvidia" )
8- export default_tag := env (" DEFAULT_TAG" , " stable-daily" )
7+ export fedora_version := env (" FEDORA_VERSION" , " 43" )
8+ export akmods_flavor := env (" AKMODS_FLAVOR" , " coreos-stable" )
99
1010# Runtime detection
1111export SUDO := if ` id -u ` == " 0" { " " } else { " sudo" }
@@ -21,30 +21,22 @@ default:
2121
2222# Build container image
2323[group (' Build' )]
24- build flavor = " main" ghcr = " 0":
24+ build ghcr = " 0":
2525 #!/usr/bin/env bash
2626 set -euo pipefail
2727
28- # Determine base image based on flavor
29- if [[ " {{ flavor }}" == " nvidia" ]]; then
30- BASE=" {{ base_image_nvidia }}:{{ default_tag }}"
31- TAG=" {{ default_tag }}-nvidia"
32- else
33- BASE=" {{ base_image }}:{{ default_tag }}"
34- TAG=" {{ default_tag }}"
35- fi
36-
37- IMAGE_FULL=" {{ image_name }}:${TAG} "
28+ IMAGE_FULL=" {{ image_name }}:{{ fedora_version }}"
3829
3930 echo " ========================================"
4031 echo " Building: ${IMAGE_FULL} "
41- echo " Base: ${BASE }"
32+ echo " Base: ghcr.io/ublue-os/base-main:{{ fedora_version } }"
4233 echo " ========================================"
4334
4435 BUILD_ARGS=()
45- BUILD_ARGS+=(" --build-arg" " BASE_IMAGE= ${BASE }" )
36+ BUILD_ARGS+=(" --build-arg" " FEDORA_VERSION={{ fedora_version } }" )
4637 BUILD_ARGS+=(" --build-arg" " IMAGE_NAME={{ image_name }}" )
4738 BUILD_ARGS+=(" --build-arg" " IMAGE_VENDOR={{ repo_organization }}" )
39+ BUILD_ARGS+=(" --build-arg" " AKMODS_FLAVOR={{ akmods_flavor }}" )
4840
4941 if [[ -z " $( git status -s) " ]]; then
5042 BUILD_ARGS+=(" --build-arg" " SHA_HEAD_SHORT=$( git rev-parse --short HEAD) " )
@@ -72,33 +64,18 @@ build flavor="main" ghcr="0":
7264
7365# Build for GHCR push (rootful)
7466[group (' Build' )]
75- build-ghcr flavor = " main":
76- @ just build {{ flavor }} 1
77-
78- # Build both flavors
79- [group (' Build' )]
80- build-all :
81- @ echo " Building main flavor..."
82- @ just build main
83- @ echo " "
84- @ echo " Building nvidia flavor..."
85- @ just build nvidia
67+ build-ghcr :
68+ @ just build 1
8669
8770# Run container interactively for testing
8871[group (' Build' )]
89- run flavor = " main" :
72+ run :
9073 #!/usr/bin/env bash
9174 set -euo pipefail
9275
93- if [[ " {{ flavor }}" == " nvidia" ]]; then
94- TAG=" {{ default_tag }}-nvidia"
95- else
96- TAG=" {{ default_tag }}"
97- fi
98-
9976 {{ PODMAN }} run -it --rm \
10077 --privileged \
101- " localhost/{{ image_name }}:${TAG }" \
78+ " localhost/{{ image_name }}:{{ fedora_version } }" \
10279 /bin/bash
10380
10481# ============================================
@@ -205,21 +182,14 @@ _titanoboa-setup:
205182
206183# Build ISO from local image using a temporary local registry
207184[group (' ISO' )]
208- build-iso-local flavor = " main" : _titanoboa-setup
185+ build-iso-local : _titanoboa-setup
209186 #!/ usr/ bin/ bash
210187 set -euo pipefail
211188
212189 REGISTRY_PORT=5000
213190 REGISTRY_NAME=" hypercube-registry"
214-
215- if [[ " {{ flavor }} " == " nvidia" ]]; then
216- TAG=" {{ default_tag }} -nvidia"
217- ISO_NAME=" {{ image_name }} -nvidia.iso"
218- else
219- TAG=" {{ default_tag }} "
220- ISO_NAME=" {{ image_name }} .iso"
221- fi
222-
191+ TAG=" {{ fedora_version }} "
192+ ISO_NAME=" {{ image_name }} .iso"
223193 LOCAL_IMAGE=" localhost/{{ image_name }} :${TAG}"
224194
225195 # Get the host IP address that the chroot can reach
@@ -237,7 +207,7 @@ build-iso-local flavor="main": _titanoboa-setup
237207 # Check if image exists in user storage
238208 ID=$({{ PODMAN }} images --filter reference=" ${LOCAL_IMAGE}" --format " {{{{.ID}}}}" )
239209 if [[ -z " $ID" ]]; then
240- echo " Error: Image ${LOCAL_IMAGE} not found. Run 'just build {{ flavor }} ' first."
210+ echo " Error: Image ${LOCAL_IMAGE} not found. Run 'just build' first."
241211 exit 1
242212 fi
243213
@@ -324,21 +294,12 @@ build-iso-local flavor="main": _titanoboa-setup
324294
325295# Build ISO from GHCR image
326296[group (' ISO' )]
327- build-iso-ghcr flavor = " main" : _titanoboa-setup
297+ build-iso-ghcr : _titanoboa-setup
328298 #!/ usr/ bin/ bash
329299 set -euo pipefail
330300
331- REGISTRY=" ghcr.io/{{ repo_organization }} "
332-
333- if [[ " {{ flavor }} " == " nvidia" ]]; then
334- TAG=" latest-nvidia"
335- ISO_NAME=" {{ image_name }} -nvidia.iso"
336- else
337- TAG=" latest"
338- ISO_NAME=" {{ image_name }} .iso"
339- fi
340-
341- IMAGE_FULL=" ${REGISTRY}/{{ image_name }} :${TAG}"
301+ IMAGE_FULL=" ghcr.io/{{ repo_organization }} /{{ image_name }} :latest"
302+ ISO_NAME=" {{ image_name }} .iso"
342303
343304 echo " Building ISO for ${IMAGE_FULL}..."
344305
0 commit comments