{
    plugins.fidget = {
        enable = true;
        logger = {
            level = "warn"; # “off”, “error”, “warn”, “info”, “debug”, “trace”
            floatPrecision = 0.01; # Limit the number of decimals displayed for floats
        };
        progress = {
            pollRate = 0; # How and when to poll for progress messages
            suppressOnInsert = true; # Suppress new messages while in insert mode
            ignoreDoneAlready = false; # Ignore new tasks that are already complete
            ignoreEmptyMessage = false; # Ignore new tasks that don't contain a message
            clearOnDetach =
                # Clear notification group when LSP server detaches
                ''
          function(client_id)
            local client = vim.lsp.get_client_by_id(client_id)
            return client and client.name or nil
          end
                '';
            notificationGroup =
                # How to get a progress message's notification group key
                ''
          function(msg) return msg.lsp_client.name end
                '';
            ignore = []; # List of LSP servers to ignore
            lsp = {
                progressRingbufSize = 0; # Configure the nvim's LSP progress ring buffer size
            };
            display = {
                renderLimit = 16; # How many LSP messages to show at once
                doneTtl = 3; # How long a message should persist after completion
                doneIcon = "✔"; # Icon shown when all LSP progress tasks are complete
                doneStyle = "Constant"; # Highlight group for completed LSP tasks
                progressTtl = "math.huge"; # How long a message should persist when in progress
                progressIcon = {
                    pattern = "dots";
                    period = 1;
                }; # Icon shown when LSP progress tasks are in progress
                progressStyle = "WarningMsg"; # Highlight group for in-progress LSP tasks
                groupStyle = "Title"; # Highlight group for group name (LSP server name)
                iconStyle = "Question"; # Highlight group for group icons
                priority = 30; # Ordering priority for LSP notification group
                skipHistory = true; # Whether progress notifications should be omitted from history
                formatMessage = ''
          require ("fidget.progress.display").default_format_message
                ''; # How to format a progress message
                formatAnnote = ''
          function (msg) return msg.title end
                ''; # How to format a progress annotation
                formatGroupName = ''
          function (group) return tostring (group) end
                ''; # How to format a progress notification group's name
                overrides = {
                    rust_analyzer = {
                        name = "rust-analyzer";
                    };
                }; # Override options from the default notification config
            };
        };
        notification = {
            pollRate = 10; # How frequently to update and render notifications
            filter = "info"; # “off”, “error”, “warn”, “info”, “debug”, “trace”
            historySize = 128; # Number of removed messages to retain in history
            overrideVimNotify = true;
            redirect = ''
        function(msg, level, opts)
          if opts and opts.on_open then
            return require("fidget.integration.nvim-notify").delegate(msg, level, opts)
          end
        end
            '';
            configs = {
                default = "require('fidget.notification').default_config";
            };

            window = {
                normalHl = "Comment";
                winblend = 0;
                border = "none"; # none, single, double, rounded, solid, shadow
                zindex = 45;
                maxWidth = 0;
                maxHeight = 0;
                xPadding = 1;
                yPadding = 0;
                align = "bottom";
                relative = "editor";
            };
            view = {
                stackUpwards = true; # Display notification items from bottom to top
                iconSeparator = " "; # Separator between group name and icon
                groupSeparator = "---"; # Separator between notification groups
                groupSeparatorHl =
                    # Highlight group used for group separator
                    "Comment";
            };
        };
    };
}
