{
  pkgs,
  inputs,
  config,
  lib,
  ...
}:
with lib; let
  cfg = config.universe.de.hyprland;
in {
  options.universe.de.hyprland = {
    enable = mkEnableOption "hyprland";
  };

  config = mkIf cfg.enable {
    wayland.windowManager.hyprland = {
      enable = true;
      package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
      portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
      systemd.variables = ["--all"];
      settings = {
        monitor = [
          "DP-1,     3440x1440@100, 1920x0, 1"
          "HDMI-A-1, 1920x1200@60,     0x0, 1"
        ];

        general = {
          gaps_in = 15;
          gaps_out = 40;
          border_size = 3;
          resize_on_border = false;
          allow_tearing = false;
          layout = "dwindle";
        };

        decoration = {
          rounding = 10;
          active_opacity = 1.0;
          inactive_opacity = 1.0;

          dim_inactive = false;
          dim_strength = 0.2;

          blur = {
            enabled = true;
            size = 3;
            passes = 4;
            noise = 0.07;
            xray = true;
            brightness = 0.4;
            popups = false;
          };
        };

        dwindle = {
          pseudotile = false;
          preserve_split = true;
          smart_split = false;
          smart_resizing = false;
        };

        misc = {
          disable_hyprland_logo = true;
        };

        layerrule = [
          "blur, notifications"
          "ignorezero, notifications"

          "blur, rofi"
          "ignorezero, rofi"

          "animation fade, selection"
          "animation slide top, anyrun"
        ];

        windowrulev2 = [
          "suppressevent maximize, class:.*"
          "float, class:^(com.saivert.pwvucontrol)$"
          "size 696 570, class:^(com.saivert.pwvucontrol)$"
          "move 1654 807, class:^(com.saivert.pwvucontrol)$"
          "monitor DP-1, class:^(com.saivert.pwvucontrol)$"
          "opacity 0.9, class:^(com.saivert.pwvucontrol)$"
          "maximize, class:^(org.telegram.desktop)$,title:^(Media viewer)$"
          "float, class:^(org.telegram.desktop)$,title:^(Media viewer)$"
          "float, class:^(nemo)$,title:^.*(Properties)$"
          "float, class:^(zen-alpha)$,title:^(Library)$"
          "opacity 0.9, class:^(zen-alpha)$,title:^(Library)$"
          "opacity 0.9, class:^(Spotify)$"
          "noblur, class:^()$,title:^()$"
          "plugin:chromakey,fullscreen:0"
          "opacity 0.999,fullscreen:0"
        ];

        animations = {
          enabled = true;
          # bezier = [
          #   "myBezier, 0.05, 1, 0.1, 1"
          # ];
          # animation = [
          #   "windows, 1, 7, myBezier, slide"
          #   "fade, 1, 7, myBezier"
          #   "workspaces, 1, 6, myBezier"
          #   "layers, 1, 6, myBezier, slide bottom"
          # ];

          bezier = [
            "easeOutQuint,0.23,1,0.32,1"
            "aseInOutCubic,0.65,0.05,0.36,1"
            "linear,0,0,1,1"
            "almostLinear,0.5,0.5,0.75,1.0"
            "quick,0.15,0,0.1,1"
          ];

          animation = [
            "global, 1, 10, default"
            "border, 1, 5.39, easeOutQuint"
            "windows, 1, 4.79, easeOutQuint"
            "windowsIn, 1, 4.1, easeOutQuint, popin 87%"
            "windowsOut, 1, 1.49, linear, popin 87%"
            "fadeIn, 1, 1.73, almostLinear"
            "fadeOut, 1, 1.46, almostLinear"
            "fade, 1, 3.03, quick"
            "layers, 1, 3.81, easeOutQuint"
            "layersIn, 1, 4, easeOutQuint, fade"
            "layersOut, 1, 1.5, linear, fade"
            "fadeLayersIn, 1, 1.79, almostLinear"
            "fadeLayersOut, 1, 1.39, almostLinear"
            "workspaces, 1, 1.94, aseInOutCubic"
            "workspacesIn, 1, 1.21, aseInOutCubic"
            "workspacesOut, 1, 1.94, aseInOutCubic"
          ];
        };

        input = {
          kb_layout = "us,ru";
          kb_options = "grp:caps_toggle";
          follow_mouse = 1;
          sensitivity = 0;
        };

        exec-once = [
          "hyprctl setcursor Bibata-Modern-Classic 24"
          "waybar"
          "telegram-desktop -startintray"
          "vesktop"
          "nm-applet"
          "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
          "hyprpaper"
        ];
      };
    };
  };
}