-
Notifications
You must be signed in to change notification settings - Fork 0
/
lib.nix
68 lines (66 loc) · 1.52 KB
/
lib.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
{
pkgs,
inputs,
}: let
inherit (pkgs.lib) evalModules;
in {
withPlugins = cond: plugins:
if cond
then plugins
else [];
writeIf = cond: msg:
if cond
then msg
else "";
boolStr = cond:
if cond
then "true"
else "false";
withAttrSet = cond: attrSet:
if cond
then attrSet
else {};
mkNeovim = {config}: let
lvim = opts.config.lvim;
opts = evalModules {
modules = [
{imports = [./modules];}
config
];
specialArgs = {inherit pkgs;};
};
in
pkgs.wrapNeovim pkgs.neovim-unwrapped {
withNodeJs = true;
withPython3 = true;
configure = {
customRC = lvim.configRC;
packages.myVimPackage = {
start = lvim.startPlugins;
opt = lvim.optPlugins;
};
};
};
buildPluginOverlay = super: self: let
inherit (pkgs.lib.lists) last;
inherit (pkgs.lib.strings) splitString;
inherit (pkgs.lib.attrsets) attrByPath;
inherit (builtins) attrNames getAttr listToAttrs filter;
inherit (self.vimUtils) buildVimPluginFrom2Nix;
isPlugin = n: n != "nixpkgs" && n != "flake-utils";
plugins = filter isPlugin (attrNames inputs);
buildPlug = name:
buildVimPluginFrom2Nix {
pname = name;
version = last (splitString "/" (attrByPath [name "url"] "HEAD" inputs));
src = getAttr name inputs;
};
in {
neovimPlugins = listToAttrs (map
(name: {
inherit name;
value = buildPlug name;
})
plugins);
};
}