diff --git a/modules/lsp/servers/default.nix b/modules/lsp/servers/default.nix index cc2955cd..51840c9c 100644 --- a/modules/lsp/servers/default.nix +++ b/modules/lsp/servers/default.nix @@ -153,9 +153,8 @@ in ]; packages = lib.pipe enabledServers [ - (builtins.filter (server: server ? package)) - (builtins.groupBy (server: if server.packageFallback then "suffix" else "prefix")) - (builtins.mapAttrs (_: builtins.catAttrs "package")) + (builtins.catAttrs "packages") + (builtins.zipAttrsWith (_: builtins.concatLists)) ]; in { diff --git a/modules/lsp/servers/server.nix b/modules/lsp/servers/server.nix index b683b843..f663d310 100644 --- a/modules/lsp/servers/server.nix +++ b/modules/lsp/servers/server.nix @@ -64,6 +64,22 @@ in ''; }; + packages.prefix = lib.mkOption { + type = types.listOf types.package; + description = "Packages to prefix onto the PATH."; + default = [ ]; + visible = false; + internal = true; + }; + + packages.suffix = lib.mkOption { + type = types.listOf types.package; + description = "Packages to suffix onto the PATH."; + default = [ ]; + visible = false; + internal = true; + }; + config = lib.mkOption { type = with types; attrsOf anything; description = '' @@ -88,6 +104,14 @@ in }; }; + config = { + packages = lib.mkIf (config.package != null) { + ${if config.packageFallback then "suffix" else "prefix"} = [ + config.package + ]; + }; + }; + imports = [ ./server-renames.nix ]