{ config, pkgs, ... }:
{
  # Enable Hyprland compositor
  wayland.windowManager.hyprland = {
    enable = true;
    package = pkgs.hyprland;
    xwayland.enable = true;

    # Autostart using systemd
    systemd.enable = true;
    settings = {
      # Monitor config for home desk layout
      monitor =
        [
          "eDP-2, 2560x1600@165, 0x0, auto" # main laptop monitor
          "DP-2, 1920x1080@119.98, -960x-1080, auto" # left external monitor
          "DP-3, 1920x1080@119.98, 960x-1080, auto" # right external monitor
        ];    

      # Define SUPER key as mod key
      "$mod" = "SUPER";

      # Set keyboard layout
      input = { 
        kb_layout = "gb";
        follow_mouse = 1;
        mouse_refocus = false;
      };

      bindl = [
        ",switch:off:Lid Switch,exec,hyprctl keyword monitor eDP-2, 2560x1600@165, 0x0, auto"
        ",switch:on:Lid Switch,exec,hyprctl keyword monitor eDP-2, disable"
      ];

      # Allow using SUPER+LEFT to move windows and SUPER+RIGHT to resize windows
      bindm = [
        "$mod, mouse:272, movewindow"
        "$mod, mouse:273, resizewindow"
      ];

      # Declare all keybinds
      bind =
        [
          # Keybinds for starting programs
          "$mod, F, exec, firefox"
          "$mod, 1, exec, alacritty"
          "$mod, D, exec, vesktop"
          "$mod, space, exec, wofi --show drun, run"

          # Screenshot tool
          ", Print, exec, grimblast copy area"

          # Screen locking tool
          "$mod, l, exec, hyprlock" 

          # Window management
          "$mod, x, killactive"
          "$mod, tab, togglefloating"
        ];

      # Prevent xwayland apps from looking pixellated, cursor scaling to compensate for this is defined in home.nix
      xwayland = {
        force_zero_scaling = true;
      };
    };
  };
}