add service definitions for superpowerd + elevate adapter
openrc: single service (ollie.initd) manages both superpowerd and the elevate adapter via start_post/stop_pre, since supervise-daemon only supervises one process and openrc has no PartOf equivalent. systemd: two user services with native dependency management. superpowerd.service runs the daemon; ollie-elevate-adapter.service depends on it via Requires+PartOf (auto-stops with superpowerd).
This commit is contained in:
parent
2803fb30f3
commit
228e0c48d6
|
|
@ -0,0 +1,58 @@
|
|||
#!/sbin/openrc-run
|
||||
|
||||
description="Ollie agent runtime: superpowerd + elevate adapter"
|
||||
|
||||
supervisor=supervise-daemon
|
||||
|
||||
: ${DBUS_SESSION_BUS_ADDRESS:=$(cat /proc/$(pgrep -u $USER plasmashell | head -1)/environ 2>/dev/null | tr '\0' '\n' | sed -n 's/^DBUS_SESSION_BUS_ADDRESS=//p')}
|
||||
: ${DBUS_SESSION_BUS_ADDRESS:="unix:path=${XDG_RUNTIME_DIR}/bus"}
|
||||
export DBUS_SESSION_BUS_ADDRESS
|
||||
|
||||
command="/home/lkn/.local/bin/superpowerd"
|
||||
command_args="${SUPERPOWERD_OPTS}"
|
||||
|
||||
output_log="${XDG_RUNTIME_DIR}/superpowerd/superpowerd.log"
|
||||
error_log="${XDG_RUNTIME_DIR}/superpowerd/superpowerd.log"
|
||||
|
||||
respawn_delay=3
|
||||
respawn_max=10
|
||||
respawn_period=60
|
||||
|
||||
: ${OLLIE_CFG_PATH:="${HOME}/.config/ollie"}
|
||||
elevate_adapter="${OLLIE_CFG_PATH}/scripts/x/elevate-adapter-superpowerd"
|
||||
elevate_sock="${OLLIE_ELEVATE_SOCKET:-${XDG_RUNTIME_DIR}/ollie/elevate.sock}"
|
||||
|
||||
depend() {
|
||||
need dbus
|
||||
use ssh-agent
|
||||
}
|
||||
|
||||
start_pre() {
|
||||
checkpath -o $USER -d "${XDG_RUNTIME_DIR}/superpowerd"
|
||||
}
|
||||
|
||||
start_post() {
|
||||
# Give superpowerd a moment to bind its socket
|
||||
sleep 0.5
|
||||
|
||||
# Start the elevate adapter
|
||||
if [ -x "${elevate_adapter}" ] || [ -f "${elevate_adapter}" ]; then
|
||||
ebegin "Starting elevate-adapter"
|
||||
export OLLIE_ELEVATE_SOCKET="${elevate_sock}"
|
||||
checkpath -o $USER -d "$(dirname ${elevate_sock})"
|
||||
python3 "${elevate_adapter}" >/dev/null 2>&1 &
|
||||
echo $! > "${XDG_RUNTIME_DIR}/superpowerd/elevate-adapter.pid"
|
||||
eend 0
|
||||
fi
|
||||
}
|
||||
|
||||
stop_pre() {
|
||||
# Kill the elevate adapter when stopping
|
||||
if [ -f "${XDG_RUNTIME_DIR}/superpowerd/elevate-adapter.pid" ]; then
|
||||
ebegin "Stopping elevate-adapter"
|
||||
kill $(cat "${XDG_RUNTIME_DIR}/superpowerd/elevate-adapter.pid") 2>/dev/null
|
||||
rm -f "${XDG_RUNTIME_DIR}/superpowerd/elevate-adapter.pid"
|
||||
rm -f "${elevate_sock}"
|
||||
eend 0
|
||||
fi
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
[Unit]
|
||||
Description=Ollie elevate adapter (superpowerd bridge)
|
||||
After=superpowerd.service
|
||||
Requires=superpowerd.service
|
||||
PartOf=superpowerd.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStartPre=/bin/mkdir -p %t/ollie
|
||||
ExecStart=/usr/bin/python3 %h/.config/ollie/scripts/x/elevate-adapter-superpowerd
|
||||
Environment=OLLIE_ELEVATE_SOCKET=%t/ollie/elevate.sock
|
||||
Environment=XDG_RUNTIME_DIR=/run/user/%U
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
[Unit]
|
||||
Description=Superpowerd elevated execution daemon
|
||||
After=dbus.service
|
||||
Requires=dbus.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=%h/.local/bin/superpowerd
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
Environment=XDG_RUNTIME_DIR=/run/user/%U
|
||||
RuntimeDirectory=superpowerd
|
||||
LogsDirectory=superpowerd
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
Loading…
Reference in New Issue