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: aborts on wrong unit name, skipping firewall/webapp/autostart
Reported by AsemHub · filed Aug 29, 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 partway through. Sunshine gets installed, but the
firewall rules, the admin web app, and the autostart entry are never applied, so Moonlight
cannot reach the host and the service does not start with the session.
Installing Sunshine...
...
installing sunshine...
Failed to enable unit: Unit sunshine.service does not existRoot cause
bin/omarchy-install-service-sunshine line 74 enables the unit by a name that does not exist yet:
systemctl --user enable --now sunshineThe sunshine package ships its unit as `app-dev.lizardbyte.app.Sunshine.service`:
$ pacman -Ql sunshine | grep systemd
sunshine /usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.serviceThat unit does declare Alias=sunshine.service, but a systemd Alias= symlink is only created
when the unit is enabled. On a clean install the alias therefore does not resolve yet, andsystemctl --user enable --now sunshine fails. Because the script runs under set -e, it exits
right there — before open_ufw_ports, install_admin_webapp and enable_hyprland_autostart.
The result is a half-installed service that looks installed: the package is present, but the
firewall is closed, there is no admin web app, and Sunshine never starts on login.
Steps to reproduce
On a machine that has never had Sunshine installed:
omarchy install service sunshineObserve Failed to enable unit: Unit sunshine.service does not exist and a non-zero exit, and
confirm the follow-up steps were skipped:
ufw status | grep omarchy-sunshine # no rules
ls ~/.local/share/applications | grep -i sunshine # no admin webappNote that re-running the command after manually enabling the unit once will appear to work,
because the alias symlink now exists — so this only reproduces from a clean state.
Expected
The installer enables the unit the package actually ships and completes all of its steps.
Suggested fix
Enable the real unit name:
systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.serviceSecondary observation
enable_hyprland_autostart appends o.launch_on_start("sunshine") to hypr/autostart.lua, but
the shipped unit is already WantedBy=graphical-session.target. Once the unit is enabled
correctly, that line starts a second instance. It may be worth dropping the autostart entry and
relying on the unit, though I have only reasoned about this rather than tested the double-start.
System
- Omarchy 4.0.1-1 (channel: stable)
- sunshine 2026.516.143833-4 (omarchy repo)
- systemd 261.2-1-arch
- Hyprland 0.56.2
Verified still present on quattro @ HEAD: the file atbin/omarchy-install-service-sunshine is byte-identical to my installed copy.
I skipped the omarchy debug dump because this is a logic bug in the script, reproducible
independently of hardware — happy to attach it if useful.
View raw text
### What happened
`omarchy install service sunshine` aborts partway through. Sunshine gets installed, but the
firewall rules, the admin web app, and the autostart entry are never applied, so Moonlight
cannot reach the host and the service does not start with the session.
```
Installing Sunshine...
...
installing sunshine...
Failed to enable unit: Unit sunshine.service does not exist
```
### Root cause
`bin/omarchy-install-service-sunshine` line 74 enables the unit by a name that does not exist yet:
```bash
systemctl --user enable --now sunshine
```
The `sunshine` package ships its unit as **`app-dev.lizardbyte.app.Sunshine.service`**:
```
$ pacman -Ql sunshine | grep systemd
sunshine /usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service
```
That unit does declare `Alias=sunshine.service`, but a systemd `Alias=` symlink is only created
*when the unit is enabled*. On a clean install the alias therefore does not resolve yet, and
`systemctl --user enable --now sunshine` fails. Because the script runs under `set -e`, it exits
right there — before `open_ufw_ports`, `install_admin_webapp` and `enable_hyprland_autostart`.
The result is a half-installed service that looks installed: the package is present, but the
firewall is closed, there is no admin web app, and Sunshine never starts on login.
### Steps to reproduce
On a machine that has never had Sunshine installed:
```bash
omarchy install service sunshine
```
Observe `Failed to enable unit: Unit sunshine.service does not exist` and a non-zero exit, and
confirm the follow-up steps were skipped:
```bash
ufw status | grep omarchy-sunshine # no rules
ls ~/.local/share/applications | grep -i sunshine # no admin webapp
```
Note that re-running the command after manually enabling the unit once will *appear* to work,
because the alias symlink now exists — so this only reproduces from a clean state.
### Expected
The installer enables the unit the package actually ships and completes all of its steps.
### Suggested fix
Enable the real unit name:
```bash
systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service
```
### Secondary observation
`enable_hyprland_autostart` appends `o.launch_on_start("sunshine")` to `hypr/autostart.lua`, but
the shipped unit is already `WantedBy=graphical-session.target`. Once the unit is enabled
correctly, that line starts a second instance. It may be worth dropping the autostart entry and
relying on the unit, though I have only reasoned about this rather than tested the double-start.
### System
- Omarchy 4.0.1-1 (channel: stable)
- sunshine 2026.516.143833-4 (omarchy repo)
- systemd 261.2-1-arch
- Hyprland 0.56.2
Verified still present on `quattro` @ HEAD: the file at
`bin/omarchy-install-service-sunshine` is byte-identical to my installed copy.
I skipped the `omarchy debug` dump because this is a logic bug in the script, reproducible
independently of hardware — happy to attach it if useful.
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.