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 always fails: enables 'sunshine.service' but package ships 'app-dev.lizardbyte.app.Sunshine.service'
Reported by molesza · filed Aug 30, 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 fails partway through. The package installs fine, then:
:: Running post-transaction hooks...
(1/5) Reloading user manager configuration...
...
Failed to enable unit: Unit sunshine.service does not existBecause omarchy-install-service-sunshine runs under set -e, the script aborts at that line and silently skips every remaining step:
- the ufw rules for the Moonlight ports (LAN +
tailscale0) are never added - the "Sunshine Admin" web app is never installed
- the
o.launch_on_start("sunshine")autostart entry is never written to~/.config/hypr/autostart.lua
So the user is left with Sunshine installed but not running, not enabled at boot, and firewalled off — with no indication that most of the installer didn't run.
Expected
Sunshine enabled and started, ports opened, admin web app installed.
Cause
The installer hardcodes:
systemctl --user enable --now sunshineBut the sunshine package ships the unit as /usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service. That unit declares:
[Install]
WantedBy=graphical-session.target
Alias=sunshine.serviceAlias= is only materialized as a symlink once the unit is enabled, so sunshine.service does not exist on a fresh install. It is a chicken-and-egg: you cannot enable it by its alias before enabling it. This fails 100% of the time on a clean install.
Enabling it by its real name works and creates the alias:
$ systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service
Created symlink '/home/<user>/.config/systemd/user/sunshine.service' → '/usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service'.
Created symlink '/home/<user>/.config/systemd/user/graphical-session.target.wants/app-dev.lizardbyte.app.Sunshine.service' → '/usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service'.Steps to reproduce
- On a system without Sunshine installed, run
omarchy install service sunshine - Enter the sudo password, accept the pacman transaction
- Observe
Failed to enable unit: Unit sunshine.service does not existand the script exiting before the firewall/webapp/autostart steps
Suggested fix
In omarchy-install-service-sunshine, enable the unit by its real name:
systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.serviceWorth noting the unit is already WantedBy=graphical-session.target, so it autostarts on login under uwsm on its own — the additional o.launch_on_start("sunshine") Hyprland autostart entry looks like it would start a second instance.
Minor: admin UI port not opened
Separately, TCP_PORTS=(47984 47989 48010) omits 47990, the Sunshine configuration UI. Since pairing (setting the initial username/password and entering the Moonlight PIN) can only be done through that UI, and the installer explicitly opens the other ports on tailscale0 for remote streaming, a user connecting over Tailscale can stream but cannot pair without separately opening 47990 or tunnelling it over SSH.
System details
- Omarchy:
4.0.1-1 - sunshine:
2026.516.143833-4(omarchy repo) - Kernel:
7.1.9-arch1-2 - CPU: AMD Ryzen 7 9800X3D
- GPU: NVIDIA GeForce RTX 5090 (nvidia-open-dkms 610.57.04) + AMD Granite Ridge iGPU
- Compositor: Hyprland under uwsm, SDDM display manager
View raw text
### What happened
`omarchy install service sunshine` fails partway through. The package installs fine, then:
```
:: Running post-transaction hooks...
(1/5) Reloading user manager configuration...
...
Failed to enable unit: Unit sunshine.service does not exist
```
Because `omarchy-install-service-sunshine` runs under `set -e`, the script aborts at that line and **silently skips every remaining step**:
- the ufw rules for the Moonlight ports (LAN + `tailscale0`) are never added
- the "Sunshine Admin" web app is never installed
- the `o.launch_on_start("sunshine")` autostart entry is never written to `~/.config/hypr/autostart.lua`
So the user is left with Sunshine installed but not running, not enabled at boot, and firewalled off — with no indication that most of the installer didn't run.
### Expected
Sunshine enabled and started, ports opened, admin web app installed.
### Cause
The installer hardcodes:
```bash
systemctl --user enable --now sunshine
```
But the `sunshine` package ships the unit as `/usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service`. That unit declares:
```ini
[Install]
WantedBy=graphical-session.target
Alias=sunshine.service
```
`Alias=` is only materialized as a symlink **once the unit is enabled**, so `sunshine.service` does not exist on a fresh install. It is a chicken-and-egg: you cannot enable it by its alias before enabling it. This fails 100% of the time on a clean install.
Enabling it by its real name works and creates the alias:
```
$ systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service
Created symlink '/home/<user>/.config/systemd/user/sunshine.service' → '/usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service'.
Created symlink '/home/<user>/.config/systemd/user/graphical-session.target.wants/app-dev.lizardbyte.app.Sunshine.service' → '/usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service'.
```
### Steps to reproduce
1. On a system without Sunshine installed, run `omarchy install service sunshine`
2. Enter the sudo password, accept the pacman transaction
3. Observe `Failed to enable unit: Unit sunshine.service does not exist` and the script exiting before the firewall/webapp/autostart steps
### Suggested fix
In `omarchy-install-service-sunshine`, enable the unit by its real name:
```bash
systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service
```
Worth noting the unit is already `WantedBy=graphical-session.target`, so it autostarts on login under uwsm on its own — the additional `o.launch_on_start("sunshine")` Hyprland autostart entry looks like it would start a second instance.
### Minor: admin UI port not opened
Separately, `TCP_PORTS=(47984 47989 48010)` omits **47990**, the Sunshine configuration UI. Since pairing (setting the initial username/password and entering the Moonlight PIN) can only be done through that UI, and the installer explicitly opens the other ports on `tailscale0` for remote streaming, a user connecting over Tailscale can stream but cannot pair without separately opening 47990 or tunnelling it over SSH.
### System details
- Omarchy: `4.0.1-1`
- sunshine: `2026.516.143833-4` (omarchy repo)
- Kernel: `7.1.9-arch1-2`
- CPU: AMD Ryzen 7 9800X3D
- GPU: NVIDIA GeForce RTX 5090 (nvidia-open-dkms 610.57.04) + AMD Granite Ridge iGPU
- Compositor: Hyprland under uwsm, SDDM display manager
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.