# Distribution Notes
This document tracks the external distribution work for `smux`.
## Channels
Planned distribution channels:
- GitHub Releases
- crates.io for `cargo install smux-cli`
- Homebrew
- nixpkgs
## What Is Ready Now
The repository already supports:
- release archives generated by GitHub Actions
- generated man pages and zsh completions as release artifacts
- local Nix installation with `nix profile install .#smux`
- local Cargo installation with `cargo install --path .`
## Remaining Blockers
Before public publication, the project still needs:
- a tagged release to anchor downstream package updates
## crates.io
Current status:
- `cargo publish --dry-run` succeeds
- the manifest now includes `license`, `repository`, and `homepage`
- `documentation` is still optional but not yet set
Practical next steps:
1. optionally add `documentation`
2. publish with `cargo publish`
3. verify `cargo install smux-cli` installs the `smux` binary
## Homebrew
Homebrew packaging should happen after the first tagged release.
Inputs needed:
- release tarball URL
- archive SHA256
- project license
- short install test using `smux --help`
Practical next steps:
1. create a release tag
2. use the generated archive and `SHA256SUMS`
3. prepare a Homebrew formula PR
## nixpkgs
The flake now exposes a package build suitable for local Nix installs.
That should make the nixpkgs derivation straightforward because the project already:
- builds cleanly from `Cargo.lock`
- generates man pages and zsh completions during packaging
Practical next steps:
1. create a nixpkgs derivation based on the flake package logic
2. use the release source archive and Cargo hash expected by nixpkgs
3. submit the nixpkgs package PR