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;
 | 
					          nixosModules.default = import ./nixos/modules;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          overlays = {
 | 
					          overlays = {
 | 
				
			||||||
            modifications = (import ./overlays/modifications { inherit inputs; });
 | 
					            modifications = (import ./overlays/modifications { inherit inputs outputs; });
 | 
				
			||||||
            additions = (import ./overlays/additions { inherit inputs; });
 | 
					            additions = (import ./overlays/additions { inherit inputs outputs; });
 | 
				
			||||||
          };
 | 
					          };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          nixosConfigurations =
 | 
					          nixosConfigurations =
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,14 +17,7 @@
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
      extraPackages = lib.mkOption {
 | 
					      extraPackages = lib.mkOption {
 | 
				
			||||||
        type = lib.types.listOf lib.types.package;
 | 
					        type = lib.types.listOf lib.types.package;
 | 
				
			||||||
        default = with pkgs; [
 | 
					        default = [ ];
 | 
				
			||||||
          taplo
 | 
					 | 
				
			||||||
          markdown-oxide
 | 
					 | 
				
			||||||
          nixd
 | 
					 | 
				
			||||||
          deno
 | 
					 | 
				
			||||||
          nixfmt-rfc-style
 | 
					 | 
				
			||||||
          nodePackages_latest.vscode-json-languageserver
 | 
					 | 
				
			||||||
        ];
 | 
					 | 
				
			||||||
        example = (
 | 
					        example = (
 | 
				
			||||||
          with pkgs;
 | 
					          with pkgs;
 | 
				
			||||||
          [
 | 
					          [
 | 
				
			||||||
| 
						 | 
					@ -53,20 +46,131 @@
 | 
				
			||||||
          config;
 | 
					          config;
 | 
				
			||||||
        languages = {
 | 
					        languages = {
 | 
				
			||||||
          language-server = {
 | 
					          language-server = {
 | 
				
			||||||
            vscode-json-languageserver = {
 | 
					            fish-lsp = {
 | 
				
			||||||
              command = "vscode-json-languageserver";
 | 
					              command = "fish-lsp";
 | 
				
			||||||
              args = [ "--stdio" ];
 | 
					              args = [
 | 
				
			||||||
              config = {
 | 
					                "start"
 | 
				
			||||||
                provideFormatter = true;
 | 
					              ];
 | 
				
			||||||
                json = {
 | 
					 | 
				
			||||||
                  validate = {
 | 
					 | 
				
			||||||
                    enable = true;
 | 
					 | 
				
			||||||
                  };
 | 
					 | 
				
			||||||
                };
 | 
					 | 
				
			||||||
              };
 | 
					 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
          };
 | 
					          };
 | 
				
			||||||
          language = [
 | 
					          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";
 | 
					              name = "toml";
 | 
				
			||||||
              formatter = {
 | 
					              formatter = {
 | 
				
			||||||
| 
						 | 
					@ -92,7 +196,7 @@
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
              name = "json";
 | 
					              name = "json";
 | 
				
			||||||
              language-servers = [
 | 
					              language-servers = [
 | 
				
			||||||
                "vscode-json-languageserver"
 | 
					                "vscode-json-language-server"
 | 
				
			||||||
              ];
 | 
					              ];
 | 
				
			||||||
              formatter = {
 | 
					              formatter = {
 | 
				
			||||||
                command = "deno";
 | 
					                command = "deno";
 | 
				
			||||||
| 
						 | 
					@ -107,7 +211,7 @@
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
              name = "jsonc";
 | 
					              name = "jsonc";
 | 
				
			||||||
              language-servers = [
 | 
					              language-servers = [
 | 
				
			||||||
                "vscode-json-languageserver"
 | 
					                "vscode-json-language-server"
 | 
				
			||||||
              ];
 | 
					              ];
 | 
				
			||||||
              formatter = {
 | 
					              formatter = {
 | 
				
			||||||
                command = "deno";
 | 
					                command = "deno";
 | 
				
			||||||
| 
						 | 
					@ -122,6 +226,6 @@
 | 
				
			||||||
          ];
 | 
					          ];
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
      home.packages = cfg.extraPackages;
 | 
					      # home.packages = cfg.extraPackages;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,8 +58,6 @@
 | 
				
			||||||
    git
 | 
					    git
 | 
				
			||||||
    vim
 | 
					    vim
 | 
				
			||||||
    helix
 | 
					    helix
 | 
				
			||||||
    nixd
 | 
					 | 
				
			||||||
    nixfmt-rfc-style
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    element-desktop
 | 
					    element-desktop
 | 
				
			||||||
    discord-ptb
 | 
					    discord-ptb
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,12 @@
 | 
				
			||||||
{ inputs, ... }:
 | 
					{
 | 
				
			||||||
 | 
					  outputs,
 | 
				
			||||||
 | 
					  ...
 | 
				
			||||||
 | 
					}:
 | 
				
			||||||
final: prev:
 | 
					final: prev:
 | 
				
			||||||
let
 | 
					let
 | 
				
			||||||
  inherit (final) stdenv;
 | 
					  inherit (final) stdenv;
 | 
				
			||||||
  inherit (stdenv.hostPlatform) system;
 | 
					  inherit (stdenv.hostPlatform) system;
 | 
				
			||||||
in
 | 
					in
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  helix = inputs.helix.packages."${system}".default;
 | 
					  helix = outputs.packages."${system}".helix;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@
 | 
				
			||||||
}:
 | 
					}:
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  pinentry-selector = pkgs.callPackage ./pinentry-selector.nix { };
 | 
					  pinentry-selector = pkgs.callPackage ./pinentry-selector.nix { };
 | 
				
			||||||
 | 
					  helix = pkgs.callPackage ./helix.nix { inherit inputs; };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
// (
 | 
					// (
 | 
				
			||||||
  let
 | 
					  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