return {
  "nvim-lualine/lualine.nvim",
  dependencies = {
    "nvim-tree/nvim-web-devicons",
  },
  config = function()
    -- Inspired by https://github.com/nvim-lualine/lualine.nvim/blob/master/examples/evil_lualine.lua
    local rgb_to_hex = require"util.rgb_to_hex"
    local hl = require"util.hl"
    local config = {
      options = {
        component_separators = "",
        section_separators = "",
        theme = {
          normal = {
            c = {
              fg = rgb_to_hex(hl("Normal").fg),
              bg = rgb_to_hex(hl("Normal").bg),
            },
          },
          inactive = {
            c = {
              fg = rgb_to_hex(hl("Normal").fg),
              bg = rgb_to_hex(hl("Normal").bg),
            },
          },
        },
      },
      sections = {
        lualine_a = {}, lualine_b = {}, lualine_y = {}, lualine_z = {}, -- Remove defaults
        lualine_c = {}, lualine_x = {}, -- Extend these later
      },
      inactive_sections = {
        lualine_a = {}, lualine_b = {}, lualine_c = {}, lualine_x = {}, lualine_y = {}, lualine_z = {},
      },
    }

    local function buffer_not_empty()
      return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
    end

    local function ins_l(component)
      table.insert(config.sections.lualine_c, component)
    end

    local function ins_r(component)
      table.insert(config.sections.lualine_x, component)
    end

    local distro = require"util.get_distro"()

    ins_l {
      function()
        return "▊"
      end,
      padding = {
        left = 0,
        right = 0,
      },
      color = {
        fg = rgb_to_hex(hl("Comment").fg),
      },
    }

    ins_l {
      function()
        return distro.traits.icon
      end,
      color = {
        fg = distro.traits.color,
      },
    }

    ins_l {
      "filename",
      cond = buffer_not_empty,
      color = {
        fg = rgb_to_hex(hl("Operator").fg),
      }
    }

    ins_l {
      "filesize",
      cond = buffer_not_empty,
    }

    ins_l {
      "o:encoding",
      cond = buffer_not_empty,
    }

    ins_l {
      "fileformat",
      icons_enabled = false,
      cond = buffer_not_empty,
    }

    ins_r { "diagnostics" }
    ins_r { "diff" }

    ins_r {
      "branch",
      padding = {
        right = 0,
      },
      color = {
        fg = rgb_to_hex(hl("Constant").fg)
      }
    }

    ins_r {
      "location",
    }

    ins_r {
      "mode",
      fmt = string.lower,
      color = {
        fg = rgb_to_hex(hl("String").fg),
      }
    }

    ins_r {
      function()
        return "▊"
      end,
      padding = {
        left = 0,
        right = 0,
      },
      color = {
        fg = rgb_to_hex(hl("Comment").fg),
      }
    }

    require"lualine".setup(config)
  end
}

