mirror of
https://github.com/ilya-zlobintsev/LACT.git
synced 2026-08-17 16:34:54 -05:00
89 lines
2.7 KiB
Bash
Executable File
89 lines
2.7 KiB
Bash
Executable File
#!/bin/env bash
|
|
set -e
|
|
|
|
DAEMON_SOCKET=/run/lactd.sock
|
|
UNIT_PATH=/etc/systemd/system/lactd.service
|
|
|
|
if [ ! -e "${DAEMON_SOCKET}" ]; then
|
|
echo "${DAEMON_SOCKET} does not exist, showing setup prompt"
|
|
|
|
APP_COMMIT=$(grep app-commit= /.flatpak-info | sed "s/app-commit=//")
|
|
APP_PATH=$(grep app-path= /.flatpak-info | sed "s/app-path=//" | sed "s/${APP_COMMIT}/active/")
|
|
DAEMON_SH_PATH="${APP_PATH}/bin/daemon.sh"
|
|
|
|
set +e
|
|
|
|
if [ "${LACT_UNATTENDED_SETUP}" == "true" ]; then
|
|
YAD_OUTPUT="TRUE|"
|
|
EXIT_CODE=0
|
|
else
|
|
YAD_OUTPUT=$(yad --title="LACT Flatpak Setup" \
|
|
--text="The LACT system service could not be found.
|
|
In order to edit GPU settings, LACT requires a service to be running as root.
|
|
This setup will install <u><tt>lactd.service</tt></u> outside of the Flatpak sandbox.
|
|
|
|
It is possible to skip this step if you wish to use LACT only for information and monitoring.
|
|
|
|
Do you wish to install the service?" \
|
|
--form \
|
|
--field "Autostart service at boot":CHK "TRUE")
|
|
EXIT_CODE=$?
|
|
fi
|
|
|
|
|
|
set -e
|
|
|
|
if [ ${EXIT_CODE} -eq 0 ]; then
|
|
IFS="|" read -ra OPTIONS <<< "$YAD_OUTPUT"
|
|
AUTOSTART="${OPTIONS[0]}"
|
|
echo "Setting up the service with autostart ${AUTOSTART}"
|
|
|
|
UNIT="\
|
|
[Unit]
|
|
Description=GPU Control Daemon (via Flatpak)
|
|
After=multi-user.target
|
|
|
|
[Service]
|
|
Environment=FLATPAK_INSTALL_USER=$USER
|
|
ExecStart=bash $DAEMON_SH_PATH
|
|
Nice=-10
|
|
Restart=on-failure
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target\
|
|
"
|
|
|
|
if flatpak-spawn --host sh -c "command -v pkexec" > /dev/null 2>&1; then
|
|
ROOT_WRAPPER="pkexec"
|
|
else
|
|
ROOT_WRAPPER="run0 --pipe"
|
|
fi
|
|
|
|
echo "Using root wrapper ${ROOT_WRAPPER}"
|
|
|
|
echo "${UNIT}" | flatpak-spawn --host tee /tmp/lact-unit-setup
|
|
|
|
flatpak-spawn --host $ROOT_WRAPPER sh -c "cp /tmp/lact-unit-setup ${UNIT_PATH} && (chcon -R -t bin_t $DAEMON_SH_PATH || true)"
|
|
echo "Unit file created at ${UNIT_PATH}"
|
|
|
|
flatpak-spawn --host rm /tmp/lact-unit-setup
|
|
|
|
if [ "${AUTOSTART}" == "TRUE" ]; then
|
|
echo "Enabling the service with autostart"
|
|
flatpak-spawn --host $ROOT_WRAPPER sh -c "systemctl daemon-reload && systemctl enable --now lactd.service"
|
|
else
|
|
echo "Starting the service without autostart"
|
|
flatpak-spawn --host $ROOT_WRAPPER sh -c "systemctl daemon-reload && systemctl start lactd.service"
|
|
fi
|
|
|
|
if [ "${LACT_UNATTENDED_SETUP}" != "true" ]; then
|
|
yad --text 'The service has been started. Please run LACT again.' --button=OK:0
|
|
fi
|
|
exit 0
|
|
else
|
|
echo "Service setup rejected, skipping"
|
|
fi
|
|
fi
|
|
|
|
lact $@
|