# 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.
# Hint: for really low RAM thin clients, set the following in lts.conf:
# RM_THIN_SYSTEM_SERVICES="anacron cron dbus rsyslog tty1 upstart-udev-bridge"

while read service description; do
    case " $KEEP_SYSTEM_SERVICES " in
        *" $service "*)
            ;;
        *)
            RM_SYSTEM_SERVICES="$RM_SYSTEM_SERVICES $service"
            ;;
    esac
done <<EOF
alsa-restore          # Restore sound card(s') mixer state(s)
alsa-store            # Save sound card(s') mixer state(s)
grub-common           # Record successful boot for GRUB
lightdm               # Light Display Manager
modemmanager          # Modem manager
nbd-client            # Network Block Device client (we use nbd-disconnect)
plymouth-stop         # Hide the splash screen
rfkill-store          # Store software rfkill state
tty2                  # Getty
tty3                  # Getty
tty4                  # Getty
tty5                  # Getty
tty6                  # Getty
unattended-upgrades   # Check if unattended upgrades are being applied
urandom               # Save and restore random seed between restarts
ureadahead            # Read required files in advance
ureadahead-other      # Read required files in advance for other mountpoints
EOF

while read service description; do
    case " $KEEP_SYSTEM_SERVICES " in
        *" $service "*)
            ;;
        *)
            RM_THIN_SYSTEM_SERVICES="$RM_THIN_SYSTEM_SERVICES $service"
            ;;
    esac
done <<EOF
acpid                 # ACPI daemon
apparmor              # AppArmor initialization
apport                # Automatic crash report generation
atd                   # Deferred execution scheduler
avahi-daemon          # mDNS/DNS-SD daemon
bluetooth             # Bluetooth daemon
brltty                # Braille terminal driver
cups                  # CUPS Printing spooler and server
kerneloops            # Collects and submits kernel crash signatures
ufw                   # Uncomplicated Firewall
upstart-socket-bridge # Bridge socket events into upstart
EOF

rm_services="$RM_SYSTEM_SERVICES"
if ! boolean_is_true "$LTSP_FATCLIENT"; then
    rm_services="$rm_services $RM_THIN_SYSTEM_SERVICES"
fi

for service in $rm_services; do
    rm -f /etc/rc?.d/???"$service" "/etc/init.d/$service" "/etc/init/$service.conf"
done
