| .github | ||
| iso_files | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| Containerfile | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
| renovate.json | ||
Aurora ISO Builder
This repository is dedicated to building bootable Aurora ISOs using Titanoboa and the Anaconda installer with WebUI.
Overview
Aurora ISO Builder creates installation media for Aurora, a delightful KDE desktop experience built on Universal Blue. These ISOs provide a live environment with the Anaconda WebUI installer for easy installation of Aurora.
Features
- Live Environment: Boots into a fully functional Aurora desktop
- Anaconda WebUI Installer: Modern web-based installation experience
- Multiple Flavors: Support for standard and NVIDIA Open variants
- Pre-configured: Optimized BTRFS partitioning, secure boot support, flatpak integration
- Test & Production Pipeline: ISOs are built to test bucket, then promoted to production
- Manual Promotion: Controlled release process with dry-run capability
Download
Pre-built ISOs are available at getaurora.dev.
Testing ISOs are available here.
Verifying ISOs
1. Integrity Check (Checksum)
You can verify the SHA256 checksum of your downloaded ISO against the published checksum file:
sha256sum -c <iso-name>.iso-CHECKSUM
2. Provenance Attestation (GitHub Actions)
All official ISOs built via GitHub Actions include signed cryptographic build provenance attestations. You can verify that the ISO was built and published directly by this repository using the GitHub CLI (gh):
gh attestation verify <iso-name>.iso --owner get-aurora-dev
Or by specifying the repository directly:
gh attestation verify <iso-name>.iso --repo get-aurora-dev/iso
Repository Structure
.
├── .github/
│ └── workflows/
│ ├── build-iso-stable.yml # Caller workflow for stable ISOs
│ ├── reusable-build-iso-anaconda.yml # Reusable ISO build workflow
│ └── promote-iso.yml # ISO promotion workflow
├── iso_files/
│ ├── configure_iso_anaconda.sh # ISO configuration script
│ └── scope_installer.png # Installer branding
├── .pre-commit-config.yaml # Pre-commit hooks
└── README.md # This file
Building ISOs
Prerequisites
ISOs are built using GitHub Actions, but you can validate your changes locally:
# Install pre-commit
pip install pre-commit
pre-commit install
Validation
Before submitting changes, validate your code:
# Check all syntax and formatting
pre-commit run --all-files
# Test ISO configuration script syntax
bash -n iso_files/configure_iso_anaconda.sh
bash -n iso_files/build.sh
ISO Variants
Flavors
- main: Standard Aurora ISO with open-source drivers
- nvidia-open: Aurora ISO with NVIDIA Open kernel modules
Versions
- stable: Latest stable Fedora release (recommended)
- latest: Current Fedora release
Configuration
ISO Customization
The ISO is customized via iso_files/configure_iso_anaconda.sh:
- Installs Anaconda WebUI installer
- Configures Aurora-specific Anaconda profile
- Sets up BTRFS partitioning with zstd compression
- Adds installer to KDE panel and kickoff menu
- Configures secure boot key enrollment
- Pre-installs flatpaks (dynamically generated from Brewfiles)
Anaconda Profile
The custom Aurora profile includes:
- Storage: BTRFS with zstd:1 compression
- Partitioning:
/(1 GiB min, 70 GiB max)/home(500 MiB min, 50 GiB free)/var(BTRFS)
- Network: First wired connection auto-enabled
- Bootloader: Fedora EFI directory, auto-hide menu
Secure Boot
Secure boot is supported by default. After installation, users are prompted to enroll the secure boot key with password: universalblue
GitHub Actions Workflow
ISO Build Workflow
Triggers
- Pull Requests: Builds ISOs for validation (no uploads)
- Workflow Dispatch: Manual triggering with configurable upload options
- Schedule: Weekly on Tuesdays at 03:15 AM UTC (2 hours after Aurora publishes weekly builds)
Build Matrix
The workflow builds ISOs for:
- Platform: amd64
- Flavors: main, nvidia-open
- Version: stable
Workflow Steps
- Maximize build space (removes unnecessary software)
- Checkout repository
- Format image reference
- Generate flatpak list dynamically from Brewfiles in common repo
- Build ISO with Titanoboa
- Generate checksums and build provenance attestations
- Upload to CloudFlare R2 test bucket (scheduled builds) or GitHub artifacts (configurable via inputs)
Upload Behavior
- PR builds: No uploads (validation only)
- Scheduled builds: Upload to CloudFlare R2 test bucket (
aurora-dl-test) - Manual dispatch: Configurable via
upload_artifactsandupload_r2inputs
ISO Promotion Workflow
The promotion workflow (promote-iso.yml) copies ISOs from the test bucket to production.
Triggers
- Workflow Dispatch: Manual triggering only
Inputs
- dry_run: (default:
true) Preview changes without copying files
Workflow Steps
- Install rclone
- Configure test bucket (source) and production bucket (destination)
- List files in test bucket for verification
- Promote ISOs and checksums (with
rclone sync) - Verify files in production bucket (if not dry-run)
Usage
To promote ISOs to production:
- Go to Actions → Promote ISOs to Production
- Click "Run workflow"
- First run with dry_run = true to preview changes
- Review the dry-run output
- Run again with dry_run = false to execute promotion
Note: The promotion workflow uses rclone sync, which will:
- Copy new files from test to production
- Update existing files if changed
- Remove ISO and CHECKSUM files from production that don't exist in test (subject to the rclone include filters)
Contributing
Contributions are welcome! Please follow these guidelines:
Before Committing
- Run validation:
pre-commit run --all-files - Test ISO script syntax:
bash -n iso_files/configure_iso_anaconda.sh && bash -n iso_files/build.sh - Use conventional commits
- Keep changes minimal and focused
Pull Request Process
- Fork the repository
- Create a feature branch
- Make your changes
- Run validation locally
- Submit a pull request
- Wait for ISO build to complete in GitHub Actions
- Test the generated ISO if needed
Common Changes
- Branding: Update images in
iso_files/ - Anaconda config: Edit profile in
configure_iso_anaconda.sh - Flatpak lists: Modify Brewfiles in get-aurora-dev/common repository
- Partitioning: Modify
default_partitioningin Anaconda profile - Live environment: Add/remove packages in configuration script
- Workflow: Update
.github/workflows/reusable-build-iso-anaconda.ymlorpromote-iso.yml
Documentation
- Aurora Documentation
- Universal Blue Docs
- Titanoboa - ISO builder tool
Resources
License
Apache-2.0
Acknowledgments
- Built on Universal Blue infrastructure
- Uses Titanoboa for ISO creation
- Based on Fedora Kinoite
- Powered by the ublue-os community