Packaging (deb, rpm, Arch, Nix)
ashell is distributed through multiple packaging formats.
.deb Packages (Debian/Ubuntu)
Generated by generate-installers.yml using nfpm.
Package metadata comes from Cargo.toml. Dependencies are declared as nfpm
overrides, because cargo-nfpm ignores depends in the plain
[package.metadata.nfpm.deb] table (its deb settings have no such field):
[package.metadata.nfpm.overrides.deb]
depends = ["libxkbcommon0", "libwayland-client0", "libpipewire-0.3-0t64", "libpulse0", "libudev1", "dbus"]
The .deb installs on Ubuntu 24.04+ and Debian 13+. The release binary is built
on ubuntu-24.04 and needs glibc 2.39, and libpipewire-0.3-0t64 only exists
from those releases on. Older releases (Ubuntu 22.04, Debian 12) refuse the
package at install time instead of failing at launch.
.rpm Packages (Fedora/RHEL)
Also generated by generate-installers.yml with nfpm.
[package.metadata.nfpm.overrides.rpm]
depends = ["libxkbcommon", "libwayland-client", "pipewire-libs", "pulseaudio-libs", "systemd-libs", "dbus"]
After building, generate-installers.yml installs each .deb in ubuntu:24.04 and debian:trixie and each .rpm in fedora:latest, checks ldd for missing libraries and runs ashell --version. A failure stops the release before anything is uploaded. To try it without publishing, run the Release workflow manually with the default dry-run tag.
Separately, copr-build.yml builds an SRPM with cargo rpm (using .rpm/ashell.spec) on v* tag pushes and submits it to the community Fedora Copr repository killcrb/ashell.
Arch Linux (AUR)
The update-arch-package.yml workflow runs after each release but is currently a placeholder (it only prints a message); the AUR package is not updated automatically. Users install via:
yay -S ashell
# or
paru -S ashell
Nix
The flake.nix provides a Nix package:
# Run directly
nix run github:MalpenZibo/ashell
# Install
nix profile install github:MalpenZibo/ashell
Shell Installer
cargo-dist generates a shell installer script for manual installation:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/MalpenZibo/ashell/releases/latest/download/ashell-installer.sh | sh
Common Dependencies Across Formats
All packages share these runtime dependencies:
| Dependency | Purpose |
|---|---|
libxkbcommon | Keyboard handling |
dbus | D-Bus daemon |
libwayland-client | Wayland protocol |
libpipewire | PipeWire audio |
libpulse | PulseAudio compatibility |