{ lib, config, ... }:

{
  boot.resumeDevice = lib.optionalString ((lib.length config.swapDevices) > 0) (lib.head config.swapDevices).device;
  services.logind = {
    lidSwitch = "suspend-then-hibernate";
  };
  systemd.sleep.extraConfig = ''
    HibernateDelaySec=30m
  '';

  services.upower = {
    percentageLow = 20;
    percentageCritical = 10;
    percentageAction = 8;
  };

  programs.dconf.profiles = {
    user.databases = [
      {
        settings = {
          "org/gnome/settings-daemon/plugins/power" = {
            power-button-action = "hibernate";
            power-saver-profile-on-low-battery = false;
            sleep-inactive-ac-type = "nothing";
          };
        };
      }
    ];
    gdm.databases = [
      {
        settings = {
          "org/gnome/settings-daemon/plugins/power" = {
            power-button-action = "hibernate";
            power-saver-profile-on-low-battery = false;
            sleep-inactive-ac-type = "nothing";
          };
        };
      }
    ];
  };
}