{"id":35832440,"url":"https://github.com/cosmicbuffalo/super_lazy.nvim","last_synced_at":"2026-01-16T07:57:31.444Z","repository":{"id":318971571,"uuid":"1073953407","full_name":"cosmicbuffalo/super_lazy.nvim","owner":"cosmicbuffalo","description":"Extension for lazy.nvim to enable management of multiple lockfiles across multiple configuration repos","archived":false,"fork":false,"pushed_at":"2026-01-12T23:11:55.000Z","size":101,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T03:11:22.568Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cosmicbuffalo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-10T22:16:29.000Z","updated_at":"2026-01-07T15:02:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"57440d0e-4ad0-463b-b294-6698d6374fa0","html_url":"https://github.com/cosmicbuffalo/super_lazy.nvim","commit_stats":null,"previous_names":["cosmicbuffalo/super_lazy.nvim"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/cosmicbuffalo/super_lazy.nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosmicbuffalo%2Fsuper_lazy.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosmicbuffalo%2Fsuper_lazy.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosmicbuffalo%2Fsuper_lazy.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosmicbuffalo%2Fsuper_lazy.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cosmicbuffalo","download_url":"https://codeload.github.com/cosmicbuffalo/super_lazy.nvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosmicbuffalo%2Fsuper_lazy.nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28410072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-07T23:00:32.479Z","updated_at":"2026-01-14T05:00:46.824Z","avatar_url":"https://github.com/cosmicbuffalo.png","language":"Lua","funding_links":[],"categories":["Plugin Manager"],"sub_categories":[],"readme":"# super_lazy.nvim\n\nA Neovim plugin that extends [lazy.nvim](https://github.com/folke/lazy.nvim) to support **multiple lockfiles**, enabling separation of plugin configurations across multiple repositories.\n\n## Features\n\n- **Multi Lockfile Management**: Automatically maintain separate `lazy-lock.json` files for different plugin sources (e.g., shared team config vs. personal config)\n- **Source Detection**: Intelligent detection of which repository each plugin belongs to\n- **UI Integration**: Enhanced lazy.nvim UI showing the source repository for each plugin\n- **Recipe/Package Support**: Handles plugins defined within other plugins' `lazy.lua` files\n- **Health Check**: Built-in `:checkhealth super_lazy` for validating setup and version compatibility\n- **Smart Caching**: Optimized performance through intelligent caching mechanisms\n\n## Use Cases\n\n- **Team Configurations**: Separate shared team plugins from personal ones\n- **Dotfiles Management**: Keep work and personal configurations separate\n- **Multi-Machine Setups**: Maintain different plugin sets for different environments\n- **Monorepo Setups**: Manage plugins across multiple configuration repositories\n\n## Requirements\n\n- Neovim \u003e= 0.8.0\n- [lazy.nvim](https://github.com/folke/lazy.nvim) \u003e= 11.17.5\n\n## Installation\n\nInstall using lazy.nvim:\n\n```lua\n{\n  \"cosmicbuffalo/super_lazy.nvim\",\n  lazy = false,  -- Must be loaded immediately to hook into lazy.nvim\n  opts = {\n    -- add your list of repo root directories for lockfile management here\n    lockfile_repo_dirs = {\n      vim.fn.stdpath(\"config\"),\n      -- configure additional config repo paths here\n    }\n  }\n}\n```\n\n## Usage example\n\nIf your config structure looks something like this:\n\n```\n~/.config/nvim/             (main config repo)\n├── init.lua\n├── lazy-lock.json          (auto-generated main repo lockfile)\n└── lua/\n    ├── personal/           (nested config repo)\n    │   ├── lazy-lock.json  (auto-generated nested repo lockfile)\n    │   └── plugins/\n    │       └── foo.lua     (nested repo plugin spec)\n    └── plugins/\n        └── bar.lua         (main repo plugin spec)\n```\n\nEnsure that your lockfile repo dirs are set in your super_lazy plugin spec (see Installation above):\n```lua\n{\n    lockfile_repo_dirs = {\n        vim.fn.stdpath(\"config\"),\n        vim.fn.stdpath(\"config\") .. \"/lua/personal\",\n    }\n}\n```\n\nAnd ensure that you are loading both plugin locations in your lazy setup:\n\n```lua\n-- Inside ~/.config/nvim/init.lua\n-- refer to docs for lazy.nvim for full bootstrap setup\nrequire(\"lazy\").setup({\n    spec = {\n        { import = \"plugins\" },\n        { import = \"personal.plugins\" },\n    }\n})\n```\n\nIn the above configuration example, plugins that come from the nested `personal/` repo will be \nsaved into the lockfile in that repo and plugins that come from the main config repo will be saved\ninto the lockfile at the root of the main config directory\n\n## How It Works\n\n1. **Hook Integration**: super_lazy.nvim hooks into lazy.nvim's lockfile update mechanism\n2. **Source Detection**: When lazy.nvim updates, super_lazy determines which repository each plugin belongs to\n3. **Lockfile Generation**: Separate lockfiles are written to each configured repository directory\n4. **UI Enhancement**: The lazy.nvim UI is enhanced to show the source repository for each plugin\n\n### Source Detection Logic\n\nFor each plugin, super_lazy.nvim:\n1. Searches for plugin specifications in the configured `lockfile_repo_dirs`\n2. Checks plugin files matching the pattern `**/plugins/**/*.lua`\n3. For plugins defined in recipes/packages (other plugins' `lazy.lua` files), tracks the parent plugin\n4. Assigns the plugin to the first matching repository\n\n### Known Limitations\n\nThis plugin essentially works by piggybacking on top of the existing `lazy.nvim` plugin manager's functionality and stepping in after the main repo's lockfile has been updated by `lazy.nvim` to layer on logic around splitting the lockfile across multiple repos. Due to this, there are some known limitations in behavior of this plugin:\n\n- `Lazy` expects one plugin to have one version\n  - Plugins that exist in multiple config repos with different versions are not handled by Lazy - only the version in the main config repo will be visible to Lazy on restore, and only the installed version will be written to lockfiles on updates\n- `Lazy` only reads the main config repo's lockfile for restore operations\n  - For any plugins located in additional config repos, they will be updated to the latest commit on their configured branch during a restore operation instead of to the version in their respective config repo's lockfile\n\n\u003e [!NOTE]\n\u003e These limitations may be solveable by `super_lazy.nvim`, but the current state of this plugin does not address these limitations. \n\n## Troubleshooting\n\n### Health Check\n\nRun the health check to verify your setup:\n\n```vim\n:checkhealth super_lazy\n```\n\nThis will check:\n- Neovim version compatibility\n- lazy.nvim installation and version\n- Configuration validity\n- Repository directory structure\n- Plugin file detection\n\n### Version Compatibility\n\nsuper_lazy.nvim requires lazy.nvim version 11.17.5. Use `:checkhealth super_lazy` to verify your lazy.nvim version and get specific guidance if there's a mismatch.\n\n### Plugin Not Found Error\n\nIf you get an error like:\n```\nPlugin 'plugin-name' not found in any configured lockfile repository\n```\n\nEnsure:\n1. The plugin is defined in one of your `lockfile_repo_dirs`\n2. The plugin file is in a `plugins/` directory\n3. The plugin specification follows the correct format laid out by `lazy.nvim`'s [Plugin Spec](https://lazy.folke.io/spec)\n\n### Clear Caches\n\nIf you experience unexpected behavior after configuration changes:\n\n```lua\nrequire(\"super_lazy.cache\").clear_all()\n```\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development\n\n- Run tests: `make test` (requires plenary.nvim)\n- Format code: `stylua lua/` (uses included stylua.toml)\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details\n\n## Acknowledgments\n\n- [lazy.nvim](https://github.com/folke/lazy.nvim) by [@folke](https://github.com/folke) - The excellent plugin manager this extends\n\n## Support\n\n- **Issues**: [GitHub Issues](https://github.com/cosmicbuffalo/super_lazy.nvim/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/cosmicbuffalo/super_lazy.nvim/discussions)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosmicbuffalo%2Fsuper_lazy.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcosmicbuffalo%2Fsuper_lazy.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcosmicbuffalo%2Fsuper_lazy.nvim/lists"}