plugins/lsp/nixd: refactor

This commit is contained in:
Gaetan Lepage 2024-05-15 09:00:10 +02:00 committed by Gaétan Lepage
parent f14aa756ba
commit 6be28a941b
3 changed files with 51 additions and 67 deletions

View file

@ -4,11 +4,9 @@
config, config,
pkgs, pkgs,
... ...
}@args: }:
with lib; with lib;
let let
nixdSettings = import ./nixd.nix args;
servers = [ servers = [
{ {
name = "ansiblels"; name = "ansiblels";
@ -408,7 +406,10 @@ let
description = "nixd for Nix"; description = "nixd for Nix";
package = pkgs.nixd; package = pkgs.nixd;
settings = cfg: { nixd = cfg; }; settings = cfg: { nixd = cfg; };
settingsOptions = nixdSettings.options; settingsOptions = import ./nixd-settings.nix { inherit lib helpers; };
extraConfig = cfg: {
extraPackages = optional (cfg.settings.formatting.command == [ "nixpkgs-fmt" ]) pkgs.nixpkgs-fmt;
};
} }
{ {
name = "nushell"; name = "nushell";
@ -683,6 +684,4 @@ in
./rust-analyzer.nix ./rust-analyzer.nix
./svelte.nix ./svelte.nix
]; ];
config = lib.mkMerge [ nixdSettings.config ];
} }

View file

@ -0,0 +1,46 @@
{ lib, helpers }:
# Options:
# - https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md
# - https://github.com/nix-community/nixd/blob/main/nixd/include/nixd/Controller/Configuration.h
with lib;
{
formatting = {
command = helpers.defaultNullOpts.mkListOf types.str ''[ "nixpkgs-fmt" ]'' ''
Which command you would like to do formatting.
Explicitly set to `["nixpkgs-fmt"]` will automatically add `pkgs.nixpkgs-fmt` to the nixvim
environment.
'';
};
options =
let
provider = types.submodule {
options = {
expr = mkOption {
type = types.str;
description = "Expression to eval. Select this attrset as eval .options";
};
};
};
in
helpers.mkNullOrOption (with helpers.nixvimTypes; attrsOf (maybeRaw provider)) ''
Tell the language server your desired option set, for completion.
This is lazily evaluated.
'';
nixpkgs =
let
provider = types.submodule {
options = {
expr = mkOption {
type = types.str;
description = "Expression to eval. Treat it as `import <nixpkgs> { }`";
};
};
};
in
helpers.mkNullOrOption (helpers.nixvimTypes.maybeRaw provider) ''
This expression will be interpreted as "nixpkgs" toplevel
Nixd provides package, lib completion/information from it.
'';
}

View file

@ -1,61 +0,0 @@
{
lib,
helpers,
config,
pkgs,
...
}:
with lib;
let
cfg = config.plugins.lsp.servers.nixd;
in
{
# Options:
# - https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md
# - https://github.com/nix-community/nixd/blob/main/nixd/include/nixd/Controller/Configuration.h
options = {
formatting = {
command = helpers.defaultNullOpts.mkListOf types.str ''[ "nixpkgs-fmt" ]'' ''
Which command you would like to do formatting.
Explicitly set to `["nixpkgs-fmt"]` will automatically add `pkgs.nixpkgs-fmt` to the nixvim
environment.
'';
};
options =
let
provider = types.submodule {
options = {
expr = mkOption {
type = types.str;
description = "Expression to eval. Select this attrset as eval .options";
};
};
};
in
helpers.mkNullOrOption (with helpers.nixvimTypes; attrsOf (maybeRaw provider)) ''
Tell the language server your desired option set, for completion.
This is lazily evaluated.
'';
nixpkgs =
let
provider = types.submodule {
options = {
expr = mkOption {
type = types.str;
description = "Expression to eval. Treat it as `import <nixpkgs> { }`";
};
};
};
in
helpers.mkNullOrOption (helpers.nixvimTypes.maybeRaw provider) ''
This expression will be interpreted as "nixpkgs" toplevel
Nixd provides package, lib completion/information from it.
'';
};
config = mkIf cfg.enable {
extraPackages = optional (cfg.settings.formatting.command == [ "nixpkgs-fmt" ]) pkgs.nixpkgs-fmt;
};
}