nix-community.nixvim/plugins/utils/zk.nix

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

62 lines
1.4 KiB
Nix
Raw Normal View History

2023-04-17 23:13:12 +02:00
{
lib,
helpers,
config,
pkgs,
2023-04-17 23:13:12 +02:00
...
}:
with lib;
{
2023-04-17 23:13:12 +02:00
options.plugins.zk = {
enable = mkEnableOption "zk.nvim, a plugin to integrate with zk";
package = helpers.mkPluginPackageOption "zk.nvim" pkgs.vimPlugins.zk-nvim;
2023-04-17 23:13:12 +02:00
picker =
helpers.defaultNullOpts.mkEnumFirstDefault
[
"select"
"fzf"
"telescope"
]
''
it's recommended to use "telescope" or "fzf"
'';
lsp = {
config = helpers.neovim-plugin.extraOptionsOptions // {
2023-04-17 23:13:12 +02:00
cmd = helpers.defaultNullOpts.mkNullable (types.listOf types.str) ''["zk" "lsp"]'' "";
name = helpers.defaultNullOpts.mkStr "zk" "";
};
autoAttach = {
enabled = helpers.defaultNullOpts.mkBool true "automatically attach buffers in a zk notebook";
filetypes =
helpers.defaultNullOpts.mkNullable (types.listOf types.str) ''["markdown"]''
"matching the given filetypes";
};
};
};
config =
let
cfg = config.plugins.zk;
setupOptions = {
inherit (cfg) picker;
lsp = {
inherit (cfg.lsp) config;
auto_attach = {
inherit (cfg.lsp.autoAttach) enabled filetypes;
2024-05-05 19:39:35 +02:00
};
2023-04-17 23:13:12 +02:00
};
};
in
mkIf cfg.enable {
extraPlugins = [ cfg.package ];
extraPackages = [ pkgs.zk ];
extraConfigLua = ''
require("zk").setup(${helpers.toLuaObject setupOptions})
'';
};
}