return {
    "folke/snacks.nvim",
    lazy = false,
    opts = {
        gitbrowse = {
            open = function(url)
                vim.fn.setreg('+', url)  -- Copy to clipboard
            end
        },
        bigfile = { enabled = true },
        explorer = { enabled = true },
        indent = {
            enabled = true,
            animate = { enabled = false },
            scope = {
                enabled = true,
            },
            chunck = {
                enabled = true,
            }
        },
        input = { enabled = true },
        picker = { enabled = true },
        notifier = { enabled = true },
        quickfile = { enabled = true },
        -- image = { enabled = true },
        scope = {
            enabled = true,
            keys = {
                textobject = {
                    ii = {
                        min_size = 2, -- minimum size of the scope
                        edge = false, -- inner scope
                        cursor = false,
                        treesitter = { blocks = { enabled = false } },
                        desc = "inner scope",
                    },
                    ai = {
                        cursor = false,
                        min_size = 2, -- minimum size of the scope
                        treesitter = { blocks = { enabled = false } },
                        desc = "full scope",
                    },
                },
                jump = {
                    ["gt"] = {
                        min_size = 1, -- allow single line scopes
                        bottom = false,
                        cursor = false,
                        edge = true,
                        treesitter = { blocks = { enabled = false } },
                        desc = "jump to top edge of scope",
                    },
                    ["gb"] = {
                        min_size = 1, -- allow single line scopes
                        bottom = true,
                        cursor = false,
                        edge = true,
                        treesitter = { blocks = { enabled = false } },
                        desc = "jump to bottom edge of scope",
                    },
                }
            }
        },
        statuscolumn = { enabled = true },
        words = {
            enabled = true,
            debounce = 20,
        },
    },
    config = function(_, opts)
        vim.api.nvim_create_user_command("GitLink", function()
            require("snacks").gitbrowse()
        end, {})
        vim.api.nvim_create_user_command("GitBlameLine", function()
            require("snacks").git.blame_line()
        end, {})
        require("snacks").setup(opts)
    end,
    keys = {
        {"<leader>t", function() require("snacks").explorer() end},
        {"<c-m>", function() require("snacks").picker.lsp_symbols({layout = {preset = "right"}, focus="list"}) end},
        {"<c-s-m>", function() require("snacks").picker.lsp_workspace_symbols({layout = {preset = "vertical"}}) end},
        {"<c-space>", function() require("snacks").picker.recent({layout = {preset = "vertical"}}) end},
        {"<c-cr>", function() require("snacks").picker({layout = {preset = "vscode"}}) end},
        {"<c-s-cr>", function() require("snacks").picker.commands({layout = {preset = "vscode"}}) end},
        {"<c-p>", function() require("snacks").picker.git_files({layout = {preset = "vscode"}}) end},
        {"<c-o>", function() require("snacks").picker.buffers({layout = {preset = "vscode"}}) end},
        {"<c-f>", function() require("snacks").picker.grep({layout = {preset = "vertical"}}) end},
        {"<c-n>", function() require("snacks").words.jump(1) end},
        {"<c-b>", function() require("snacks").words.jump(-1) end},
    }
}