Change:
One of the dependencies of the plugin, , is not found by the plugin: It is interesting, because the dependency is actually listed in the overrides: Please run and paste the result. Add a :+1: [reaction] to [issues you find important]. [reaction]: [issues you find important]:
should be solved by the PR linked in . Will take a few days before reaching unstable.
can you check if this still happens on unstable ?
yes, putting to nvim plugins and running will fail with the same error message: . See for explanation.
The way it is implemented in nixpkgs is that when the neovim wrapper creates the packpath directory with the plugins, it looks at the propagedBuildInputs and puts the lua dependencies into the LUA_PATH wrapped with neovim. wont work because it will copy middleclass files in the packpath directory with the prepended lua files. Either you convert to a neovim plugin (it takes the lua package and removes the lua folder prefixes) or you make a luarocks package. Uploading a rockspec to has the benefit that nixpkgs can automatically deduce its dependencies, same with and more recently It's quite easy to add a package to via NURR see
thanks this worked well, I updated . NURR seems interesting, I will look into it later. If this will be the preferred way of packaging neovim plugins with dependencies, should we start migrating plugins to luarocks?
if you look at maintainers/scripts/luarocks-, you will see there are already several neovim plugins packaged as luarocks plugins. And the approach seems to gain traction. I've edited the landing page of to explain what we want to achieve at neorocks. Adding the plugins to nurr is as easy as It would be best if the plugin author would take that task upon themselves via as described in my previous comment's link but that might be too early (do you think winmdows-nvim author would welcome the idea to put his plugin on luarocks ?). Then the luarocks packages can be to maintainers/scripts/luarocks- and the luarocks package set updated as per the documentation. Then as you did in your PR, you can add in . The nixpkgs side of things could be made less redundant I admit.
thanks for all of the info, it was pretty helpful. I published windows-nvim (and a few other plugins) to neorocks. I don't think so, they were very inactive in the project recently, and slightly active on GitHub. I took a look at a few plugins in the luarocks csv, namely , , and all of those are also in the generated vim plugin list. Are these luarock packages used anywhere? Then as you did in your PR, you can add in windows-nvim = buildNeovimPlugin { luaAttr = ""; }. The nixpkgs side of things could be made less redundant I admit. I'll do this soon.
They exist just to be converted into neovim plugins via . just installs the lua package with a different luarocks config that works natively with neovim. There has been a lot of improvements on the neovim and lua side in the last nixos release (and in the neovim plugin ecosystem in part thanks to neorocks) and I think we can do much better in terms of UX on the nix side. I've had ideas for years but this takes time :'(
I'm having some trouble with adding it as a lua module. There's , however using any of these for luarocks- makes the updater crash: or <details<summaryCrash log of luarocks-packages-updater</summary</detailsMain part of the error: (I tried to debug it, but I just don't understand the script: why is it trying to start a subprocess with ? command doesn't have a subcommand.)
ha I see. The updater uses a fork of luarocks: There is no stable version, just the scm version: which is why the converter doesn't find a version. Passing works: Not sure how to fix that properly in the nixpkgs luarocks updater though. Let me get back to you after work. For now you can put that definition in to unblock you and I will fix that in follow up PRs.
thanks for the many useful info again, but I think I should leave this to you. I tried to use your animation-nvim override, but doesn't eval so I commented it out. Even then I get another eval error. <details<summarydiff</summary</details<details<summarybuild log</summary</detailsThis is getting a little out of scope of the original issue, maybe you should create a new one for generally refactoring neovim plugins made in lua.
haha thanks for keeping up with me till then. The positive aspect is you can now install via lazy and with dependencies managed xD And the doc definitely needs updating. As for your problem, callPackage accepts a function followed by the overrides to pass to that function (typically ), you forgot to pass the overrides. See how readline does it

Discussion:
dependencies = with super; [ telescope-nvim vim-fugitive vim-rhubarb ]; }; <ins> animation-nvim = super.animation-nvim.overrideAttrs { dependencies = with self; [ middleclass ]; nvimRequireCheck = "animation"; }; </ins> autosave-nvim = super.autosave-nvim.overrideAttrs { dependencies = with super; [ plenary-nvim ]; };

meta.maintainers = with lib.maintainers; [ vcunat ]; }; <ins> middleclass = neovimUtils.buildNeovimPlugin { luaAttr = "middleclass"; nvimRequireCheck = "middleclass"; }; </ins> minimap-vim = super.minimap-vim.overrideAttrs { preFixup = '' substituteInPlace $out/plugin/minimap.vim 

}; windows-nvim = super.windows-nvim.overrideAttrs { <del> dependencies = with self; [ luaPackages.middleclass animation-nvim ]; </del> <ins> dependencies = with self; [ middleclass animation-nvim ]; nvimRequireCheck = "windows"; </ins> }; wtf-nvim = super.wtf-nvim.overrideAttrs {