101 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ pkgs, lib, ... }: 
 | 
						|
{
 | 
						|
  programs.helix.languages = {
 | 
						|
    language = let
 | 
						|
      deno = lang: {
 | 
						|
        command = "${pkgs.deno}/bin/deno";
 | 
						|
        args = ["fmt" "-" "--ext" lang];
 | 
						|
      };
 | 
						|
 | 
						|
      prettier = lang: {
 | 
						|
        command = "${pkgs.nodePackages.prettier}/bin/prettier";
 | 
						|
        args = ["--parser" lang];
 | 
						|
      };
 | 
						|
      prettierLangs = map (e: {
 | 
						|
        name = e;
 | 
						|
        formatter = prettier e;
 | 
						|
      });
 | 
						|
      langs = ["css" "scss" "html"];
 | 
						|
    in
 | 
						|
      [
 | 
						|
        {
 | 
						|
          name = "bash";
 | 
						|
          auto-format = true;
 | 
						|
          formatter = {
 | 
						|
            command = "${pkgs.shfmt}/bin/shfmt";
 | 
						|
            args = ["-i" "2"];
 | 
						|
          };
 | 
						|
        }
 | 
						|
        {
 | 
						|
          name = "clojure";
 | 
						|
          injection-regex = "(clojure|clj|edn|boot|yuck)";
 | 
						|
          file-types = ["clj" "cljs" "cljc" "clje" "cljr" "cljx" "edn" "boot" "yuck"];
 | 
						|
        }
 | 
						|
        {
 | 
						|
          name = "javascript";
 | 
						|
          auto-format = true;
 | 
						|
          language-servers = ["deno-lsp"];
 | 
						|
        }
 | 
						|
        {
 | 
						|
          name = "json";
 | 
						|
          formatter = deno "json";
 | 
						|
        }
 | 
						|
        {
 | 
						|
          name = "markdown";
 | 
						|
          auto-format = true;
 | 
						|
          formatter = deno "md";
 | 
						|
        }
 | 
						|
      ]
 | 
						|
      ++ prettierLangs langs;
 | 
						|
 | 
						|
    language-server = {
 | 
						|
      bash-language-server = {
 | 
						|
        command = "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server";
 | 
						|
        args = ["start"];
 | 
						|
      };
 | 
						|
 | 
						|
      clangd = {
 | 
						|
        command = "${pkgs.clang-tools}/bin/clangd";
 | 
						|
        clangd.fallbackFlags = ["-std=c++2b"];
 | 
						|
      };
 | 
						|
 | 
						|
      deno-lsp = {
 | 
						|
        command = "${pkgs.deno}/bin/deno";
 | 
						|
        args = ["lsp"];
 | 
						|
        environment.NO_COLOR = "1";
 | 
						|
        config.deno = {
 | 
						|
          enable = true;
 | 
						|
          lint = true;
 | 
						|
          unstable = true;
 | 
						|
          suggest = {
 | 
						|
            completeFunctionCalls = false;
 | 
						|
            imports = {hosts."https://deno.land" = true;};
 | 
						|
          };
 | 
						|
          inlayHints = {
 | 
						|
            enumMemberValues.enabled = true;
 | 
						|
            functionLikeReturnTypes.enabled = true;
 | 
						|
            parameterNames.enabled = "all";
 | 
						|
            parameterTypes.enabled = true;
 | 
						|
            propertyDeclarationTypes.enabled = true;
 | 
						|
            variableTypes.enabled = true;
 | 
						|
          };
 | 
						|
        };
 | 
						|
      };
 | 
						|
 | 
						|
      nil = {
 | 
						|
        command = lib.getExe pkgs.nil;
 | 
						|
        config.nil.formatting.command = ["${lib.getExe pkgs.alejandra}" "-q"];
 | 
						|
      };
 | 
						|
 | 
						|
      vscode-css-language-server = {
 | 
						|
        command = "${pkgs.nodePackages.vscode-css-languageserver-bin}/bin/css-languageserver";
 | 
						|
        args = ["--stdio"];
 | 
						|
        config = {
 | 
						|
          provideFormatter = true;
 | 
						|
          css.validate.enable = true;
 | 
						|
          scss.validate.enable = true;
 | 
						|
        };
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |