Guide

Building from source

Everything Alpymist ships is built in an Alpine container, so the binaries link against the same musl they run on. You need Docker for that and a Rust toolchain for the workspace; rust-toolchain.toml pins the version to match Alpine's.

Get the code

sh
git clone https://github.com/bisand/alpymist.git
cd alpymist
make help

The Rust workspace

The same checks CI runs on every pull request. Formatting and clippy warnings are errors.

sh
make check
make test
make lint

CI itself runs clippy and the tests with the alpymist-ui/render feature, lints the installer, splash and login screen once more as they ship, on DRM, and checks that every package's version equals the workspace's. The exact commands are in CLAUDE.md.

On any Linux machine you can ask the probe how Hyprland will do on the hardware in front of you:

sh
cargo run -p alpymist -- probe

The installer opens in a window during development, so you can walk through it without building an image. ALPYMIST_DRY_RUN=1 makes the last step report what it would run instead of touching a disk.

sh
ALPYMIST_DRY_RUN=1 cargo run -p alpymist-install

A bootable image

ARCH defaults to your machine's architecture. x86_64 is the architecture Alpymist actually targets; aarch64 is what it is developed on.

sh
make iso ARCH=x86_64
make smoke ARCH=x86_64

make iso builds the builder container, the packages and the image, and leaves the ISO in out/. make smoke boots it under QEMU, reads the serial console, and checks that the first-boot probe said how Hyprland will do and explained itself.

How the packages, images and channels are built and published is written down in ci/README.md.

Repository layout

PathContents
crates/Rust workspace: the alpymist command line and settings library, the hardware probe, the installer, splash, login and lock screens, Settings, the menu, the bar's popups and the screensavers
aports/APKBUILDs for the Alpymist packages
desktop/What the desktop package installs: Hyprland, bar and terminal configuration for /etc/skel, PAM and polkit rules, and the screensaver and AI usage definitions
profiles/mkimage profiles and genapkovl overlays
builder/The Alpine container everything is built in
ci/The scripts CI and make run to build packages and images, and how publishing works
xtask/Version, smoke-test and publish orchestration, in Rust
docs/manual/The manual, one file a chapter
docs/adr/Architecture decision records
site/This web site

This site

The site is SvelteKit, prerendered to static HTML and published to GitHub Pages when site/, docs/ or the signing key in aports/alpymist-keys changes on main. The decision records are read straight from docs/adr, so editing one there updates it here.

sh
cd site
npm ci
npm run dev

Contributions are accepted under MIT or Apache-2.0. Security issues go through SECURITY.md, not the issue tracker.