{ pkgs, ... }:
{
  services.hypridle.enable = true;
  services.hyprpaper.enable = true;
  programs.hyprlock.enable = true;

  # hyprland setup
  wayland.windowManager.hyprland = {
    enable = true;
    xwayland.enable = true;
    settings = {
      ecosystem = {
        no_donation_nag = true;
      };
      xwayland."force_zero_scaling" = true;
      env = [
        "HYPRCURSOR_THEME,Bibata-Original-Classic"
        "HYPRCURSOR_SIZE,24"
        "XCURSOR_SIZE,24"
        "GDK_SCALE,2"
      ];
      workspace = [
        "1, monitor:eDP-1,  default:true, persistent:true"
        "special:scratchpad, on-created-empty:foot"
      ];
      monitor = [
        #"eDP-1, 2880x1800@120, 0x1080, 2"
        #"HDMI-A-1, 1920x1080@75, 0x0, 1"
        "eDP-1, 2880x1800@120, 0x1440, 2"
        "HDMI-A-1, 2560x1440@75, 0x0, 1"
      ];
      input = {
        kb_layout = "de";
        kb_variant = "us";
        follow_mouse = 1;
      };
      "$mod" = "SUPER";
      "$modd" = "SUPER_SHIFT";
      general = {
        gaps_in = 0;
        gaps_out = 0;
        border_size = 0;

        resize_on_border = true;
        layout = "dwindle";
      };
      decoration = {
        blur.enabled = false;
        shadow = {
          enabled = false;
        };
        rounding = 0;
      };
      animations = {
        enabled = 1;
        bezier = "overshot,0.13,0.99,0.29,1.1";
        animation = [
          "windows,1,4,overshot,slide"
          "border,1,10,default"
          "fade,1,10,default"
          "workspaces,1,6,overshot,slidevert"
        ];
      };
      misc = {
        disable_hyprland_logo = true;
        vfr = true;
      };
      bind = [
        # opening programs
        "$mod, Return, exec, foot"
        "$mod, D, exec, tofi-drun | xargs hyprctl dispatch exec --"
        "$mod, M, exit, "
        "$mod, Q, killactive, "

        # moving around
        "$mod, left , movefocus, l"
        "$mod, right, movefocus, r"
        "$mod, down , movefocus, d"
        "$mod, up   , movefocus, u"

        # moving windows
        "$modd, left , movewindow, l"
        "$modd, right, movewindow, r"
        "$modd, down , movewindow, d"
        "$modd, up   , movewindow, u"

        # workspaces
        "$mod, 1, workspace, 1"
        "$mod, 2, workspace, 2"
        "$mod, 3, workspace, 3"
        "$mod, 4, workspace, 4"
        "$mod, 5, workspace, 5"
        "$mod, 6, workspace, 6"
        "$modd, 1, movetoworkspacesilent, 1"
        "$modd, 2, movetoworkspacesilent, 2"
        "$modd, 3, movetoworkspacesilent, 3"
        "$modd, 4, movetoworkspacesilent, 4"
        "$modd, 5, movetoworkspacesilent, 5"
        "$modd, 6, movetoworkspacesilent, 6"

        # fullscreen
        "$mod, F11, fullscreen, 0"
        # "$mod, m, fullscreen, 1" # maximize

        # floating
        "$mod, F, togglefloating, active"

        # screenshot
        ", Print, exec, grimblast copysave area $HOME\"/screenshots/\"$(date +'%F-%T.png');"

        # scratchpad
        "$mod, C, togglespecialworkspace, scratchpad"

        # status bar
        "$mod, T, exec, eww open --toggle top-bar"
      ];
      bindm = [
        "$mod, mouse:272, movewindow"
      ];
      bindle = [
        # volume
        ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
        ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
        ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
        # screen brightness
        ", XF86MonBrightnessUp, exec, brillo -q -A 5"
        ", XF86MonBrightnessDown, exec, brillo -q -U 5"
      ];
      exec-once = [
        "/home/leonv/Git/nixos/absol/hypr/start.sh"
      ];
    };
  };

  # tell electron to use wayland
  home.sessionVariables.NIXOS_OZONE_WL = "1";

  # terminal
  programs.foot = {
    enable = true;
    settings = {
      main = {
        font = "monospace:size=12";
        dpi-aware = "yes";
      };
      colors = {
        foreground="cdd6f4";
        background="000000";
        regular0="bac2de";
        regular1="f38ba8";
        regular2="a6e3a1";
        regular3="f9e2af";
        regular4="89b4fa";
        regular5="f5c2e7";
        regular6="94e2d5";
        regular7="585b70";
        bright0="a6adc8";
        bright1="f38ba8";
        bright2="a6e3a1";
        bright3="f9e2af";
        bright4="89b4fa";
        bright5="f5c2e7";
        bright6="94e2d5";
        bright7="45475a";
        selection-foreground="cdd6f4";
        selection-background="414356";
        search-box-no-match="11111b f38ba8";
        search-box-match="cdd6f4 313244";
        jump-labels="11111b fab387";
        urls="89b4fa";
      };
    };
  };

  services.mako = {
    enable = true;
    extraConfig = ''
      background-color=#24273a
      text-color=#cad3f5
      border-color=#8aadf4
      progress-color=over #363a4f
      sort=-time
      layer=overlay
      width=300
      height=110
      border-size=2
      border-radius=15
      max-icon-size=64
      default-timeout=5000
      ignore-timeout=1

      [urgency=high]
      border-color=#f5a97f
    '';
  };
}