return {
  'mfussenegger/nvim-lint',
  config = function()
    require('lint').linters_by_ft = {
      ['yaml.ansible'] = { 'ansible_lint' },
      bash = { 'shellcheck' },
      make = { 'checkmake' },
      cmake = { 'cmakelint' },
      cpp = { 'clangtidy' },
      c = { 'clangtidy' },
      editorconfig = { 'editorconfig-checker' },
      html = { 'tidy' },
      json = { 'jsonlint' },
      sql = { 'sqlfluff' },
      js = { 'standardjs' },
      css = { 'stylelint' },
      systemd = { 'systemdlint' },
      yaml = { 'yamllint' },
      zsh = { 'zsh' },
      python = { 'pylint', 'mypy' },
    }
    vim.api.nvim_create_autocmd({ 'BufWritePost' }, {
      callback = function()
        -- try_lint without arguments runs the linters defined in `linters_by_ft`
        -- for the current filetype
        require('lint').try_lint()
      end,
    })
  end,
}
