{lib, ...}: let inherit (lib.options) mkEnableOption mkOption; inherit (lib.modules) mkRenamedOptionModule; inherit (lib.types) int str enum attrsOf either; inherit (lib.nvim.types) mkPluginSetupOption luaInline; in { imports = let renamedSetupOpt = name: mkRenamedOptionModule ["vim" "notify" "nvim-notify" name] ["vim" "notify" "nvim-notify" "setupOpts" name]; in [ (renamedSetupOpt "stages") (renamedSetupOpt "timeout") (renamedSetupOpt "background_colour") (renamedSetupOpt "position") (renamedSetupOpt "icons") ]; options.vim.notify.nvim-notify = { enable = mkEnableOption "nvim-notify notifications"; setupOpts = mkPluginSetupOption "nvim-notify" { render = mkOption { type = either (enum ["default" "minimal" "simple" "compact" "wrapped-compact"]) luaInline; default = "compact"; description = "Custom rendering method to be used for displaying notifications"; }; stages = mkOption { type = enum ["fade_in_slide_out" "fade_in" "slide_out" "none"]; default = "fade_in_slide_out"; description = "The stages of the notification"; }; timeout = mkOption { type = int; default = 1000; description = "The timeout of the notification"; }; background_colour = mkOption { type = str; default = "#000000"; description = "The background colour of the notification"; }; position = mkOption { type = enum ["top_left" "top_right" "bottom_left" "bottom_right"]; default = "top_right"; description = "The position of the notification"; }; icons = mkOption { type = attrsOf str; description = "The icons of the notification"; default = { ERROR = ""; WARN = ""; INFO = ""; DEBUG = ""; TRACE = ""; }; }; }; }; }