wrap helix with lsp and formatter, and add some config for helix
This commit is contained in:
		
							parent
							
								
									67b1830304
								
							
						
					
					
						commit
						a27bc57d15
					
				
					 6 changed files with 176 additions and 28 deletions
				
			
		| 
						 | 
				
			
			@ -122,8 +122,8 @@
 | 
			
		|||
          nixosModules.default = import ./nixos/modules;
 | 
			
		||||
 | 
			
		||||
          overlays = {
 | 
			
		||||
            modifications = (import ./overlays/modifications { inherit inputs; });
 | 
			
		||||
            additions = (import ./overlays/additions { inherit inputs; });
 | 
			
		||||
            modifications = (import ./overlays/modifications { inherit inputs outputs; });
 | 
			
		||||
            additions = (import ./overlays/additions { inherit inputs outputs; });
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          nixosConfigurations =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,14 +17,7 @@
 | 
			
		|||
      };
 | 
			
		||||
      extraPackages = lib.mkOption {
 | 
			
		||||
        type = lib.types.listOf lib.types.package;
 | 
			
		||||
        default = with pkgs; [
 | 
			
		||||
          taplo
 | 
			
		||||
          markdown-oxide
 | 
			
		||||
          nixd
 | 
			
		||||
          deno
 | 
			
		||||
          nixfmt-rfc-style
 | 
			
		||||
          nodePackages_latest.vscode-json-languageserver
 | 
			
		||||
        ];
 | 
			
		||||
        default = [ ];
 | 
			
		||||
        example = (
 | 
			
		||||
          with pkgs;
 | 
			
		||||
          [
 | 
			
		||||
| 
						 | 
				
			
			@ -53,20 +46,131 @@
 | 
			
		|||
          config;
 | 
			
		||||
        languages = {
 | 
			
		||||
          language-server = {
 | 
			
		||||
            vscode-json-languageserver = {
 | 
			
		||||
              command = "vscode-json-languageserver";
 | 
			
		||||
              args = [ "--stdio" ];
 | 
			
		||||
              config = {
 | 
			
		||||
                provideFormatter = true;
 | 
			
		||||
                json = {
 | 
			
		||||
                  validate = {
 | 
			
		||||
                    enable = true;
 | 
			
		||||
                  };
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
            fish-lsp = {
 | 
			
		||||
              command = "fish-lsp";
 | 
			
		||||
              args = [
 | 
			
		||||
                "start"
 | 
			
		||||
              ];
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
          language = [
 | 
			
		||||
            {
 | 
			
		||||
              name = "nix";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "nixfmt";
 | 
			
		||||
                args = [ "-" ];
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "xml";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "xmllint";
 | 
			
		||||
                args = [
 | 
			
		||||
                  "--format"
 | 
			
		||||
                  "-"
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "typst";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "typstyle";
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "c";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "clang-format";
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "cpp";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "clang-format";
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "python";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "ruff";
 | 
			
		||||
                args = [
 | 
			
		||||
                  "format"
 | 
			
		||||
                  "-s"
 | 
			
		||||
                  "--line-length"
 | 
			
		||||
                  "88"
 | 
			
		||||
                  "-"
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
              language-servers = [
 | 
			
		||||
                "pyright"
 | 
			
		||||
                "ruff"
 | 
			
		||||
              ];
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "go";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "goimports";
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "awk";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "awk";
 | 
			
		||||
                timeout = 5;
 | 
			
		||||
                args = [
 | 
			
		||||
                  "--file=/dev/stdin"
 | 
			
		||||
                  "--pretty-print=/dev/stdout"
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "fish";
 | 
			
		||||
              language-servers = [
 | 
			
		||||
                "fish-lsp"
 | 
			
		||||
              ];
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "yaml";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "deno";
 | 
			
		||||
                args = [
 | 
			
		||||
                  "fmt"
 | 
			
		||||
                  "-"
 | 
			
		||||
                  "--ext"
 | 
			
		||||
                  "yaml"
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "html";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "deno";
 | 
			
		||||
                args = [
 | 
			
		||||
                  "fmt"
 | 
			
		||||
                  "-"
 | 
			
		||||
                  "--ext"
 | 
			
		||||
                  "html"
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
              language-servers = [
 | 
			
		||||
                "vscode-html-language-server"
 | 
			
		||||
              ];
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "css";
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "deno";
 | 
			
		||||
                args = [
 | 
			
		||||
                  "fmt"
 | 
			
		||||
                  "-"
 | 
			
		||||
                  "--ext"
 | 
			
		||||
                  "css"
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
              language-servers = [
 | 
			
		||||
                "vscode-css-language-server"
 | 
			
		||||
              ];
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              name = "toml";
 | 
			
		||||
              formatter = {
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +196,7 @@
 | 
			
		|||
            {
 | 
			
		||||
              name = "json";
 | 
			
		||||
              language-servers = [
 | 
			
		||||
                "vscode-json-languageserver"
 | 
			
		||||
                "vscode-json-language-server"
 | 
			
		||||
              ];
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "deno";
 | 
			
		||||
| 
						 | 
				
			
			@ -107,7 +211,7 @@
 | 
			
		|||
            {
 | 
			
		||||
              name = "jsonc";
 | 
			
		||||
              language-servers = [
 | 
			
		||||
                "vscode-json-languageserver"
 | 
			
		||||
                "vscode-json-language-server"
 | 
			
		||||
              ];
 | 
			
		||||
              formatter = {
 | 
			
		||||
                command = "deno";
 | 
			
		||||
| 
						 | 
				
			
			@ -122,6 +226,6 @@
 | 
			
		|||
          ];
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
      home.packages = cfg.extraPackages;
 | 
			
		||||
      # home.packages = cfg.extraPackages;
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,8 +58,6 @@
 | 
			
		|||
    git
 | 
			
		||||
    vim
 | 
			
		||||
    helix
 | 
			
		||||
    nixd
 | 
			
		||||
    nixfmt-rfc-style
 | 
			
		||||
 | 
			
		||||
    element-desktop
 | 
			
		||||
    discord-ptb
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,12 @@
 | 
			
		|||
{ inputs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  outputs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
final: prev:
 | 
			
		||||
let
 | 
			
		||||
  inherit (final) stdenv;
 | 
			
		||||
  inherit (stdenv.hostPlatform) system;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  helix = inputs.helix.packages."${system}".default;
 | 
			
		||||
  helix = outputs.packages."${system}".helix;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@
 | 
			
		|||
}:
 | 
			
		||||
{
 | 
			
		||||
  pinentry-selector = pkgs.callPackage ./pinentry-selector.nix { };
 | 
			
		||||
  helix = pkgs.callPackage ./helix.nix { inherit inputs; };
 | 
			
		||||
}
 | 
			
		||||
// (
 | 
			
		||||
  let
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										42
									
								
								pkgs/helix.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								pkgs/helix.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
pkgs.runCommand "helix-wrapped"
 | 
			
		||||
  {
 | 
			
		||||
    buildInputs = [ pkgs.makeWrapper ];
 | 
			
		||||
  }
 | 
			
		||||
  ''
 | 
			
		||||
    mkdir -p $out/bin
 | 
			
		||||
    makeWrapper "${lib.getExe inputs.helix.packages."${pkgs.system}".default}" $out/bin/hx \
 | 
			
		||||
    --prefix PATH : ${
 | 
			
		||||
      lib.makeBinPath (
 | 
			
		||||
        with pkgs;
 | 
			
		||||
        [
 | 
			
		||||
          clang-tools
 | 
			
		||||
          libxml2
 | 
			
		||||
          typstyle
 | 
			
		||||
          pyright
 | 
			
		||||
          ruff
 | 
			
		||||
          gotools
 | 
			
		||||
          yaml-language-server
 | 
			
		||||
          taplo
 | 
			
		||||
          markdown-oxide
 | 
			
		||||
          nixd
 | 
			
		||||
          deno
 | 
			
		||||
          nixfmt-rfc-style
 | 
			
		||||
          vscode-langservers-extracted
 | 
			
		||||
          fish-lsp
 | 
			
		||||
          gopls
 | 
			
		||||
          golangci-lint-langserver
 | 
			
		||||
          tinymist
 | 
			
		||||
          delve
 | 
			
		||||
          lldb
 | 
			
		||||
          rust-analyzer
 | 
			
		||||
          nil
 | 
			
		||||
        ]
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
  ''
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue