return {
  'ellisonleao/gruvbox.nvim',
  config = function()
    require('gruvbox').setup {
      contrast = 'hard',
      transparent_mode = true,
      overrides = {
        SignColumn = { bg = 'none' },
        GruvboxRedSign = { fg = '#cc241d', bg = 'none', reverse = false },
        GruvboxGreenSign = { fg = '#98971a', bg = 'none', reverse = false },
        GruvboxYellowSign = { fg = '#d79921', bg = 'none', reverse = false },
        GruvboxBlueSign = { fg = '#458588', bg = 'none', reverse = false },
        GruvboxPurpleSign = { fg = '#b16286', bg = 'none', reverse = false },
        GruvboxAquaSign = { fg = '#689d6a', bg = 'none', reverse = false },
        GruvboxOrangeSign = { fg = '#d65d0e', bg = 'none', reverse = false },
      },
    }
    vim.cmd 'colorscheme gruvbox'

    vim.api.nvim_set_hl(0, 'LspDiagnosticsLineNrError', { fg = '#FF0000', bg = '#51202A', bold = true })
    vim.api.nvim_set_hl(0, 'LspDiagnosticsLineNrWarn', { fg = '#FFA500', bg = '#51412A', bold = true })
    vim.api.nvim_set_hl(0, 'LspDiagnosticsLineNrInfo', { fg = '#00FFFF', bg = '#1E535D', bold = true })
    vim.api.nvim_set_hl(0, 'LspDiagnosticsLineNrHint', { fg = '#008bbd', bg = '#1E205D', bold = true })

    vim.api.nvim_set_hl(0, 'CmpPmenuBorder', { fg = '#615750' })
    vim.api.nvim_set_hl(0, 'PmenuSel', { bg = '#282C34', fg = 'NONE' })
    vim.api.nvim_set_hl(0, 'Pmenu', { fg = '#C5CDD9', bg = '#22252A' })
    vim.api.nvim_set_hl(0, 'CmpItemAbbrDeprecated', { fg = '#076678', bg = 'NONE', strikethrough = true })
    vim.api.nvim_set_hl(0, 'CmpItemAbbrMatch', { fg = '#82AAFF', bg = 'NONE', bold = true })
    vim.api.nvim_set_hl(0, 'CmpItemAbbrMatchFuzzy', { fg = '#82AAFF', bg = 'NONE', bold = true })
    vim.api.nvim_set_hl(0, 'CmpItemMenu', { fg = '#C792EA', bg = 'NONE', italic = true })
    vim.api.nvim_set_hl(0, 'CmpItemKindField', { fg = '#EED8DA', bg = '#af3a03' })
    vim.api.nvim_set_hl(0, 'CmpItemKindProperty', { fg = '#EED8DA', bg = '#af3a03' })
    vim.api.nvim_set_hl(0, 'CmpItemKindEvent', { fg = '#EED8DA', bg = '#af3a03' })
    vim.api.nvim_set_hl(0, 'CmpItemKindText', { fg = '#C3E88D', bg = '#79740e' })
    vim.api.nvim_set_hl(0, 'CmpItemKindEnum', { fg = '#C3E88D', bg = '#79740e' })
    vim.api.nvim_set_hl(0, 'CmpItemKindKeyword', { fg = '#C3E88D', bg = '#79740e' })
    vim.api.nvim_set_hl(0, 'CmpItemKindConstant', { fg = '#FFE082', bg = '#d65d0e' })
    vim.api.nvim_set_hl(0, 'CmpItemKindConstructor', { fg = '#FFE082', bg = '#d65d0e' })
    vim.api.nvim_set_hl(0, 'CmpItemKindReference', { fg = '#FFE082', bg = '#d65d0e' })
    vim.api.nvim_set_hl(0, 'CmpItemKindFunction', { fg = '#EADFF0', bg = '#8f3f71' })
    vim.api.nvim_set_hl(0, 'CmpItemKindStruct', { fg = '#EADFF0', bg = '#8f3f71' })
    vim.api.nvim_set_hl(0, 'CmpItemKindClass', { fg = '#EADFF0', bg = '#8f3f71' })
    vim.api.nvim_set_hl(0, 'CmpItemKindModule', { fg = '#EADFF0', bg = '#8f3f71' })
    vim.api.nvim_set_hl(0, 'CmpItemKindOperator', { fg = '#EADFF0', bg = '#8f3f71' })
    vim.api.nvim_set_hl(0, 'CmpItemKindVariable', { fg = '#C5CDD9', bg = '#076678' })
    vim.api.nvim_set_hl(0, 'CmpItemKindFile', { fg = '#C5CDD9', bg = '#076678' })
    vim.api.nvim_set_hl(0, 'CmpItemKindUnit', { fg = '#F5EBD9', bg = '#b57614' })
    vim.api.nvim_set_hl(0, 'CmpItemKindSnippet', { fg = '#F5EBD9', bg = '#b57614' })
    vim.api.nvim_set_hl(0, 'CmpItemKindFolder', { fg = '#F5EBD9', bg = '#b57614' })
    vim.api.nvim_set_hl(0, 'CmpItemKindMethod', { fg = '#DDE5F5', bg = '#34608d' })
    vim.api.nvim_set_hl(0, 'CmpItemKindValue', { fg = '#DDE5F5', bg = '#34608d' })
    vim.api.nvim_set_hl(0, 'CmpItemKindEnumMember', { fg = '#DDE5F5', bg = '#34608d' })
    vim.api.nvim_set_hl(0, 'CmpItemKindInterface', { fg = '#D8EEEB', bg = '#427b58' })
    vim.api.nvim_set_hl(0, 'CmpItemKindColor', { fg = '#D8EEEB', bg = '#427b58' })
    vim.api.nvim_set_hl(0, 'CmpItemKindTypeParameter', { fg = '#D8EEEB', bg = '#427b58' })
  end,
}
