Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A 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.

Inbox
ReportR-5044GitHub issuePublicReceived

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.

Received and recorded verbatim. Nothing has been checked yet.

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

omarchy install service sunshine fails: unit is app-dev.lizardbyte.app.Sunshine.service, not sunshine.servicerevision 1 · captured 2026-10-04 12:10 UTC via poll

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:

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

Omarchy4.0.3-1
sunshine2026.516.143833-4.1
Hyprland0.56.2
Kernel7.2.3-arch1-3
CPUAMD Ryzen 7 7700
GPUNVIDIA 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.