return {
	{ 'jghauser/mkdir.nvim', lazy = false },
	{
		"willothy/nvim-cokeline",
		dependencies = {
			"nvim-lua/plenary.nvim", -- Required for v0.4.0+
			"nvim-tree/nvim-web-devicons", -- If you want devicons
			{
				"stevearc/resession.nvim",
				config = function()
					local resession = require("resession")
					resession.setup()
					-- Resession does NOTHING automagically, so we have to set up some keymaps
					vim.keymap.set("n", "<leader>ss", resession.save)
					vim.keymap.set("n", "<leader>sl", resession.load)
					vim.keymap.set("n", "<leader>sd", resession.delete)
				end
			} -- Optional, for persistent history
		},
		event = "VeryLazy",
		keys = {
			{ 'gp', "<Plug>(cokeline-focus-prev)", desc = 'next buffer' },
			{ 'gn', "<Plug>(cokeline-focus-next)", desc = 'next buffer' },
		},
		-- opts = {},
		config = function()
			local get_hex = require('cokeline.hlgroups').get_hl_attr

			require('cokeline').setup({
				default_hl = {
					fg = function(buffer)
						return
						    buffer.is_focused
						    and get_hex('Normal', 'fg')
						    or get_hex('Comment', 'fg')
					end,
					bg = 'NONE',
				},
				components = {
					{
						text = function(buffer) return (buffer.index ~= 1) and '▏' or '' end,
						fg = function() return get_hex('Normal', 'fg') end
					},
					{
						text = function(buffer) return '    ' .. buffer.devicon.icon end,
						fg = function(buffer) return buffer.devicon.color end,
					},
					{
						text = function(buffer) return buffer.filename .. '    ' end,
						bold = function(buffer) return buffer.is_focused end
					},
					{
						text = '󰖭',
						on_click = function(_, _, _, _, buffer)
							buffer:delete()
						end
					},
					{
						text = '  ',
					},
				},
			})
		end
	},
	{
		"willothy/flatten.nvim",
		opts = function()
			---@type Terminal?
			local saved_terminal

			return {
				window = {
					open = "alternate",
				},
				callbacks = {
					should_block = function(argv)
						-- Note that argv contains all the parts of the CLI command, including
						-- Neovim's path, commands, options and files.
						-- See: :help v:argv

						-- In this case, we would block if we find the `-b` flag
						-- This allows you to use `nvim -b file1` instead of
						-- `nvim --cmd 'let g:flatten_wait=1' file1`
						return vim.tbl_contains(argv, "-b")

						-- Alternatively, we can block if we find the diff-mode option
						-- return vim.tbl_contains(argv, "-d")
					end,
					pre_open = function()
						local term = require("toggleterm.terminal")
						local termid = term.get_focused_id()
						saved_terminal = term.get(termid)
					end,
					post_open = function(bufnr, winnr, ft, is_blocking)
						if is_blocking and saved_terminal then
							-- Hide the terminal while it's blocking
							saved_terminal:close()
						else
							-- If it's a normal file, just switch to its window
							vim.api.nvim_set_current_win(winnr)
							-- vim.api.nvim_set_current_bufnr(bufnr)

							-- If we're in a different wezterm pane/tab, switch to the current one
							-- Requires willothy/wezterm.nvim
							-- require("wezterm").switch_pane.id(
							-- 	tonumber(os.getenv("WEZTERM_PANE"))
							-- )
						end

						-- If the file is a git commit, create one-shot autocmd to delete its buffer on write
						-- If you just want the toggleable terminal integration, ignore this bit
						if ft == "gitcommit" or ft == "gitrebase" then
							vim.api.nvim_create_autocmd("BufWritePost", {
								buffer = bufnr,
								once = true,
								callback = vim.schedule_wrap(function()
									vim.api.nvim_buf_delete(bufnr, {})
								end),
							})
						end
					end,
					block_end = function()
						-- After blocking ends (for a git commit, etc), reopen the terminal
						vim.schedule(function()
							if saved_terminal then
								saved_terminal:open()
								saved_terminal = nil
							end
						end)
					end,
				},
			}
		end,
		-- or pass configuration with
		-- opts = {  }
		-- Ensure that it runs first to minimize delay when opening file from terminal
		lazy = false,
		priority = 1001,
	},
}
