Wawona is a native Wayland Compositor for macOS, iOS, and Android.
Project Vision: Read about long-term objectives in Project Goals.
- Use an Apple Silicon Mac.
- Install Nix.
- Configure your environment (see below).
- Build with the Nix flake.
Wawona's flake includes nix-output-monitor as .#nom and in all dev shells.
- Direct use:
nom build .#wawona-macos - Via flake app:
nix run .#nom -- build .#wawona-macos - In
nix develop: use shortcutsnb(nom build),nd(nom develop), andns(nom shell)
This project uses a simple .envrc file to manage your Apple Development Team ID.
-
Create or edit
.envrc:echo 'export TEAM_ID="your_apple_team_id_here"' > .envrc
Replace
your_apple_team_id_herewith your actual Apple Development Team ID. -
The environment is automatically loaded when you use
nix develop- no additional tools required!
For build targets and Nix pipeline details, see Compilation Guide and Nix Build System.
- Weston natively on macOS:
nix run .#weston(full compositor) ornix run .#weston-terminal(terminal client) - Waypipe (remote apps): Configure SSH in Settings > Waypipe, set Remote Command (e.g.
nix run ~/Wawona#weston-terminal), tap Run Waypipe
See Usage Guide and Settings Reference.
hm. Fresh out of luck, I guess! ¯\_(ツ)_/¯
I use Nix to maintain a clean repository free of vendored dependency source code while ensuring hermetic, reproducible builds across all platforms. Nix allows us to define precise build environments for iOS, macOS, and Android without polluting your system.
- Hermetic Builds: Every dependency, from the Rust toolchain to system libraries like
libwaylandorffmpeg, is pinned to exact versions inflake.lock. This guarantees that if it builds on CI, it will build on your machine. - Zero-Config Environments: Running
nix develop(or usingdirenv) automatically enters a shell with all required compilers, headers, and auxiliary tools (likexcodegenorandroid-sdk) ready to go. - Composable Modules: The
flake.nixexports clean, reusable packages and development shells. You can easily integrate Wawona into other NixOS configurations or use its individual modules as building blocks for your own Wayland projects.
B
*tch, I worked hard to make nix your ONLY dependency, use it!
Cross-compiling for iOS still depends on Apple's proprietary SDKs and toolchains, so Wawona now follows the same high-level pattern as Nixpkgs xcodeenv: expose the host Xcode installation as an impure Nix package, build the Rust and native dependencies with Nix, then let xcodebuild package the app.
The Apple integration layer now does four distinct jobs:
- Expose host Xcode into Nix through a thin
xcodeenv-style wrapper. - Build Rust/static dependencies such as
libwawona.aand the iOS support libraries with Nix. - Generate the Xcode project with store-path references to those prebuilt artifacts.
- Package or launch the app through first-class flake outputs.
This keeps the wrapper minimal and lets the same flow work on local machines and on GitHub macOS runners.
nix build .#wawona-ios-app-simnix build .#wawona-ios-app-devicenix build .#wawona-ios-ipa --impurenix build .#wawona-ios-xcarchive --impurenix run .#wawona-iosnix run .#wawona-ios-projectnix run .#wawona-ios-provision
- Install Xcode.
- Select the Xcode you want to use with
xcode-select, unless the default selected Xcode is already correct. - For local release signing, export
TEAM_IDand build with--impureso the automatic-signing path can see it.
Example:
export TEAM_ID="YOURTEAMID"
nix build .#wawona-ios-ipa --impureWawona is a massive undertaking to bring a native Wayland compositor to Apple platforms and Android, and I cannot sustain this project alone. Your support whether through code, issues, ideas, or donations is essential to its progress and survival.
You can help by:
- Opening issues for bugs or feature requests
- Submitting pull requests for improvements
- Sharing ideas and suggestions
- Spreading the word to others
- Supporting ongoing development through donations if you find Wawona useful or believe in its goals
Thank you for being part of the journey!
Donate here: Ko‑fi: https://ko-fi.com/aspauldingcode
Share Wawona with friends!
This project is licensed under the MIT License - see the LICENSE file for details.
Third-party dependencies (Rust crates, native libs, Android) use MIT, Apache 2.0, BSD, MPL-2.0, LGPL, or GPL as applicable. For a full list and how to disclose them, see Third-Party Licenses. A NOTICE template is in NOTICE.example.


