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-5011GitHub issuePublicReceived

omarchy install service sunshine aborts: enables an alias systemd only creates on enable

Reported by lawanner04 · filed Sep 10, 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 aborts: enables an alias systemd only creates on enablerevision 1 · captured 2026-10-04 12:10 UTC via poll

What happened

omarchy install service sunshine aborts immediately after the package
install, leaving Sunshine installed but completely unconfigured.

The sunshine package ships its unit as
app-dev.lizardbyte.app.Sunshine.service, which declares
Alias=sunshine.service. systemd only materialises an Alias= symlink when
the unit is enabled, so on a fresh install there is no sunshine.service in
the search path yet:

Failed to enable unit: Unit sunshine.service does not exist

omarchy-install-service-sunshine runs under set -e, so everything after
that line is skipped: the UFW port rules, the admin web app, and the Hyprland
autostart entry. The result is the package installed, no service, and a
firewall still blocking Moonlight, with no indication that three
configuration steps were missed.

Retrying does not help. Once the unit is enabled by its real name, systemd
creates ~/.config/systemd/user/sunshine.service as a symlink, and enabling
through it is then refused:

Failed to enable unit: Refusing to operate on linked unit file sunshine.service

So there is no state in which line 74 succeeds: the alias is missing before
the unit is enabled, and is a linked unit file afterwards.

Expected

The service is enabled, the Moonlight ports are opened, and the admin web app
is installed.

Steps to reproduce

  1. Omarchy 4.0.1 with the sunshine package not yet installed
  2. Run omarchy install service sunshine
  3. The package installs, then the script exits at the `systemctl --user

enable --now sunshine` call

Confirmation

$ ls /usr/lib/systemd/user/ | grep -i sunshine
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

Suggested fix

Enable the real unit name in omarchy-install-service-sunshine:

-systemctl --user enable --now sunshine
+systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service

omarchy-remove-service-sunshine is fine as-is: by removal time the alias
exists, so disable sunshine resolves, and the call is guarded with
|| true regardless.

Secondary observation

The unit already declares WantedBy=graphical-session.target, so enabling it
places it in graphical-session.target.wants. enable_hyprland_autostart
then also adds o.launch_on_start("sunshine"), which starts Sunshine a
second time on login. The duplicate instance fails to bind the already-taken
ports and exits. One of the two mechanisms looks redundant.

System

  • Omarchy 4.0.1-1
  • sunshine 2026.516.143833-4 (omarchy repo)
  • systemd 261 (261.2-1-arch)
  • Hyprland 0.56.2
  • Kernel 7.1.9-arch1-2
  • CPU: 12th Gen Intel Core i7-12700
  • GPU: Intel UHD Graphics 770 (Alder Lake-S GT1)

Enabling the unit by its real name works correctly and Sunshine finds
hardware encoders (h264_vaapi, hevc_vaapi), so this is purely the
installer's enable call. A full omarchy debug log can be provided if
useful; it is omitted here since it contains host-specific detail.

View raw text
## What happened

`omarchy install service sunshine` aborts immediately after the package
install, leaving Sunshine installed but completely unconfigured.

The `sunshine` package ships its unit as
`app-dev.lizardbyte.app.Sunshine.service`, which declares
`Alias=sunshine.service`. systemd only materialises an `Alias=` symlink when
the unit is enabled, so on a fresh install there is no `sunshine.service` in
the search path yet:

```
Failed to enable unit: Unit sunshine.service does not exist
```

`omarchy-install-service-sunshine` runs under `set -e`, so everything after
that line is skipped: the UFW port rules, the admin web app, and the Hyprland
autostart entry. The result is the package installed, no service, and a
firewall still blocking Moonlight, with no indication that three
configuration steps were missed.

Retrying does not help. Once the unit is enabled by its real name, systemd
creates `~/.config/systemd/user/sunshine.service` as a symlink, and enabling
through it is then refused:

```
Failed to enable unit: Refusing to operate on linked unit file sunshine.service
```

So there is no state in which line 74 succeeds: the alias is missing before
the unit is enabled, and is a linked unit file afterwards.

## Expected

The service is enabled, the Moonlight ports are opened, and the admin web app
is installed.

## Steps to reproduce

1. Omarchy 4.0.1 with the `sunshine` package not yet installed
2. Run `omarchy install service sunshine`
3. The package installs, then the script exits at the `systemctl --user
   enable --now sunshine` call

## Confirmation

```
$ ls /usr/lib/systemd/user/ | grep -i sunshine
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
```

## Suggested fix

Enable the real unit name in `omarchy-install-service-sunshine`:

```diff
-systemctl --user enable --now sunshine
+systemctl --user enable --now app-dev.lizardbyte.app.Sunshine.service
```

`omarchy-remove-service-sunshine` is fine as-is: by removal time the alias
exists, so `disable sunshine` resolves, and the call is guarded with
`|| true` regardless.

## Secondary observation

The unit already declares `WantedBy=graphical-session.target`, so enabling it
places it in `graphical-session.target.wants`. `enable_hyprland_autostart`
then also adds `o.launch_on_start("sunshine")`, which starts Sunshine a
second time on login. The duplicate instance fails to bind the already-taken
ports and exits. One of the two mechanisms looks redundant.

## System

- Omarchy 4.0.1-1
- sunshine 2026.516.143833-4 (omarchy repo)
- systemd 261 (261.2-1-arch)
- Hyprland 0.56.2
- Kernel 7.1.9-arch1-2
- CPU: 12th Gen Intel Core i7-12700
- GPU: Intel UHD Graphics 770 (Alder Lake-S GT1)

Enabling the unit by its real name works correctly and Sunshine finds
hardware encoders (`h264_vaapi`, `hevc_vaapi`), so this is purely the
installer's enable call. A full `omarchy debug` log can be provided if
useful; it is omitted here since it contains host-specific detail.

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.