This document provides essential information for coding agents working with the aurora-common repository.
Aurora-Common is a shared OCI layer containing configuration files for Aurora and Aurora-DX variants.
- Type: OCI container layer built on top of projectbluefin/common
- Purpose: Provide Aurora-specific configuration and assets while inheriting shared Bluefin configuration
- Base: Multi-stage build pulling from aurora-wallpapers, projectbluefin/common, and local files
- Languages: Configuration files (JSON, shell scripts, markdown)
- Build System: GitHub Actions with podman/buildah, Just for local convenience
Containerfile- Multi-stage build pulling wallpapers, projectbluefin/common, and local filesJustfile- Convenience commands for building and inspecting the imagecosign.pub- Container signing public keyimage-versions.yml- Version tracking for dependenciesREADME.md- Repository documentation.pre-commit-config.yaml- Pre-commit hooks configuration
system_files/- Configuration files organized by variantshared/- Configuration shared between Aurora and Aurora-DXetc/- System-level configuration (bazaar, dconf, geoclue, profile.d, skel, systemd, ublue-os, zsh)usr/- User-space configuration (bin, lib, libexec, share)
dx/- Aurora-DX specific configurationetc/- DX system-level configurationusr/- DX user-space configuration
flatpaks/- Flatpak definitions for Aurora imageslogos/- Aurora branding and logo assets
.github/workflows/build.yml- Build workflow using podman/buildah
- podman and buildah for building containers
- just for convenience commands (optional)
- pre-commit for development hooks (optional)
Build locally:
# Using Just
just build
# Or directly with podman
podman build -t localhost/aurora-common:latest -f ./Containerfile .Inspect the image:
# View directory structure
just tree
# Dump all contents to ./dump directory
just dumpValidate Just syntax:
# Check syntax
just check
# Fix formatting
just fix- Builder stage pulls aurora-wallpapers and processes them
- Scratch stage pulls projectbluefin/common shared files
- Local files (flatpaks, logos, system_files) are added
- Final image is pushed to
ghcr.io/ublue-os/aurora-common:latest - Aurora and Aurora-DX images reference this layer in their builds
Aurora images use this layer in their Containerfiles:
FROM ghcr.io/ublue-os/aurora-common:latest AS aurora-common
# Copy shared configuration
COPY --from=aurora-common /system_files/shared /
# Aurora-DX also copies DX-specific configuration
COPY --from=aurora-common /system_files/dx /
# Copy wallpapers and other assets
COPY --from=aurora-common /wallpapers /
COPY --from=aurora-common /flatpaks /tmp/flatpaks
COPY --from=aurora-common /logos /tmp/logos- Edit files in
system_files/- Maintain the existing directory structure - Test locally with
just buildto ensure no syntax errors - Create PR - GitHub Actions will build and validate
- Determine if the configuration is shared or DX-specific
- Place files in the appropriate subdirectory:
- Shared configs:
system_files/shared/ - DX-specific:
system_files/dx/
- Shared configs:
- Follow the existing path structure (etc/ or usr/)
- Ensure file permissions are correct (executables for scripts)
- Shared system configs: Edit files in
system_files/shared/etc/ - Shared user configs: Edit files in
system_files/shared/usr/ - DX-specific configs: Edit files in
system_files/dx/ - Flatpak definitions: Modify
flatpaks/directory - Branding assets: Update
logos/directory
# Build locally to check for errors
just build
# Check Just syntax
just check
# Validate JSON files
find system_files -name "*.json" -exec sh -c 'echo "Checking {}"; cat {} | jq . > /dev/null' \;
# Check shell script syntax
find system_files -name "*.sh" -exec bash -n {} \;
# Inspect built image
just treeThe build workflow automatically:
- Builds the container with podman/buildah
- Pushes to GHCR on merge to main
- Validates build succeeds on PRs
- Understand shared vs DX - Place configs in the correct system_files subdirectory
- Maintain structure - Follow existing directory patterns
- Test locally - Build with
just buildbefore pushing - Use pre-commit hooks - Run before committing if configured
- JSON files: Validate syntax with
jqbefore committing - Shell scripts: Check syntax with
bash -n script.sh - Just files: Use
just checkandjust fixfor syntax validation - Keep files small - Each file should have a single, clear purpose
- Document changes - Update comments in configuration files
This repository structure:
- Configuration files in
system_files/shared/andsystem_files/dx/ - Flatpak definitions in
flatpaks/ - Branding assets in
logos/ - Multi-stage Containerfile pulling from aurora-wallpapers and projectbluefin/common
- Justfile with convenience commands
- GitHub Actions workflow for automated builds
- Use conventional commits for all commits and PR titles
- Keep changes minimal and surgical
- This layer is used by Aurora and Aurora-DX
- Changes to
system_files/shared/affect both variants - Changes to
system_files/dx/only affect Aurora-DX
AI agents must disclose what tool and model they are using in the "Assisted-by" commit footer:
Assisted-by: [Model Name] via [Tool Name]
Example:
Assisted-by: Claude 3.5 Sonnet via GitHub Copilot