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: 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.
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 immediately after the package
install, leaving Sunshine installed but completely unconfigured.
The sunshine package ships its unit asapp-dev.lizardbyte.app.Sunshine.service, which declaresAlias=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 existomarchy-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.serviceSo 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
- Omarchy 4.0.1 with the
sunshinepackage not yet installed - Run
omarchy install service sunshine - 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.serviceSuggested 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.serviceomarchy-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.