diff --git a/plugins/lsp/language-servers/efmls-configs.nix b/plugins/lsp/language-servers/efmls-configs.nix index 9a35b1342..cb59081b9 100644 --- a/plugins/lsp/language-servers/efmls-configs.nix +++ b/plugins/lsp/language-servers/efmls-configs.nix @@ -11,7 +11,7 @@ with lib; let languages = builtins.attrNames tools; # Mapping of tool name to the nixpkgs package (if any) - toolPkgs = with pkgs; { + allToolPkgs = with pkgs; { inherit actionlint alejandra @@ -99,6 +99,16 @@ with lib; let write_good = write-good; yq = yq-go; }; + # Filter packages that are not compatible with the current platform + toolPkgs = + filterAttrs + ( + a: pkg: + meta.availableOn + pkgs.stdenv.hostPlatform + pkg + ) + allToolPkgs; in { options.plugins.efmls-configs = { enable = mkEnableOption "efmls-configs, premade configurations for efm-langserver"; @@ -249,6 +259,14 @@ in { extraOptions.settings.languages = setupOptions; }; - extraPackages = [pkgs.efm-langserver] ++ (builtins.map (v: toolPkgs.${v}) nixvimPkgs.right); + extraPackages = + [ + pkgs.efm-langserver + ] + ++ ( + builtins.map + (v: toolPkgs.${v}) + nixvimPkgs.right + ); }; } diff --git a/tests/test-sources/plugins/lsp/efmls-configs.nix b/tests/test-sources/plugins/lsp/efmls-configs.nix index b333e904a..ab41217c3 100644 --- a/tests/test-sources/plugins/lsp/efmls-configs.nix +++ b/tests/test-sources/plugins/lsp/efmls-configs.nix @@ -1,4 +1,8 @@ -{efmls-options, ...}: { +{ + efmls-options, + pkgs, + ... +}: { empty = { plugins.efmls-configs.enable = true; }; @@ -16,27 +20,41 @@ "phpstan" ]; - unpackaged = [ - "blade_formatter" - "cspell" - "dartanalyzer" - "debride" - "fecs" - "fixjson" - "forge_fmt" - "gersemi" - "js_standard" - "pint" - "prettier_eslint" - "prettier_standard" - "redpen" - "reek" - "rome" - "slim_lint" - "solhint" - "sorbet" - "xo" - ]; + unpackaged = + [ + "blade_formatter" + "cspell" + "dartanalyzer" + "debride" + "fecs" + "fixjson" + "forge_fmt" + "gersemi" + "js_standard" + "pint" + "prettier_eslint" + "prettier_standard" + "redpen" + "reek" + "rome" + "slim_lint" + "solhint" + "sorbet" + "xo" + ] + ++ ( + pkgs.lib.optionals + pkgs.stdenv.isDarwin + ["clazy"] + ) + ++ ( + pkgs.lib.optionals + pkgs.stdenv.isAarch64 + [ + "dmd" + "smlfmt" + ] + ); # Fetch the valid enum members from the tool options toolsFromOptions = opt: let