diff options
Diffstat (limited to 'raveos-app-installer/data/actions/corectrl.sh')
| -rwxr-xr-x | raveos-app-installer/data/actions/corectrl.sh | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/raveos-app-installer/data/actions/corectrl.sh b/raveos-app-installer/data/actions/corectrl.sh new file mode 100755 index 0000000..7f378d4 --- /dev/null +++ b/raveos-app-installer/data/actions/corectrl.sh @@ -0,0 +1,109 @@ +#!/bin/bash +# CoreCTRL (AMD GPU vezérlő) telepítő script +# Környezeti változók: INSTALL_USER, INSTALL_HOME, REPO_CONFIGS_URL + +set -e + +USER="$INSTALL_USER" +HOME="$INSTALL_HOME" +REPO_URL="${REPO_CONFIGS_URL:-https://git.rp1.hu/Nippy/Raveos-App-beta/raw/branch/main/raveos-app-installer-beta/configs/}" +ACTION="${1:-install}" +CONFIG_OVERRIDE_DIR="${RAVEOS_CONFIG_OVERRIDE_DIR:-/etc/raveos-beta/configs}" +CONFIG_PACKAGE_DIR="${RAVEOS_CONFIG_PACKAGE_DIR:-/usr/share/raveos-app-installer-beta/configs}" + +run_as_user() { + runuser -u "$USER" -- env HOME="$HOME" "$@" +} + +resolve_local_config() { + local name="$1" + local candidate + for candidate in \ + "$CONFIG_OVERRIDE_DIR/$name" \ + "$CONFIG_PACKAGE_DIR/$name" + do + if [[ -f "$candidate" ]]; then + printf '%s\n' "$candidate" + return 0 + fi + done + return 1 +} + +remove_installed_packages() { + local installed=() + local pkg + for pkg in "$@"; do + if pacman -Qq "$pkg" >/dev/null 2>&1; then + installed+=("$pkg") + fi + done + if ((${#installed[@]})); then + pacman -Rcns --noconfirm "${installed[@]}" + fi +} + +if [[ "$ACTION" == "remove" ]]; then + echo "Removing CoreCTRL for $USER..." + remove_installed_packages corectrl + rm -f /etc/polkit-1/rules.d/90-corectrl.rules + rm -f "$HOME/.config/autostart/org.corectrl.CoreCtrl.desktop" + rm -rf "$HOME/.config/corectrl" + echo "CoreCTRL removal complete!" + exit 0 +fi + +echo "Installing CoreCTRL for $USER..." + +# CoreCTRL telepítése +pacman -S --noconfirm --needed corectrl + +# CoreCTRL config letöltése +echo "Downloading CoreCTRL config..." +run_as_user mkdir -p "$HOME/.config/corectrl" +if local_cfg="$(resolve_local_config corectrl.ini)"; then + cp "$local_cfg" "$HOME/.config/corectrl/corectrl.ini" +else + wget -q -O "$HOME/.config/corectrl/corectrl.ini" "${REPO_URL}corectrl.ini" || true +fi +chown "$USER:$USER" "$HOME/.config/corectrl/corectrl.ini" 2>/dev/null || true + +# Autostart beállítása +run_as_user mkdir -p "$HOME/.config/autostart" +cp /usr/share/applications/org.corectrl.CoreCtrl.desktop "$HOME/.config/autostart/" +chown "$USER:$USER" "$HOME/.config/autostart/org.corectrl.CoreCtrl.desktop" + +# Polkit szabály létrehozása (jelszó nélküli indítás) +cat > /etc/polkit-1/rules.d/90-corectrl.rules << EOF +polkit.addRule(function(action, subject) { + if ((action.id == "org.corectrl.helper.init" || + action.id == "org.corectrl.helperkiller.init") && + subject.local == true && + subject.active == true && + subject.isInGroup("$USER")) { + return polkit.Result.YES; + } +}); +EOF + +# AMD GPU kernel paraméterek hozzáadása (ha systemd-boot) +if [[ -d /boot/loader/entries ]]; then + for conf in /boot/loader/entries/*.conf; do + if [[ -f "$conf" ]]; then + if ! grep -q "amdgpu.ppfeaturemask" "$conf"; then + sed -i '/^options/s/$/ amdgpu.ppfeaturemask=0xffffffff/' "$conf" + fi + fi + done +fi + +# GRUB esetén +if [[ -f /etc/default/grub ]]; then + if ! grep -q "amdgpu.ppfeaturemask" /etc/default/grub; then + sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="amdgpu.ppfeaturemask=0xffffffff \1"/' /etc/default/grub + grub-mkconfig -o /boot/grub/grub.cfg 2>/dev/null || true + fi +fi + +echo "CoreCTRL installation complete!" +echo "Please reboot for kernel parameters to take effect." |