{ pkgs, lib, }: { name ? "nvim", plugins ? [ ], packages ? [ ], wrapRc ? true, }: let isNvim = (name == "nvim"); nvimRtp = pkgs.stdenv.mkDerivation { name = "nvim-rtp"; src = ../nvim; installPhase = '' mkdir -p $out/ cp -r . $out/ ''; }; wrapperArgs = '' --set NVIM_APPNAME "${name}" --prefix PATH : "${lib.makeBinPath packages}" --set LIBSQLITE_CLIB_PATH "${pkgs.sqlite.out}/lib/libsqlite3.so" --set LIBSQLITE "${pkgs.sqlite.out}/lib/libsqlite3.so" ''; neovimConfig = pkgs.neovimUtils.makeNeovimConfig { wrapRc = wrapRc; withPython3 = false; vimAlias = isNvim; plugins = (pkgs.neovimUtils.normalizePlugins plugins); customLuaRC = ''vim.opt.rtp:prepend('${nvimRtp}')'' + builtins.readFile ../nvim/init.lua; extraMakeWrapperArgs = wrapperArgs; }; in (pkgs.wrapNeovimUnstable pkgs.neovim-unwrapped (neovimConfig)).overrideAttrs (oa: { buildPhase = oa.buildPhase + lib.optionalString (!isNvim) ''mv $out/bin/nvim $out/bin/${name}''; })