80 lines
2.4 KiB
Makefile
80 lines
2.4 KiB
Makefile
###############################################################################
|
|
# Justfile - convenience commands for building and testing the image
|
|
# Run `just` (no args) to see the list. Requires `just` (brew install just).
|
|
###############################################################################
|
|
|
|
image_name := "kamos"
|
|
default_tag := "stable"
|
|
bib_image := "quay.io/centos-bootc/bootc-image-builder:latest"
|
|
|
|
# Show available recipes.
|
|
default:
|
|
@just --list
|
|
|
|
# Build the OCI image with podman.
|
|
# On an Apple Silicon Mac you MUST pass --platform=linux/amd64 because the
|
|
# upstream Bazzite NVIDIA image is x86_64 only. This will use qemu emulation
|
|
# and will be slow. CI is the much faster path.
|
|
build target_image=image_name tag=default_tag:
|
|
podman build \
|
|
--platform=linux/amd64 \
|
|
--pull=newer \
|
|
--tag {{ target_image }}:{{ tag }} \
|
|
.
|
|
|
|
# Build a QCOW2 disk image (good for testing in VMware/UTM/QEMU).
|
|
build-qcow2 target_image=image_name tag=default_tag:
|
|
just _build-disk {{ target_image }} {{ tag }} qcow2
|
|
|
|
# Build an ISO suitable for installation onto a real NVIDIA PC.
|
|
build-iso target_image=image_name tag=default_tag:
|
|
just _build-disk {{ target_image }} {{ tag }} iso
|
|
|
|
# Build a raw disk image.
|
|
build-raw target_image=image_name tag=default_tag:
|
|
just _build-disk {{ target_image }} {{ tag }} raw
|
|
|
|
# Internal: invoke bootc-image-builder.
|
|
_build-disk target_image tag type:
|
|
mkdir -p output
|
|
podman run \
|
|
--rm \
|
|
--privileged \
|
|
--pull=newer \
|
|
--security-opt label=type:unconfined_t \
|
|
-v $(pwd)/output:/output \
|
|
-v $(pwd)/disk_config:/config:ro \
|
|
-v /var/lib/containers/storage:/var/lib/containers/storage \
|
|
{{ bib_image }} \
|
|
--type {{ type }} \
|
|
--use-librepo=True \
|
|
--local \
|
|
localhost/{{ target_image }}:{{ tag }}
|
|
|
|
# Run the QCOW2 image in QEMU directly (fast, headless-friendly).
|
|
run-vm-qcow2:
|
|
qemu-system-x86_64 \
|
|
-enable-kvm \
|
|
-M q35 \
|
|
-cpu host \
|
|
-smp 4 \
|
|
-m 6G \
|
|
-drive file=output/qcow2/disk.qcow2,if=virtio \
|
|
-nic user,model=virtio-net-pci
|
|
|
|
# Lint shell scripts.
|
|
lint:
|
|
shellcheck build_files/*.sh
|
|
|
|
# Format shell scripts.
|
|
format:
|
|
shfmt -w build_files/*.sh
|
|
|
|
# Validate the Justfile itself.
|
|
check:
|
|
just --fmt --check --unstable
|
|
|
|
# Remove build artifacts.
|
|
clean:
|
|
rm -rf output
|