# 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

    echo "$@" | sed 's/#.*//' | while read service; do
        case " $KEEP_SYSTEM_SERVICES " in
            *" $service "*)
                ;;
            *)
                echo -n " $service"
                ;;
        esac
    done
}

# $RM_SYSTEM_SERVICES are removed for all clients
rm_services="$(allowed_services "$RM_SYSTEM_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 $(allowed_services "$RM_THIN_SYSTEM_SERVICES
cups                  # CUPS Printing spooler and server
NetworkManager        # Network connection manager
")"

    # For low RAM thin clients, disable whatever isn't essential for booting
    memtotal=$(awk '/^MemTotal:/ { print int($2/1024) }' /proc/meminfo)
    RM_RAM_THRESHOLD=${RM_RAM_THRESHOLD:-128}
    if [ "$memtotal" -le "$RM_RAM_THRESHOLD" ]; then
        rm_services="$rm_services $(allowed_services "$RM_LOW_RAM_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
