return {
    {
        "sainnhe/gruvbox-material",
        priority = 1000,
        config = function()
            -- Settings for colorscheme
            vim.api.nvim_set_var("gruvbox_material_background", "hard")
            vim.api.nvim_set_var("gruvbox_material_transparent_background", "1")
            vim.api.nvim_set_var("gruvbox_material_ui_contrast", "low")
            vim.api.nvim_set_var("gruvbox_material_show_eob", "0")
            vim.api.nvim_set_var("gruvbox_material_enable_bold", "1")
            vim.api.nvim_set_var("gruvbox_material_enable_italic", "1")
            vim.api.nvim_set_var("gruvbox_material_better_performance", "1")
            vim.cmd([[colo gruvbox-material]])

            -- Settings to override colorscheme
            -- vim.api.nvim_set_hl(0, "ModeMsg", { bold = true, fg = "#d8a657"})
            -- colors of tabline
            vim.api.nvim_set_hl(0, "TabLine", { bg = "#3c3836", fg = "#89b482" })
            vim.api.nvim_set_hl(0, "TabLineFil", { bg = "#1d2021" })
            vim.api.nvim_set_hl(0, "TabLineSel", { bold = true, bg = "none", fg = "#d8a657" })
            -- color of statusline
            vim.api.nvim_set_hl(0, "StatusLine", { bold = false, bg = "#1d2021", fg = "#89b482" })
            vim.api.nvim_set_hl(0, "StatusLineNC", { bg = "#1d2021", fg = "#5b534d" })
            -- color of vertical split line
            vim.api.nvim_set_hl(0, "VertSplit", { bg = "#141617", fg = "#141617" })
            -- color of the cursorline and cursorlinenumber
            vim.api.nvim_set_hl(0, "Cursorline", { bg = "#141617" })
            vim.api.nvim_set_hl(0, "CursorLineNr", { bold = true, bg = "#141617", fg = "#d8a657" })
            -- color of Floats and FloatBorders
            vim.api.nvim_set_hl(0, "NormalFloat", { bg = none, fg = none })
            vim.api.nvim_set_hl(0, "FloatBorder", { bg = none, fg = "#d4be98" })
            vim.api.nvim_set_hl(0, "DiagnosticFloatingWarn", { bg = none, fg = "#d8a657" })
            vim.api.nvim_set_hl(0, "DiagnosticFloatingError", { bg = none, fg = "#ea6962" })
            vim.api.nvim_set_hl(0, "DiagnosticFloatingHint", { bg = none, fg = "#a9b665" })
            vim.api.nvim_set_hl(0, "DiagnosticFloatingInfo", { bg = none, fg = "#d4be98" })

            -- autocommand for overrides
            vim.api.nvim_create_autocmd("ColorScheme", {
                pattern = "gruvbox-material",
                callback = function()
                    vim.api.nvim_set_hl(0, "TabLine", { bg = "#3c3836", fg = "#89b482" })
                    vim.api.nvim_set_hl(0, "TabLineFil", { bg = "#1d2021" })
                    vim.api.nvim_set_hl(0, "TabLineSel", { bold = true, bg = "none", fg = "#d8a657" })
                    -- color of statusline
                    vim.api.nvim_set_hl(0, "StatusLine", { bold = false, bg = "#1d2021", fg = "#89b482" })
                    vim.api.nvim_set_hl(0, "StatusLineNC", { bg = "#1d2021", fg = "#5b534d" })
                    -- color of vertical split line
                    vim.api.nvim_set_hl(0, "VertSplit", { bg = "#141617", fg = "#141617" })
                    -- color of the cursorline and cursorlinenumber
                    vim.api.nvim_set_hl(0, "Cursorline", { bg = "#141617" })
                    vim.api.nvim_set_hl(0, "CursorLineNr", { bold = true, bg = "#141617", fg = "#d8a657" })
                    -- color of Floats and FloatBorders
                    vim.api.nvim_set_hl(0, "NormalFloat", { bg = none, fg = none })
                    vim.api.nvim_set_hl(0, "FloatBorder", { bg = none, fg = "#d4be98" })
                    vim.api.nvim_set_hl(0, "DiagnosticFloatingWarn", { bg = none, fg = "#d8a657" })
                    vim.api.nvim_set_hl(0, "DiagnosticFloatingError", { bg = none, fg = "#ea6962" })
                    vim.api.nvim_set_hl(0, "DiagnosticFloatingHint", { bg = none, fg = "#a9b665" })
                    vim.api.nvim_set_hl(0, "DiagnosticFloatingInfo", { bg = none, fg = "#d4be98" })
                end,
            })
        end,
    },
}
