A neovim 0.12.x plugin manager with native vim.pack.add support and easy setup
Find a file
2026-07-20 12:25:29 +02:00
lua/foo fixing some configs to serve dynamic live config (some plugins are not able to show their config) 2026-07-20 12:25:29 +02:00
README.md wip 2026-07-18 21:51:49 +02:00

foo

how to add plugins

  • simple/manual:

    local foo = require("foo")
    
    foo:add({
      "mason-org/mason.nvim", -- github slug will prepend https://github.com/ automatically
      opts = {} -- opts is just the config. Like in lazy, this gets called with mod.setup(opts)
    })
    
  • dependencies:

    pm:add({
      "WhoIsSethDaniel/mason-tool-installer.nvim",
      opts = { -- also just the config for this module
          ensure_installed = {
            "shfmt",
            "shellcheck",
          },
      },
      deps = { -- call dependencies + config
        "mason-org/mason.nvim",
        opts = {},
      },
    })
    
  • auto plugin imports:

    local pm = require("foo"):init({
      plugins = "pika.plugins", -- this will look under your neovim location, then lua/pika/plugins (for this example)
      debug = false,
    })
    
    pm.setup()
    

    Note

    Configuration files can be just placed in the plugin folder, to automatically get pulled in and installed with the config you provided. It has a fairly lazy-nvim oriented layout:

    return {
      "WhoIsSethDaniel/mason-tool-installer.nvim", -- resolves to https://github.com/WhoIsSeth...
      opts = { -- gets called with .setup(opts)
        ensure_installed = {
          "shfmt",
          "shellcheck",
        },
      },
      deps = {
        "mason-org/mason.nvim",
        after = function() -- gets called after the plugin was loaded
          vim.keymap.set("n", "<leader>M", ":Mason<cr>")
        end
      },
    }