{
  lib,
  config,
  ...
}: let
  inherit (lib) mkIf;
  cfg = config.horseman.wm.hyprland;
in {
  config = mkIf cfg.enable {
    nix-hyprland = {
      animations = {
        enabled = true;
        beziers = [
          {
            name = "easeOutQuint";
            startX = 0.23;
            startY = 1.0;
            endX = 0.32;
            endY = 1.0;
          }
          {
            name = "easeInOutCubic";
            startX = 0.65;
            startY = 0.05;
            endX = 0.36;
            endY = 1.0;
          }
          {
            name = "linear";
            startX = 0.0;
            startY = 0.0;
            endX = 1.0;
            endY = 1.0;
          }
          {
            name = "almostLinear";
            startX = 0.5;
            startY = 0.5;
            endX = 0.75;
            endY = 1.0;
          }
          {
            name = "quick";
            startX = 0.15;
            startY = 0.0;
            endX = 0.1;
            endY = 1.0;
          }
        ];

        animations = [
          {
            name = "global";
            speed = 10.0;
            curve = "default";
          }
          {
            name = "border";
            speed = 5.39;
            curve = "easeOutQuint";
          }
          {
            name = "windows";
            speed = 4.79;
            curve = "easeOutQuint";
          }
          {
            name = "windowsIn";
            speed = 4.1;
            curve = "easeOutQuint";
            style = "popin 87%";
          }
          {
            name = "windowsOut";
            speed = 1.49;
            curve = "linear";
            style = "popin 87%";
          }
          {
            name = "fadeIn";
            speed = 1.73;
            curve = "almostLinear";
          }
          {
            name = "fadeOut";
            speed = 1.46;
            curve = "almostLinear";
          }
          {
            name = "fade";
            speed = 3.03;
            curve = "quick";
          }
          {
            name = "layers";
            speed = 3.81;
            curve = "easeOutQuint";
          }
          {
            name = "layersIn";
            speed = 4.0;
            curve = "easeOutQuint";
            style = "fade";
          }
          {
            name = "layersOut";
            speed = 1.5;
            curve = "linear";
            style = "fade";
          }
          {
            name = "fadeLayersIn";
            speed = 1.79;
            curve = "almostLinear";
          }
          {
            name = "fadeLayersOut";
            speed = 1.39;
            curve = "almostLinear";
          }
          {
            name = "workspaces";
            speed = 1.94;
            curve = "almostLinear";
            style = "fade";
          }
          {
            name = "workspacesIn";
            speed = 1.21;
            curve = "almostLinear";
            style = "fade";
          }
          {
            name = "workspacesOut";
            speed = 1.94;
            curve = "almostLinear";
            style = "fade";
          }
        ];
      };
    };
  };
}
