lib/modules: add evalNixvim

Evaluates a nixvim config, by default also checking warnings and assertions.

This used internally by the standalone wrapper.
This commit is contained in:
Matt Sturgeon 2024-08-04 21:54:17 +01:00
parent bc7a7ad1d6
commit 851edc8df1
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
2 changed files with 42 additions and 20 deletions

View file

@ -9,42 +9,30 @@ default_pkgs: self:
let
helpers = import ../lib/helpers.nix { inherit pkgs lib _nixvimTests; };
inherit (helpers.modules) specialArgsWith;
handleAssertions =
config:
let
failedAssertions = map (x: x.message) (lib.filter (x: !x.assertion) config.assertions);
in
if failedAssertions != [ ] then
throw "\nFailed assertions:\n${builtins.concatStringsSep "\n" (map (x: "- ${x}") failedAssertions)}"
else
lib.showWarnings config.warnings config;
inherit (helpers.modules) evalNixvim;
mkNvim =
mod:
let
evaledModule = lib.evalModules {
evaledModule = evalNixvim {
modules = [
mod
./modules/standalone.nix
../modules/top-level
];
specialArgs = specialArgsWith extraSpecialArgs;
inherit extraSpecialArgs;
};
config = handleAssertions evaledModule.config;
inherit (evaledModule.config) enableMan finalPackage printInitPackage;
in
(pkgs.symlinkJoin {
name = "nixvim";
paths = [
config.finalPackage
config.printInitPackage
] ++ pkgs.lib.optional config.enableMan self.packages.${pkgs.stdenv.hostPlatform.system}.man-docs;
finalPackage
printInitPackage
] ++ pkgs.lib.optional enableMan self.packages.${pkgs.stdenv.hostPlatform.system}.man-docs;
meta.mainProgram = "nvim";
})
// rec {
inherit config;
inherit (evaledModule) options;
inherit (evaledModule) config options;
extend =
extension:
mkNvim {