nix-community.nixvim/modules/top-level/plugins/byte-compile-lua-lib.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

44 lines
1.4 KiB
Nix
Raw Normal View History

/*
Byte compiling of lua dependencies of normalized plugin list
Inputs: List of normalized plugins
Outputs: List of normalized plugins with all the propagatedBuildInputs byte-compiled
*/
{ lib, pkgs }:
let
builders = lib.nixvim.builders.withPkgs pkgs;
inherit (import ./utils.nix lib) mapNormalizedPlugins;
luaPackages = pkgs.neovim-unwrapped.lua.pkgs;
# Applies a function to the derivation, but only if it's a lua module,
# otherwise returns it as is
mapLuaModule = f: drv: if luaPackages.luaLib.hasLuaModule drv then f drv else drv;
# Byte-compile only lua dependencies
byteCompileDeps =
drv:
lib.pipe drv [
(
drv:
if drv.dependencies or [ ] != [ ] then
drv.overrideAttrs { dependencies = map byteCompileDeps drv.dependencies; }
else
drv
)
(
drv:
if drv.propagatedBuildInputs or [ ] != [ ] then
drv.overrideAttrs { propagatedBuildInputs = map byteCompile drv.propagatedBuildInputs; }
else
drv
)
# 'toLuaModule' updates requiredLuaModules attr
# It works without it, but update it anyway for consistency
(mapLuaModule luaPackages.toLuaModule)
];
# Byte-compile derivation (but only if it's a lua module) and its dependencies
byteCompile = drv: byteCompileDeps (mapLuaModule builders.byteCompileLuaDrv drv);
in
mapNormalizedPlugins byteCompileDeps