Getting Started with Wawona
Wawona is a native Wayland compositor for macOS, iOS, and Android. Whether you want to run Wayland apps on your Mac or contribute to the project, this guide will get you up and running.
For Users
You do NOT need to install Nix. Nix is a developer tool for building Wawona from source. If you just want to use Wawona, read this section instead.
The Easy Way: App Store & Play Store
Wawona will be distributed as a native app on each platform:
| Platform | Where to Get It | Status |
|---|---|---|
| macOS | Mac App Store | Coming Soon |
| iOS / iPadOS | App Store | Coming Soon |
| Android | Google Play Store | Coming Soon |
Once available, simply download and install β no terminal, no build tools, no Nix. Just a regular app.
Visit the Downloads page for the latest availability info.
While We're Still in Developmentβ¦
Wawona is in active development (v0.2.x) and not yet available on public app stores. Here's how you can get involved right now:
Join the iOS TestFlight Beta
We have an active TestFlight for iOS beta testing. Join to get early access and help shape Wawona before launch:
- Join our Discord server
- Request access to the TestFlight beta in the
#beta-testingchannel - You'll receive a TestFlight invite link directly to your device
Join the Discord Community
Stay up to date with development progress, ask questions, and share feedback:
Star the Repository
Follow development on GitHub to get notified of new releases:
π github.com/aspauldingcode/Wawona
TL;DR: You do not need Nix, Rust, Xcode, or any developer tools. When Wawona ships, it will be a one-click install from the App Store or Play Store. Until then, join the Discord and the iOS TestFlight beta.
For Developers
Everything below this line is for people who want to build Wawona from source or contribute to the project. This requires Nix.
Prerequisites
| Requirement | Notes |
|---|---|
| Apple Silicon Mac | M1, M2, M3, or M4 |
| Nix (with flakes) | Determinate Nix recommended |
| Xcode | Required for iOS builds and code signing |
Build & Run
| Command | What it does |
|---|---|
nix run | Build + launch macOS app |
nix run .#wawona-ios | Build + launch on iOS Simulator |
nix run .#wawona-android | Build + install on Android device/emulator |
Build Only (No Launch)
nix build .#wawona-macos # macOS .app bundle
nix build .#wawona-ios-backend # iOS Rust static library
nix build .#wawona-android-backend # Android Rust shared library
Generate Xcode Project
To open the project in Xcode (for debugging, profiling, or deploying to a physical device):
nix run .#xcodegen # Generate Wawona.xcodeproj (iOS + macOS targets)
nix run .#xcodegen-ios # iOS target only
open Wawona.xcodeproj
Generate Gradle Project (Android)
nix run .#gradlegen
Setting Up Your Team ID (iOS Device Deployment)
To deploy Wawona to a physical iOS device, you need an Apple Development Team ID for code signing. Here's the workflow:
1. Find Your Team ID
If you don't know your Team ID, the easiest way to find it:
- Run
nix run .#xcodegento generate the Xcode project - Open
Wawona.xcodeprojin Xcode - Go to Signing & Capabilities for the Wawona-iOS target
- Sign in with your Apple ID and select your development team
- Xcode writes your Team ID into the
.xcodeprojβ you can find it there (look forDEVELOPMENT_TEAMin the.pbxprojfile)
2. Save Your Team ID
Create a .envrc file in the project root (this file is gitignored):
echo 'export TEAM_ID="YOUR_TEAM_ID_HERE"' > .envrc
Replace YOUR_TEAM_ID_HERE with the Team ID you found (e.g., G6EJA4DJKW).
3. Use the Dev Shell
Enter the Nix development shell, which automatically reads your Team ID from .envrc:
nix develop
You'll see Loaded TEAM_ID from .envrc. confirming it worked.
4. Generate With Signing
Now, from inside the dev shell, run xcodegen:
nix run .#xcodegen
Your Team ID is automatically injected into the generated .xcodeproj β no need to manually navigate to Signing & Capabilities in Xcode every time. Just open the project and build to your device.
Tip: Once your
.envrcis set up, the workflow is justnix developβnix run .#xcodegenβ open in Xcode β build to device. Your signing identity is preserved across project regenerations.
Dev Shell
The Nix dev shell provides a complete development environment with all tools and environment variables pre-configured:
nix develop
This gives you:
- Rust toolchain with iOS, macOS, and Android cross-compilation targets
XDG_RUNTIME_DIRandWAYLAND_DISPLAYset for local testing- Your
TEAM_IDloaded from.envrcfor code signing - All native dependencies available
Useful Nix Flags
| Flag | Purpose |
|---|---|
-L | Show full build logs |
--show-trace | Stack trace on Nix evaluation errors |
--rebuild | Force rebuild (ignore cache) |
Next Steps
- Usage Guide β run Weston, waypipe, connect clients
- Architecture β understand the Rust core + native frontend design
- Compilation Reference β deep dive into the Nix build system
- Settings Reference β all configurable options