Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
omarchy install service sunshine fails: unit is app-dev.lizardbyte.app.Sunshine.service, not sunshine.service
Reported by markoria · filed Sep 12, 2026Closed upstream on 2026-09-20 by bjarneo via an automated message, as a duplicate of #7050 (R-1810). GitHub close reason: completed.
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- Not yet mapped to any requirement or component.
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
What happened
omarchy install service sunshine aborts on a fresh install:
Installing Sunshine...
Failed to enable unit: Unit sunshine.service does not existThe installer runs systemctl --user enable --now sunshine, but the sunshine
package ships its unit as app-dev.lizardbyte.app.Sunshine.service, withsunshine.service only as an [Install] Alias=. A unit alias does not exist
until the real unit has been enabled at least once, so enabling it by the short
name fails.
Because omarchy-install-service-sunshine runs under set -e, the abort skips
every remaining step: the UFW rules, the Sunshine Admin web app, and the
Hyprland autostart entry. Sunshine ends up installed but unconfigured, and the
user gets no indication that the firewall was never opened.
The failure is symmetric
Working around it by enabling the real unit does not make the installer
succeed. Enabling app-dev.lizardbyte.app.Sunshine.service causes systemd to
create the alias as a symlink in ~/.config/systemd/user/, and a re-run then
fails differently:
Installing Sunshine...
Failed to enable unit: Refusing to operate on linked unit file sunshine.serviceSo the installer fails before the unit is enabled, and fails after it is
enabled. There is no state in which that line succeeds.
Expected
The installer enables and starts Sunshine, then continues to the firewall,
web app, and autostart steps.
Steps to reproduce
- On a system with no prior Sunshine install, run
omarchy install service sunshine. - The run aborts at the enable step.
- Run
systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service. - Re-run
omarchy install service sunshine; it now aborts with "Refusing to
operate on linked unit file".
Suggested fix
Enable the unit by its real name in omarchy-install-service-sunshine:
systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.serviceGuarding the call so an already-enabled unit does not abort the rest of the
script would also stop a single failure from silently skipping the firewall
rules.
Unrelated note on the same installer
On this machine the default capture path produced no working hardware encoder
and Sunshine fell back to libx264, on a 4K display with an RTX 5070. NVENC
tested fine outside Sunshine. Setting capture = kms in sunshine.conf madeh264_nvenc, hevc_nvenc, and av1_nvenc all available. The display uses a
1.5 fractional scale, which may be the trigger. Mentioning it only in case the
installer should ship a capture default; happy to open a separate issue.
System
| Omarchy | 4.0.3-1 |
| sunshine | 2026.516.143833-4.1 |
| Hyprland | 0.56.2 |
| Kernel | 7.2.3-arch1-3 |
| CPU | AMD Ryzen 7 7700 |
| GPU | NVIDIA RTX 5070 (nvidia-open-dkms 610.57.04) + AMD Raphael iGPU |
View raw text
### What happened `omarchy install service sunshine` aborts on a fresh install: ``` Installing Sunshine... Failed to enable unit: Unit sunshine.service does not exist ``` The installer runs `systemctl --user enable --now sunshine`, but the `sunshine` package ships its unit as `app-dev.lizardbyte.app.Sunshine.service`, with `sunshine.service` only as an `[Install] Alias=`. A unit alias does not exist until the real unit has been enabled at least once, so enabling it by the short name fails. Because `omarchy-install-service-sunshine` runs under `set -e`, the abort skips every remaining step: the UFW rules, the Sunshine Admin web app, and the Hyprland autostart entry. Sunshine ends up installed but unconfigured, and the user gets no indication that the firewall was never opened. ### The failure is symmetric Working around it by enabling the real unit does not make the installer succeed. Enabling `app-dev.lizardbyte.app.Sunshine.service` causes systemd to create the alias as a symlink in `~/.config/systemd/user/`, and a re-run then fails differently: ``` Installing Sunshine... Failed to enable unit: Refusing to operate on linked unit file sunshine.service ``` So the installer fails before the unit is enabled, and fails after it is enabled. There is no state in which that line succeeds. ### Expected The installer enables and starts Sunshine, then continues to the firewall, web app, and autostart steps. ### Steps to reproduce 1. On a system with no prior Sunshine install, run `omarchy install service sunshine`. 2. The run aborts at the enable step. 3. Run `systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service`. 4. Re-run `omarchy install service sunshine`; it now aborts with "Refusing to operate on linked unit file". ### Suggested fix Enable the unit by its real name in `omarchy-install-service-sunshine`: ```bash systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service ``` Guarding the call so an already-enabled unit does not abort the rest of the script would also stop a single failure from silently skipping the firewall rules. ### Unrelated note on the same installer On this machine the default capture path produced no working hardware encoder and Sunshine fell back to `libx264`, on a 4K display with an RTX 5070. NVENC tested fine outside Sunshine. Setting `capture = kms` in `sunshine.conf` made `h264_nvenc`, `hevc_nvenc`, and `av1_nvenc` all available. The display uses a 1.5 fractional scale, which may be the trigger. Mentioning it only in case the installer should ship a capture default; happy to open a separate issue. ### System | | | |---|---| | Omarchy | 4.0.3-1 | | sunshine | 2026.516.143833-4.1 | | Hyprland | 0.56.2 | | Kernel | 7.2.3-arch1-3 | | CPU | AMD Ryzen 7 7700 | | GPU | NVIDIA RTX 5070 (nvidia-open-dkms 610.57.04) + AMD Raphael iGPU |
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
Not linked to any known issue, other report or change yet.
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
No decision has been recorded yet.