# Remove some system services that don't make sense in live sessions.
# The user can add more items by declaring space separated RM_SYSTEM_SERVICES
# or RM_THIN_SYSTEM_SERVICES lists in lts.conf. The RM_THIN_SYSTEM_SERVICES list
# is ignored by fat clients.
# KEEP_SYSTEM_SERVICES is a space separated whitelist of services.

allowed_services() {
    local service description

    echo "$@" | while read service description; do
        case " $KEEP_SYSTEM_SERVICES " in
            *" $service "*)
                ;;
            *)
                echo -n " $service"
                ;;
        esac
    done
}

# $RM_SYSTEM_SERVICES are removed for all clients
rm_services="$RM_SYSTEM_SERVICES $(allowed_services "
syslog-ng             # Syslog-ng logging daemon
xdm                   # X.Org Display Manager
")"

# $RM_THIN_SYSTEM_SERVICES are removed for thin clients
if ! boolean_is_true "$LTSP_FATCLIENT"; then
    rm_services="$rm_services $RM_THIN_SYSTEM_SERVICES $(allowed_services "
cups                  # CUPS Printing spooler and server
NetworkManager        # Network connection manager
")"

    # For low RAM thin clients, disable whatever isn't essential for booting
    memtotal=$(sed -n 's/MemTotal: *\([0-9]*\) .*/\1/p' /proc/meminfo)
    memtotal=$(($memtotal / 1024))
    RM_RAM_THRESHOLD=${RM_RAM_THRESHOLD:-128}
    if [ "$memtotal" -le "$RM_RAM_THRESHOLD" ]; then
        rm_services="$rm_services $RM_LOW_RAM_SERVICES $(allowed_services "
uptimed               # Uptime Daemon
")"
    fi
fi

# We don't need NFS-related services if we're not using nfs
if ! grep -q nfs /etc/fstab; then
    rm_services="$rm_services $(allowed_services "
nfs                   # Network File System
")"
fi

for service in $rm_services; do
    test -f "/etc/runlevels/default/$service" && rc-update del "$service" default
done
