mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
Used for - mkVimPlugin: extraConfig - mkNeovimPlugin: extraConfig - mkLsp: extraConfig - mkLsp: settings - mkExtension (telecsope): extraConfig
65 lines
2.2 KiB
Nix
65 lines
2.2 KiB
Nix
{
|
|
lib,
|
|
self,
|
|
}:
|
|
let
|
|
removed = {
|
|
# Removed 2024-09-24
|
|
getAssertionMessages = "";
|
|
# Removed 2024-09-27
|
|
specialArgs = "It has been integrated into `evalNixvim`";
|
|
specialArgsWith = "It has been integrated into `evalNixvim`";
|
|
};
|
|
in
|
|
{
|
|
# Evaluate nixvim modules, checking warnings and assertions
|
|
evalNixvim =
|
|
{
|
|
modules ? [ ],
|
|
extraSpecialArgs ? { },
|
|
check ? null, # TODO: Remove stub
|
|
}@args:
|
|
# TODO: `check` argument removed 2024-09-24
|
|
# NOTE: this argument was always marked as experimental
|
|
assert lib.assertMsg (!args ? "check")
|
|
"`evalNixvim`: passing `check` is no longer supported. Checks are now done when evaluating `config.build.package` and can be avoided by using `config.build.packageUnchecked` instead.";
|
|
# Ensure a suitable `lib` is used
|
|
# TODO: offer a lib overlay that end-users could use to apply nixvim's extensions to their own `lib`
|
|
assert lib.assertMsg (extraSpecialArgs ? lib -> extraSpecialArgs.lib ? nixvim) ''
|
|
Nixvim requires a lib that includes some custom extensions, however the `lib` from `specialArgs` does not have a `nixvim` attr.
|
|
Remove `lib` from nixvim's `specialArgs` or ensure you apply nixvim's extensions to your `lib`.'';
|
|
lib.evalModules {
|
|
modules = [ ../modules/top-level ] ++ modules;
|
|
specialArgs = {
|
|
inherit lib;
|
|
# TODO: deprecate `helpers`
|
|
helpers = self;
|
|
} // extraSpecialArgs;
|
|
};
|
|
|
|
/**
|
|
Apply an `extraConfig` definition, which should produce a `config` definition.
|
|
As used by `mkVimPlugin` and `mkNeovimPlugin`.
|
|
|
|
The result will be wrapped using a `mkIf` definition.
|
|
*/
|
|
applyExtraConfig =
|
|
{
|
|
extraConfig,
|
|
cfg,
|
|
opts,
|
|
enabled ? cfg.enable or (throw "`enabled` argument not provided and no `cfg.enable` option found."),
|
|
}:
|
|
let
|
|
maybeApply = x: maybeFn: if builtins.isFunction maybeFn then maybeFn x else maybeFn;
|
|
in
|
|
lib.pipe extraConfig [
|
|
(maybeApply cfg)
|
|
(maybeApply opts)
|
|
(lib.mkIf enabled)
|
|
];
|
|
}
|
|
// lib.mapAttrs (
|
|
name: msg:
|
|
throw ("`modules.${name}` has been removed." + lib.optionalString (msg != "") (" " + msg))
|
|
) removed
|