nvim.nix/nix/mkNeovim.nix
2025-10-07 01:59:28 -05:00

40 lines
1 KiB
Nix

{
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}'';
})