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-2127GitHub issuePublicDecided· Out of scope

Sunshine installer fails: enables unit by its Alias name (sunshine.service does not exist)

Reported by winnorton · filed Sep 30, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 days ago.

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?
AreaOutside the audited area· Decided by agents · verified
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?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

Sunshine installer fails: enables unit by its Alias name (sunshine.service does not exist)revision 1 · captured 2026-09-30 15:23 UTC via poll

System details

Intel i7-10875H, NVIDIA RTX 3080 Mobile (hybrid graphics, compositor on the Intel iGPU), Omarchy 4.0.4-1, omarchy/sunshine 2026.516.143833-4.1

What's wrong?

omarchy install service sunshine aborts right after the package installs, so none of the follow-up steps run: no UFW rules, no "Sunshine Admin" web app, no autostart entry.

$ omarchy install service sunshine
Installing Sunshine...
[sudo] password for win:
...
(3/3) installing sunshine                          [------------------] 100%
...
Failed to enable unit: Unit sunshine.service does not exist

Cause. bin/omarchy-install-service-sunshine runs

systemctl --user enable --now sunshine

but the sunshine package currently in the omarchy repo ships its user unit as
/usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service. That unit only
carries sunshine.service as an Alias= in its [Install] section:

$ pacman -Ql sunshine | grep systemd/user/
sunshine /usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service
$ grep -E 'Alias|WantedBy' /usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service
WantedBy=graphical-session.target
Alias=sunshine.service

Per systemd.unit(5), Alias= names are symlinks that systemctl enable
creates when the unit is enabled. On a fresh install that symlink does not
exist yet, so enabling by the alias name fails, and set -e stops the script
there. bin/omarchy-remove-service-sunshine uses the same alias name in its
systemctl --user disable --now sunshine, which is harmless because of the
|| true, but leaves the unit enabled if the alias was never created.

Workaround that confirms it. Enabling by the real unit name works and
creates the alias as a side effect:

$ systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service
Created symlink '~/.config/systemd/user/sunshine.service' → '/usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service'.
Created symlink '~/.config/systemd/user/graphical-session.target.wants/app-dev.lizardbyte.app.Sunshine.service' → ...

After that, systemctl --user enable --now sunshine succeeds too.

Suggested fix. Use the real unit name in both scripts, e.g.

systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service
...
systemctl --user disable --now app-dev.lizardbyte.app.Sunshine.service 2>/dev/null || true

Steps to reproduce: on a machine without Sunshine installed, run
omarchy install service sunshine and watch it stop at "Failed to enable unit".

Separately, since the installer also appends o.launch_on_start("sunshine")
to autostart.lua while the systemd unit is WantedBy=graphical-session.target,
a successful run starts Sunshine twice per login. The second copy fails to bind
its ports and exits, so it is only noise, but it may be worth dropping one of
the two.

View raw text
### System details

Intel i7-10875H, NVIDIA RTX 3080 Mobile (hybrid graphics, compositor on the Intel iGPU), Omarchy 4.0.4-1, `omarchy/sunshine 2026.516.143833-4.1`

### What's wrong?

`omarchy install service sunshine` aborts right after the package installs, so none of the follow-up steps run: no UFW rules, no "Sunshine Admin" web app, no autostart entry.

```
$ omarchy install service sunshine
Installing Sunshine...
[sudo] password for win:
...
(3/3) installing sunshine                          [------------------] 100%
...
Failed to enable unit: Unit sunshine.service does not exist
```

**Cause.** `bin/omarchy-install-service-sunshine` runs

```
systemctl --user enable --now sunshine
```

but the `sunshine` package currently in the omarchy repo ships its user unit as
`/usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service`. That unit only
carries `sunshine.service` as an `Alias=` in its `[Install]` section:

```
$ pacman -Ql sunshine | grep systemd/user/
sunshine /usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service
$ grep -E 'Alias|WantedBy' /usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service
WantedBy=graphical-session.target
Alias=sunshine.service
```

Per `systemd.unit(5)`, `Alias=` names are symlinks that `systemctl enable`
creates when the unit is enabled. On a fresh install that symlink does not
exist yet, so enabling by the alias name fails, and `set -e` stops the script
there. `bin/omarchy-remove-service-sunshine` uses the same alias name in its
`systemctl --user disable --now sunshine`, which is harmless because of the
`|| true`, but leaves the unit enabled if the alias was never created.

**Workaround that confirms it.** Enabling by the real unit name works and
creates the alias as a side effect:

```
$ systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service
Created symlink '~/.config/systemd/user/sunshine.service' → '/usr/lib/systemd/user/app-dev.lizardbyte.app.Sunshine.service'.
Created symlink '~/.config/systemd/user/graphical-session.target.wants/app-dev.lizardbyte.app.Sunshine.service' → ...
```

After that, `systemctl --user enable --now sunshine` succeeds too.

**Suggested fix.** Use the real unit name in both scripts, e.g.

```
systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service
...
systemctl --user disable --now app-dev.lizardbyte.app.Sunshine.service 2>/dev/null || true
```

Steps to reproduce: on a machine without Sunshine installed, run
`omarchy install service sunshine` and watch it stop at "Failed to enable unit".

Separately, since the installer also appends `o.launch_on_start("sunshine")`
to `autostart.lua` while the systemd unit is `WantedBy=graphical-session.target`,
a successful run starts Sunshine twice per login. The second copy fails to bind
its ports and exits, so it is only noise, but it may be worth dropping one of
the two.

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.

  • Out of scopeDecided by agents · verified · 2026-10-09 20:21 UTC