{ config, pkgs, lib, ... }:

{
  dconf.settings = {
    #
    # touchpad
    #

    "org/gnome/desktop/peripherals/touchpad" = {
      natural-scroll = false;
      two-finger-scrolling-enabled = true;
    };

    #
    # window keybindings
    #

    "org/gnome/desktop/wm/keybindings" = {
      close = [ "<Alt>q" ];
      maximize = [ "<Primary><Shift>Up" ];
      unmaximize = [ "<Primary><Shift>Down" ];
      move-to-workspace-left = [ "<Shift><Alt>Left" ];
      move-to-workspace-right = [ "<Shift><Alt>Right" ];
      switch-to-workspace-left = [ "<Primary><Alt>Left" ];
      switch-to-workspace-right = [ "<Primary><Alt>Right" ];
    };
    "org/gnome/mutter/keybindings" = {
      toggle-tiled-left = [ "<Primary><Shift>Left" ];
      toggle-tiled-right = [ "<Primary><Shift>Right" ];
    };

    #
    # custom keybindings
    #

    "org/gnome/settings-daemon/plugins/media-keys" = {
      custom-keybindings = [
        "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
        "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
      ];

      # lock screen
      screensaver = [ "<Primary><Alt>l" ];

      # disable screenshot
      screenshot = [ ];
    };

    "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" =
      {
        binding = "F12";
        command = "guake-toggle";
        name = "Guake";
      };

    "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" =
      {
        binding = "<Alt>a";
        command = "albert toggle";
        name = "Albert";
      };

    #
    # power settings
    #

    "org/gnome/settings-daemon/plugins/power" = {
      sleep-inactive-ac-type = "nothing";
      sleep-inactive-battery-type = "nothing";
    };

    #
    # night light
    #

    "org/gnome/settings-daemon/plugins/color" = {
      night-light-enabled = true;
      night-light-temperature = 2536;
    };

    #
    # interface
    #

    "org/gnome/desktop/interface" = { show-battery-percentage = true; };
  };
}