nix-community.nixvim/plugins/lsp/language-servers/rust-analyzer.nix
2023-11-23 15:22:42 +01:00

81 lines
2.3 KiB
Nix

{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.plugins.lsp.servers.rust-analyzer;
in {
options.plugins.lsp.servers.rust-analyzer = {
# https://github.com/nix-community/nixvim/issues/674
installCargo = mkOption {
type = with types; nullOr bool;
default = null;
example = true;
description = "Whether to install `cargo`.";
};
cargoPackage = mkOption {
type = types.package;
default = pkgs.cargo;
description = "Which package to use for `cargo`.";
};
installRustc = mkOption {
type = with types; nullOr bool;
default = null;
example = true;
description = "Whether to install `rustc`.";
};
rustcPackage = mkOption {
type = types.package;
default = pkgs.rustc;
description = "Which package to use for `rustc`.";
};
};
config = mkIf cfg.enable {
warnings =
(
optional
(cfg.installCargo == null)
''
`rust_analyzer` relies on `cargo`.
- Set `plugins.lsp.servers.rust-analyzer.installCargo = true` to install it automatically
with Nixvim.
You can customize which package to install by changing
`plugins.lsp.servers.rust-analyzer.cargoPackage`.
- Set `plugins.lsp.servers.rust-analyzer.installCargo = false` to not have it install
through Nixvim.
By doing so, you will dismiss this warning.
''
)
++ (
optional
(cfg.installRustc == null)
''
`rust_analyzer` relies on `rustc`.
- Set `plugins.lsp.servers.rust-analyzer.installRustc = true` to install it automatically
with Nixvim.
You can customize which package to install by changing
`plugins.lsp.servers.rust-analyzer.rustcPackage`.
- Set `plugins.lsp.servers.rust-analyzer.installRustc = false` to not have it install
through Nixvim.
By doing so, you will dismiss this warning.
''
);
extraPackages = with pkgs;
(
optional
((isBool cfg.installCargo) && cfg.installCargo)
cfg.cargoPackage
)
++ (
optional
((isBool cfg.installRustc) && cfg.installRustc)
cfg.rustcPackage
);
};
}