return {
    -- fuzzy finder
    "nvim-telescope/telescope.nvim",
    dependencies = {
        "nvim-lua/plenary.nvim",
        {
            "nvim-telescope/telescope-live-grep-args.nvim",
            -- This will not install any breaking changes.
            -- For major updates, this must be adjusted manually.
            version = "^1.0.0",
        },
    },
    keys = {
        {
            "<leader>ff",
            function()
                require("telescope.builtin").find_files()
            end,
            desc = "Telescope find files",
        },

        {
            "<leader>flg",
            function()
                require("telescope.builtin").live_grep()
            end,
            desc = "Telescope live grep",
        },

        {
            "<leader>fg",
            function()
                require("telescope").extensions.live_grep_args.live_grep_args()
            end,
            desc = "Telescope live grep args",
        },

        {
            "<leader>fb",
            function()
                require("telescope.builtin").buffers()
            end,
            desc = "Telescope buffers",
        },

        {
            "<leader>fh",
            function()
                require("telescope.builtin").help_tags()
            end,
            desc = "Telescope nvim functions",
        },

        { "<leader>ft",  ":TodoTelescope<CR>",             desc = "Telescope TODOs" },

        -- Git
        {
            "<leader>fld",
            function()
                require("telescope.builtin").git_status()
            end,
            desc = "Telescope git diff",
        },

        {
            "<leader>flc",
            function()
                require("telescope.builtin").git_commits()
            end,
            desc = "Telescope git commits",
        },

        {
            "<leader>flf",
            function()
                require("telescope.builtin").git_files()
            end,
            desc = "Telescope git files",
        },

        -- Recent Commands
        { "<leader>foc", ":Telescope command_history<CR>", desc = "Telescope recent commands" },

        -- Recent Searches
        { "<leader>fos", ":Telescope search_history<CR>",  desc = "Telescope recent searches" },

        -- Old Files
        {
            "<leader>fr",
            function()
                require("telescope.builtin").oldfiles()
            end,
            desc = "Telescope recent files",
        },

        -- Quickfix Items
        { "<leader>fq", ":Telescope quickfix<CR>",            desc = "Telescope quickfix items" },

        -- Spell Suggestions
        { "<leader>fs", ":Telescope spell_suggest<CR>",       desc = "Telescope spellsuggestions" },

        -- Diagnostics
        { "<leader>fd", ":Telescope diagnostics<CR>",         desc = "Telescope Diagnostics" },

        -- Notifications
        { "<leader>fn", ":Telescope notify<CR>",              desc = "Telescope Notifications" },

        -- Implementations
        { "<leader>fi", ":Telescope lsp_implementations<CR>", desc = "Telescope lsp implementations" },
    },
    config = function()
        local actions = require("telescope.actions")
        local telescope = require("telescope")
        local lga_actions = require("telescope-live-grep-args.actions")

        telescope.setup({
            defaults = {
                mappings = {
                    i = {
                        ["<C-j>"] = actions.move_selection_next,
                        ["<C-k>"] = actions.move_selection_previous,
                        ["<C-q>"] = actions.smart_add_to_qflist,
                        ["<C-A-q>"] = actions.smart_send_to_qflist,
                        ["<C-Space>"] = lga_actions.quote_prompt(),
                    },
                },
                path_display = { "truncate" },
            },
            extensions = {
                frecency = {
                    db_safe_mode = false,
                    matcher = "fuzzy",
                },
            },
        })

        telescope.load_extension("live_grep_args")
    end,
}
