post_install() {
    echo "Running post-install script"
    
    # Create sudoers file
    echo "root ALL=(ALL) NOPASSWD:SETENV: ALL" > /etc/sudoers.d/rudesktop

    # Patch X11 config
    /usr/bin/python3 /usr/share/rudesktop-client/files/patch-X11.py || true

    # Set rendezvous domain
    if [ -n "$RUDESKTOP_DOMAIN" ]; then
        /usr/bin/rudesktop --rendezvous "$RUDESKTOP_DOMAIN" || true
    fi

    # Kickstart only on fresh install
    if [ -z "$2" ]; then
        /usr/bin/rudesktop --kickstart
    fi

    cp /usr/share/rudesktop-client/files/systemd/rudesktop.service /usr/lib/systemd/system/rudesktop.service

    # Setup systemd services
    systemctl daemon-reload
    systemctl enable rudesktop
    systemctl start rudesktop

    cp /usr/share/rudesktop-client/files/systemd/rudesktop-user.service /usr/lib/systemd/user/rudesktop-user.service
    cp /usr/share/rudesktop-client/files/systemd/rudesktop-tray.service /usr/lib/systemd/user/rudesktop-tray.service

    loginctl list-users --no-legend | awk '{print $1, $2}' | while read -r uid username; do
        sudo -u "$username" \
            DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$uid/bus" \
            systemctl --user daemon-reload || true
    done

    xdg-mime default rudesktop.desktop x-scheme-handler/rudesktop || true
}

pre_upgrade() {
    echo "Stopping services before upgrade"
    systemctl stop rudesktop || true

    systemctl --global disable rudesktop-user.service > /dev/null 2>&1 || true
    systemctl --global disable rudesktop-tray.service > /dev/null 2>&1 || true
    loginctl list-users --no-legend | awk '{print $1, $2}' | while read -r uid username; do
        sudo -u "$username" \
            DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$uid/bus" \
            systemctl --user stop rudesktop-tray || true
        sudo -u "$username" \
            DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$uid/bus" \
            systemctl --user stop rudesktop-user || true
    done
}

post_upgrade() {
    post_install "$@"
}

pre_remove() {
    pre_upgrade
    systemctl disable rudesktop || true
    systemctl --global disable rudesktop-user.service > /dev/null 2>&1 || true
    systemctl --global disable rudesktop-tray.service > /dev/null 2>&1 || true
}

post_remove() {
    rm -f /etc/sudoers.d/rudesktop
    rm -f /usr/lib/systemd/system/rudesktop.service
    rm -f /usr/lib/systemd/user/rudesktop-user.service
    rm -f /usr/lib/systemd/user/rudesktop-tray.service
    rm -rf /usr/share/rudesktop-client
    rm -f /usr/share/applications/rudesktop.desktop
    update-desktop-database || true
}
