summaryrefslogtreecommitdiff
path: root/raveos-app-installer/data/actions/corectrl.sh
blob: 7f378d453a5b9b0f6fb87af733db4165cba43ec9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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."