Contributing
This repo is the Apple Silicon (Asahi Linux) install path for TunaOS-family
bootc images: a macOS app (Bootsahi) plus a bootstrap image whose first boot
runs fisherman to bootc install the image the user picked. See docs/DESIGN.md for
the architecture and README.md for current status.
Building and testingβ
macOS app (macos-app/Bootsahi, Swift/SwiftUI)β
cd macos-app/Bootsahi
swift build -v
swift test -v
CI (.github/workflows/bootsahi-app-build.yml) builds and tests this on
macos-14 (and macos-26 for the Swift 6.2+ Liquid Glass path) on pushes to
main and on PRs touching macos-app/**.
Shell scripts and the bootstrap/agent harnessβ
# Lint (matches CI's selftest.yml lint job)
shellcheck -S warning scripts/*.sh components/*/*.sh
# Harness selftest: payload structure + installer_data.json contract
sudo ./scripts/selftest.sh
# Backend contract: pinned asahi-installer --json (needs `pip install pytest`)
./scripts/test-backend-contract.sh
# bootsahi-agent: install-config.json -> recipe.json contract
./components/bootsahi-agent/test-agent.sh
# Disk resolution + real fisherman `validate` (needs root, gdisk, a built fisherman)
sudo ./components/bootsahi-agent/test-agent-disk.sh
.github/workflows/selftest.yml runs the lint job plus these harness tests on
every PR. test-agent-install.sh (a real bootc install against a stand-in
image) and test-bootstrap-boot.sh (boots the bootstrap image under
qemu+U-Boot) are heavier and run as part of build-payload.yml /
selftest.yml's install-selftest job rather than on every PR.
Code styleβ
Shell scripts are linted with shellcheck -S warning in CI (see above); there
is no repository-wide style tool for the Swift app yet.
Branch and PR conventionsβ
Branches are generally named <category>/<short-description>, e.g.
fix/..., feat/..., docs/..., sec/..., test/..., quality/... (see
existing branches in this repo for examples). Reference the relevant issue
number in the PR description when one exists.
Reporting issuesβ
Use GitHub Issues on this repository.