Follow-up to #16 (RPM + MSI packaging). Debian/Ubuntu users currently have no first-class install path — they'd need to use the dev artifact pipeline or build from source. This issue tracks adding .deb support.
Tooling
cargo-deb is the Rust ecosystem standard, analogous to the cargo-generate-rpm we already use on the RPM side. Reads metadata from Cargo.toml, ships a single self-contained .deb from the built binary.
[package.metadata.deb]
maintainer = "Kramer Campbell"
extended-description = """
Discord Rich Presence IPC proxy that multiplexes RPC messages across
multiple Discord instances."""
section = "net"
priority = "optional"
assets = [
["target/release/presence-switch", "usr/bin/", "755"],
["packaging/linux/systemd/presence-switch.service", "usr/lib/systemd/user/", "644"],
["LICENSE", "usr/share/doc/presence-switch/copyright", "644"],
]
(Some duplication with the RPM asset list; a small refactor could share asset definitions if it grows.)
Per-user installation question
Unlike RPM/MSI, .deb installation via apt / dpkg is system-wide and requires sudo. The file payload would still install a user-level systemd unit at /usr/lib/systemd/user/presence-switch.service (each user enables via systemctl --user enable --now), so the runtime model stays per-user. Only the install step is privileged. Worth calling out in the README.
Sketch of work
Follow-up to #16 (RPM + MSI packaging). Debian/Ubuntu users currently have no first-class install path — they'd need to use the dev artifact pipeline or build from source. This issue tracks adding
.debsupport.Tooling
cargo-debis the Rust ecosystem standard, analogous to thecargo-generate-rpmwe already use on the RPM side. Reads metadata fromCargo.toml, ships a single self-contained.debfrom the built binary.(Some duplication with the RPM asset list; a small refactor could share asset definitions if it grows.)
Per-user installation question
Unlike RPM/MSI,
.debinstallation viaapt/dpkgis system-wide and requiressudo. The file payload would still install a user-level systemd unit at/usr/lib/systemd/user/presence-switch.service(each user enables viasystemctl --user enable --now), so the runtime model stays per-user. Only the install step is privileged. Worth calling out in the README.Sketch of work
[package.metadata.deb]block toCargo.tomldebjob to.github/workflows/package.yml, parallel to the existingrpmjob:cargo install cargo-deb --lockedcargo build --release --lockedcargo deb --no-build(with release tag override for dev builds)scripts/package.shto add adebsubcommandreleasejob to attach the.debto the GitHub Releaseapt install ./presence-switch_*.debexample