Voculinux itself becomes a Void package. An in-repo template in void-packages layout builds the app from the canonical, checksum-verified release source distribution, depends on Void's own interpreter, GTK, desktop bindings, and packaged Python libraries plus the two dependency templates from the earlier tickets, and installs the renamed desktop entry and icons. Speech models are not package payload. The install message tells the user what xbps cannot express: the input-group requirement for the evdev hotkey backend, models downloading on first run, optional engines being manual additions outside the guaranteed set, and one injection helper tool not yet existing for Void so that fallback rung is absent. This ticket also corrects the stale Void entries in the project's distro package inventory to match the templates, and settles how the built-in update checker behaves for packaged installs so it cannot misdirect users away from package-manager updates.
Acceptance criteria
The template passes the Void template linter, uses the renamed package name and install paths, and sources the canonical release distribution by checksum.
An offline policy test reconciles the template dependency list against the project's declared dependency ranges and the renamed install paths, and fails on drift.
The package contains no speech models and no vendored Python libraries beyond what the dependency templates provide; no pip runs at build or install time.
The install message covers the input group, first-run model download, optional-engine status, and the absent injection helper.
Update-checker behaviour for packaged installs is decided and implemented or documented on this ticket, with package-manager updates as the presented path.
The distro package inventory's Void entries match current void-packages reality (indicator library name corrected, absent tool marked absent), and generated-file consistency checks pass.
## Parent
[Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux](https://git.bongbetic.com/xavierk/voculinux/issues/16)
## What to build
Voculinux itself becomes a Void package. An in-repo template in void-packages layout builds the app from the canonical, checksum-verified release source distribution, depends on Void's own interpreter, GTK, desktop bindings, and packaged Python libraries plus the two dependency templates from the earlier tickets, and installs the renamed desktop entry and icons. Speech models are not package payload. The install message tells the user what xbps cannot express: the input-group requirement for the evdev hotkey backend, models downloading on first run, optional engines being manual additions outside the guaranteed set, and one injection helper tool not yet existing for Void so that fallback rung is absent. This ticket also corrects the stale Void entries in the project's distro package inventory to match the templates, and settles how the built-in update checker behaves for packaged installs so it cannot misdirect users away from package-manager updates.
## Acceptance criteria
- [ ] The template passes the Void template linter, uses the renamed package name and install paths, and sources the canonical release distribution by checksum.
- [ ] An offline policy test reconciles the template dependency list against the project's declared dependency ranges and the renamed install paths, and fails on drift.
- [ ] The package contains no speech models and no vendored Python libraries beyond what the dependency templates provide; no pip runs at build or install time.
- [ ] The install message covers the input group, first-run model download, optional-engine status, and the absent injection helper.
- [ ] Update-checker behaviour for packaged installs is decided and implemented or documented on this ticket, with package-manager updates as the presented path.
- [ ] The distro package inventory's Void entries match current void-packages reality (indicator library name corrected, absent tool marked absent), and generated-file consistency checks pass.
## Blocked by
- [Rename user-visible identity to voculinux with one-time legacy import](https://git.bongbetic.com/xavierk/voculinux/issues/18)
- [Void templates for the small Python dependencies](https://git.bongbetic.com/xavierk/voculinux/issues/25)
- [Void template for the whisper.cpp Python binding](https://git.bongbetic.com/xavierk/voculinux/issues/26)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Parent
Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux
What to build
Voculinux itself becomes a Void package. An in-repo template in void-packages layout builds the app from the canonical, checksum-verified release source distribution, depends on Void's own interpreter, GTK, desktop bindings, and packaged Python libraries plus the two dependency templates from the earlier tickets, and installs the renamed desktop entry and icons. Speech models are not package payload. The install message tells the user what xbps cannot express: the input-group requirement for the evdev hotkey backend, models downloading on first run, optional engines being manual additions outside the guaranteed set, and one injection helper tool not yet existing for Void so that fallback rung is absent. This ticket also corrects the stale Void entries in the project's distro package inventory to match the templates, and settles how the built-in update checker behaves for packaged installs so it cannot misdirect users away from package-manager updates.
Acceptance criteria
Blocked by
Merged in integration/spec16
1dd3986383pushed to fork/integration/spec16 (https://github.com/soubarnak/vocalinux/tree/integration/spec16), review PASS, gates flake8 E9,F63,F7,F82 + black --check + isort --check + mypy src/ clean, pytest 37 passed, npm jest 11 suites/92 tests + lint 0 errors + tsc clean + build OK