nix-community.nixvim/wrappers/standalone.nix

66 lines
1.5 KiB
Nix
Raw Normal View History

2024-05-05 19:39:35 +02:00
default_pkgs:
{ self, getHelpers }:
2024-05-05 19:39:35 +02:00
{
pkgs ? default_pkgs,
2024-05-05 19:39:35 +02:00
extraSpecialArgs ? { },
_nixvimTests ? false,
module,
2024-05-05 19:39:35 +02:00
}:
let
inherit (pkgs) lib;
helpers = getHelpers pkgs _nixvimTests;
shared = import ./_shared.nix helpers {
inherit pkgs lib;
2024-05-05 19:39:35 +02:00
config = { };
};
2024-05-05 19:39:35 +02:00
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;
2024-05-05 19:39:35 +02:00
mkNvim =
mod:
let
evaledModule = lib.evalModules {
modules = [
mod
{ wrapRc = true; }
] ++ shared.topLevelModules;
specialArgs = {
inherit helpers;
defaultPkgs = pkgs;
} // extraSpecialArgs;
};
config = handleAssertions evaledModule.config;
2024-05-05 19:39:35 +02:00
in
(pkgs.symlinkJoin {
name = "nixvim";
2024-05-05 19:39:35 +02:00
paths = [
config.finalPackage
config.printInitPackage
] ++ pkgs.lib.optional config.enableMan self.packages.${pkgs.stdenv.hostPlatform.system}.man-docs;
meta.mainProgram = "nvim";
})
// rec {
inherit config;
inherit (evaledModule) options;
extend =
2024-05-05 19:39:35 +02:00
extension:
mkNvim {
imports = [
mod
extension
];
};
nixvimExtend = lib.warn "<nixvim>.nixvimExtend has been renamed to <nixvim>.extend" extend;
};
in
2024-05-05 19:39:35 +02:00
mkNvim module