#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2024-present ArchR (https://github.com/archr-linux/Arch-R)

. /etc/profile

REQUESTED_MODE="${*}"
SUSPEND_MODE=$(get_setting system.suspendmode)

if [ ! "${REQUESTED_MODE}" = "${SUSPEND_MODE}" ]; then
  cat <<EOF >/storage/.config/sleep.conf.d/sleep.conf
[Sleep]
EOF
  case ${REQUESTED_MODE} in
    off)
      cat <<EOF >>/storage/.config/sleep.conf.d/sleep.conf
AllowSuspend=no
EOF
      ;;
    freeze)
      cat <<EOF >>/storage/.config/sleep.conf.d/sleep.conf
AllowSuspend=yes
SuspendState=freeze standby mem
EOF
      ;;
    standby)
      cat <<EOF >>/storage/.config/sleep.conf.d/sleep.conf
AllowSuspend=yes
SuspendState=standby mem freeze
EOF
      ;;
    mem)
      cat <<EOF >>/storage/.config/sleep.conf.d/sleep.conf
AllowSuspend=yes
SuspendState=mem standby freeze
EOF
      ;;
    default)
      del_setting system.suspendmode
      if [ -e "/usr/lib/autostart/quirks/devices/${QUIRK_DEVICE}/030-suspend_mode" ]; then
        "/usr/lib/autostart/quirks/devices/${QUIRK_DEVICE}/030-suspend_mode"
      elif [ -e "/usr/lib/autostart/quirks/platforms/${HW_DEVICE}/030-suspend_mode" ]; then
        "/usr/lib/autostart/quirks/platforms/${HW_DEVICE}/030-suspend_mode"
      fi
      ;;
    *)
      cat <<EOF >>/storage/.config/sleep.conf.d/sleep.conf
AllowSuspend=yes
SuspendState=${REQUESTED_MODE}
EOF
      ;;
  esac
  set_setting system.suspendmode ${1}
  systemctl restart systemd-logind
fi
