# Packaging (deb, rpm, Arch, Nix)

ashell is distributed through multiple packaging formats.

## .deb Packages (Debian/Ubuntu)

Generated by `generate-installers.yml` using [nfpm](https://nfpm.goreleaser.com/).

Package metadata comes from `Cargo.toml`:

```toml
[package.metadata.nfpm.deb]
depends = ["libwayland-client0", "libpipewire-0.3-0t64", "libpulse0"]
```

## .rpm Packages (Fedora/RHEL)

Also generated by `generate-installers.yml` with nfpm.

```toml
[package.metadata.nfpm.rpm]
depends = ["libwayland-client", "pipewire-libs", "pulseaudio-libs"]
```

## Arch Linux (AUR)

The `update-arch-package.yml` workflow updates the AUR package after each release. Users install via:

```bash
yay -S ashell
# or
paru -S ashell
```

## Nix

The `flake.nix` provides a Nix package:

```bash
# 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:

```bash
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 |
