Start user units immediately in first-run, not just enable

systemctl --user enable only writes the .wants symlinks; the services
don't actually run until next login. Switching to --now enables AND
starts them, so the first session has bt-agent (bluetooth pairing) and
omarchy-sleep-lock active immediately rather than waiting a reboot.

omarchy-recover-internal-monitor is Type=oneshot with a
ConditionPathExists guard, so --now is harmless for it (it'll skip if
the toggle isn't set).
This commit is contained in:
Ryan Hughes
2026-06-04 18:38:25 -04:00
parent aa12358201
commit 4e10d41f0e
+9 -7
View File
@@ -1,15 +1,17 @@
#!/bin/bash #!/bin/bash
# Enable the user systemd units we ship. Runs at first-run rather than at # Enable AND start the user systemd units we ship. Runs at first-run rather
# finalize-user time because the user manager isn't live during the ISO # than at finalize-user time because the user manager isn't live during the
# chroot — by first-run, the Hyprland/uwsm session is up and `systemctl # ISO chroot — by first-run, the Hyprland/uwsm session is up and
# --user enable` writes the correct .wants symlinks based on each unit's # `systemctl --user enable --now` both writes the correct .wants symlinks
# [Install]/WantedBy. ConditionPath* in the unit files keep the enabled # (based on each unit's [Install]/WantedBy) and starts the services so the
# units inert on hardware they don't apply to. # first session has bluetooth pairing, sleep lock, etc. live immediately
# instead of waiting for the next login. ConditionPath* in the unit files
# keep the enabled units inert on hardware they don't apply to.
set -euo pipefail set -euo pipefail
systemctl --user enable \ systemctl --user enable --now \
bt-agent.service \ bt-agent.service \
omarchy-recover-internal-monitor.service \ omarchy-recover-internal-monitor.service \
omarchy-sleep-lock.service omarchy-sleep-lock.service