mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-11-14 16:55:57 +01:00
65 lines
1.7 KiB
Nix
65 lines
1.7 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib;
|
|
with builtins; let
|
|
cfg = config.vim.lsp;
|
|
in {
|
|
options.vim.lsp = {
|
|
enable = mkEnableOption "Enable neovim lsp support. Requires language specific LSPs to be anabled to take effect";
|
|
formatOnSave = mkEnableOption "Format on save";
|
|
nix = {
|
|
enable = mkEnableOption "Nix LSP";
|
|
server = mkOption {
|
|
type = with types; enum ["rnix" "nil"];
|
|
default = "nil";
|
|
description = "Which LSP to use";
|
|
};
|
|
|
|
pkg = mkOption {
|
|
type = types.package;
|
|
default =
|
|
if (cfg.nix.server == "rnix")
|
|
then pkgs.rnix-lsp
|
|
else pkgs.nil;
|
|
description = "The LSP package to use";
|
|
};
|
|
|
|
formatter = mkOption {
|
|
type = with types; enum ["nixpkgs-fmt" "alejandra"];
|
|
default = "alejandra";
|
|
description = "Which nix formatter to use";
|
|
};
|
|
};
|
|
rust = {
|
|
enable = mkEnableOption "Rust LSP";
|
|
rustAnalyzerOpts = mkOption {
|
|
type = types.str;
|
|
default = ''
|
|
["rust-analyzer"] = {
|
|
experimental = {
|
|
procAttrMacros = true,
|
|
},
|
|
},
|
|
'';
|
|
description = "Options to pass to rust analyzer";
|
|
};
|
|
};
|
|
python = mkEnableOption "Python LSP";
|
|
clang = {
|
|
enable = mkEnableOption "C language LSP";
|
|
c_header = mkEnableOption "C syntax header files";
|
|
cclsOpts = mkOption {
|
|
type = types.str;
|
|
default = "";
|
|
};
|
|
};
|
|
sql = mkEnableOption "SQL Language LSP";
|
|
go = mkEnableOption "Go language LSP";
|
|
ts = mkEnableOption "TS language LSP";
|
|
zig.enable = mkEnableOption "Zig language LSP";
|
|
};
|
|
}
|