{ pkgs, config, ... }:
let
  color = n:
    config.environment.graphical.colors."${config.environment.graphical.theme.name}"."${builtins.toString
    n}";
in {
  home-manager.users.agatha = {
    services.dunst = {
      enable = true;
      settings = {
        global = {
          # Display
          monitor = 1;

          follow = "none";
          fullscreen = "pushback";

          # Geometry
          width = 300;
          height = 300;

          origin = "top-right";
          offset = "15x63";

          notification_limit = 5;

          # Progress bar
          progress_bar = true;
          progress_bar_height = 3;
          progress_bar_frame_width = 0;
          progress_bar_min_width = 150;
          progress_bar_max_width = 300;

          indicate_hidden = true;
          separator_height = 0;
          padding = 8;
          horizontal_padding = 8;
          text_icon_padding = 0;
          frame_width = 3;

          frame_color = color 1;
          highlight = color 3;

          separator_color = "auto";
          sort = true;

          # Text
          font = "Siji, DaddyTimeMono Nerd Font 10";
          line_height = 0;

          markup = "full";
          format = ''
            <b>%s</b>
            %b %p'';
          alignment = "left";
          vertical_alignment = "center";

          show_age_threshold = 60;
          ellipsize = "middle";
          ignore_newline = false;
          hide_duplicate_coutn = false;
          show_indicators = false;

          # Icons
          icon_position = "left";
          min_icon_size = 0;
          max_icon_size = 32;

          # History
          sticky_history = true;
          history_length = 20;

          # Misc
          browser = "${pkgs.xdg-utils}/bin/xdg-open";
          always_run_script = true;

          title = "Dunst";
          class = "Dunst";

          mouse_left_click = "do_action, close_curent";
          mouse_right_click = "close_all";
        };
        urgency_low = {
          background = color 0;
          foreground = color 15;
          timeout = 10;
        };
        urgency_normal = {
          background = color 0;
          foreground = color 15;
          timeout = 10;
        };
        urgency_critical = {
          background = color 0;
          foreground = color 15;
          frame_color = color 3;

          fullscreen = "show";
          timeout = 0;
        };
        # Horrible hack to fix alphabetical sorting overriding this
        x-calendar = {
          summary = " Calendar";
          alignment = "center";
        };
      };
    };
  };
}
