3.5 KiB
Bun OS
Bun OS is the unified Aphrody/Bun product workspace. It combines the OS distribution factory, shared Bun packages, desktop application, and pinned library/runtime sources under one root Bun workspace. Source repositories are kept as revision-locked submodules so their histories and license notices stay available.
Setup and quality
Requires Bun 1.4.4, Git, and the native toolchains for the targets being built.
bun run setup
bun run check
setup initializes the root locked submodules, installs the single Bun
workspace from bun.lock, and selects the shared Cargo target and install
directories. Nested submodules remain pinned but are fetched only when their
owning component requires them. Run bun run workspace --help for library
inventory and capability commands.
Distribution factory
bun src/cli.ts --help
bun src/cli.ts plan --profile full --target linux-x64
bun src/cli.ts sources --out ./out/full-new --config ./factory.local.json
bun src/cli.ts stage --out ./out/full-new --profile full --target linux-x64 --runtime ./ARTIFACT --receipt ./RECEIPT.json
bun src/cli.ts image --out ./out/full-new --profile full --target linux-x64 --tag bun-os:full
Profiles and ABIs are in distribution.json; source revisions are pinned in
sources.lock.json. Staging requires the exact locked runtime, target, ABI,
hash, byte count, and native runtime qualification. A local Bun snapshot does
not qualify a different locked runtime.
The package converter and APT adapter produce metadata and package artifacts; they are distinct from the official APT installation engine. Native package transactions and signatures have separate qualification gates.
Libraries, desktop, and apps
Root packages include the shared workspace/process/hash owners, video adapter,
artifact compiler, package converter, and desktop application. Library source
projects are pinned below libraries/; the Bun runtime and Tauri SDK source are
pinned below toolchains/bun/. App builds and shared assets use the
@aphrody/bun-artifacts and @aphrody/bun-workspace owners.
Shared Craft font assets, licenses and optional embedding are integrated under
fonts/ and crates/craft-fonts; see font ownership and provenance.
The two font crates are pinned private forge submodules under the flat
crates/ directory. See crate ownership for the
shared nightly, workspace and access contract.
The root owns one Bun node_modules, the nightly toolchain, Cargo intermediate
outputs in build/rust, and shared target and install locations.
Imported JavaScript packages are selected explicitly through the root build
owner:
just packages-plan paths,ovh,kernel-client
just packages-build paths,ovh,kernel-client
The plan reports absent or unmigrated workspace members. Successful builds
write JavaScript and hash receipts under build/packages/<package>; those
receipts do not qualify execution, installation, or deployment.
The runtime's existing build and vendored dependency
trees have not yet been migrated into root-owned locations. Rust source
repositories still declare independent Cargo workspaces; the root Cargo
workspace migration is tracked in PLAN.md and is incomplete until
crate manifests and workspace inheritance have been migrated.