2023-01-19 16:02:40 +00:00
|
|
|
{ pkgs, config, lib, ... }@args:
|
2022-08-05 12:08:19 +00:00
|
|
|
let
|
|
|
|
helpers = import ./helpers.nix args;
|
|
|
|
serverData = {
|
2023-01-19 16:02:40 +00:00
|
|
|
code_actions = {
|
2022-12-30 22:04:43 +01:00
|
|
|
gitsigns = { };
|
2023-01-23 14:58:50 +01:00
|
|
|
shellcheck = {
|
|
|
|
package = pkgs.shellcheck;
|
|
|
|
};
|
2022-12-30 22:04:43 +01:00
|
|
|
};
|
2022-11-13 15:20:23 +00:00
|
|
|
completion = { };
|
2022-08-05 12:08:19 +00:00
|
|
|
diagnostics = {
|
2022-11-13 15:20:23 +00:00
|
|
|
flake8 = {
|
2023-01-19 10:45:15 +00:00
|
|
|
package = pkgs.python3Packages.flake8;
|
2022-11-13 15:20:23 +00:00
|
|
|
};
|
2022-11-15 11:36:42 +00:00
|
|
|
shellcheck = {
|
2023-01-19 10:45:15 +00:00
|
|
|
package = pkgs.shellcheck;
|
2022-11-15 11:36:42 +00:00
|
|
|
};
|
2023-01-23 14:58:50 +01:00
|
|
|
cppcheck = {
|
|
|
|
package = pkgs.cppcheck;
|
|
|
|
};
|
|
|
|
gitlint = {
|
|
|
|
package = pkgs.gitlint;
|
|
|
|
};
|
2022-08-05 12:08:19 +00:00
|
|
|
};
|
|
|
|
formatting = {
|
2022-10-04 13:17:56 +00:00
|
|
|
phpcbf = {
|
2023-01-19 10:45:15 +00:00
|
|
|
package = pkgs.phpPackages.phpcbf;
|
2022-10-04 13:17:56 +00:00
|
|
|
};
|
2022-08-19 21:33:35 +02:00
|
|
|
alejandra = {
|
2023-01-19 10:45:15 +00:00
|
|
|
package = pkgs.alejandra;
|
2022-08-19 21:33:35 +02:00
|
|
|
};
|
|
|
|
nixfmt = {
|
2023-01-19 10:45:15 +00:00
|
|
|
package = pkgs.nixfmt;
|
2022-08-19 21:33:35 +02:00
|
|
|
};
|
2022-08-05 12:08:19 +00:00
|
|
|
prettier = {
|
2023-01-19 10:45:15 +00:00
|
|
|
package = pkgs.nodePackages.prettier;
|
2022-08-05 12:08:19 +00:00
|
|
|
};
|
2022-11-13 15:20:23 +00:00
|
|
|
black = {
|
2023-01-19 10:45:15 +00:00
|
|
|
package = pkgs.python3Packages.black;
|
2022-08-05 12:08:19 +00:00
|
|
|
};
|
2022-12-01 14:37:30 +00:00
|
|
|
fourmolu = {
|
2023-01-19 10:45:15 +00:00
|
|
|
package = pkgs.haskellPackages.fourmolu;
|
2022-12-01 14:37:30 +00:00
|
|
|
};
|
2022-12-19 02:18:15 +00:00
|
|
|
fnlfmt = {
|
2023-01-19 10:45:15 +00:00
|
|
|
package = pkgs.fnlfmt;
|
2022-12-19 02:18:15 +00:00
|
|
|
};
|
2023-01-23 14:58:50 +01:00
|
|
|
stylua = {
|
|
|
|
package = pkgs.stylua;
|
|
|
|
};
|
|
|
|
cbfmt = {
|
|
|
|
package = pkgs.cbfmt;
|
|
|
|
};
|
|
|
|
shfmt = {
|
|
|
|
package = pkgs.shfmt;
|
|
|
|
};
|
|
|
|
taplo = {
|
|
|
|
package = pkgs.taplo;
|
|
|
|
};
|
2022-08-05 12:08:19 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
# Format the servers to be an array of attrs like the following example
|
|
|
|
# [{
|
|
|
|
# name = "prettier";
|
|
|
|
# sourceType = "formatting";
|
|
|
|
# packages = [...];
|
|
|
|
# }]
|
2022-11-13 15:20:23 +00:00
|
|
|
serverDataFormatted = lib.mapAttrsToList
|
|
|
|
(sourceType: sourceSet:
|
|
|
|
lib.mapAttrsToList (name: attrs: attrs // { inherit sourceType name; }) sourceSet
|
|
|
|
)
|
|
|
|
serverData;
|
2022-08-05 12:08:19 +00:00
|
|
|
dataFlattened = lib.flatten serverDataFormatted;
|
|
|
|
in
|
|
|
|
{
|
|
|
|
imports = lib.lists.map (helpers.mkServer) dataFlattened;
|
2022-12-30 22:04:43 +01:00
|
|
|
|
2023-01-19 16:02:40 +00:00
|
|
|
config =
|
|
|
|
let
|
|
|
|
cfg = config.plugins.null-ls;
|
|
|
|
in
|
2022-12-30 22:04:43 +01:00
|
|
|
lib.mkIf cfg.enable {
|
|
|
|
plugins.gitsigns.enable = lib.mkIf (cfg.sources.code_actions.gitsigns.enable) true;
|
|
|
|
};
|
2022-08-05 12:08:19 +00:00
|
|
|
}
|