{ config, ... }:
let
  animationSpeed = config.var.theme.animation-speed;

  animationDuration = if animationSpeed == "slow" then
    "4"
  else if animationSpeed == "medium" then
    "2.5"
  else
    "1.5";
  borderDuration = if animationSpeed == "slow" then
    "10"
  else if animationSpeed == "medium" then
    "6"
  else
    "3";
in {
  wayland.windowManager.hyprland.settings = {
    animations = {
      enabled = true;
      bezier = [
        "linear, 0, 0, 1, 1"
        "md3_standard, 0.2, 0, 0, 1"
        "md3_decel, 0.05, 0.7, 0.1, 1"
        "md3_accel, 0.3, 0, 0.8, 0.15"
        "overshot, 0.05, 0.9, 0.1, 1.1"
        "crazyshot, 0.1, 1.5, 0.76, 0.92"
        "hyprnostretch, 0.05, 0.9, 0.1, 1.0"
        "menu_decel, 0.1, 1, 0, 1"
        "menu_accel, 0.38, 0.04, 1, 0.07"
        "easeInOutCirc, 0.85, 0, 0.15, 1"
        "easeOutCirc, 0, 0.55, 0.45, 1"
        "easeOutExpo, 0.16, 1, 0.3, 1"
        "softAcDecel, 0.26, 0.26, 0.15, 1"
        "md2, 0.4, 0, 0.2, 1"
      ];

      animation = [
        "windows, 1, ${animationDuration}, md3_decel, popin 60%"
        "windowsIn, 1, ${animationDuration}, md3_decel, popin 60%"
        "windowsOut, 1, ${animationDuration}, md3_accel, popin 60%"
        "border, 1, ${borderDuration}, default"
        "fade, 1, ${animationDuration}, md3_decel"
        "layersIn, 1, ${animationDuration}, menu_decel, slide"
        "layersOut, 1, ${animationDuration}, menu_accel"
        "fadeLayersIn, 1, ${animationDuration}, menu_decel"
        "fadeLayersOut, 1, ${animationDuration}, menu_accel"
        "workspaces, 1, ${animationDuration}, menu_decel, slide"
        "specialWorkspace, 1, ${animationDuration}, md3_decel, slidevert"
      ];
    };
  };
}
