wrap helix with lsp and formatter, and add some config for helix

This commit is contained in:
ulic-youthlic 2025-01-17 14:35:18 +08:00
parent ca525c5789
commit 9c60b5872c
Signed by: youthlic
GPG key ID: 63E86C3C14A0D721
6 changed files with 176 additions and 28 deletions

View file

@ -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 =

View file

@ -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;
};
}

View file

@ -58,8 +58,6 @@
git
vim
helix
nixd
nixfmt-rfc-style
element-desktop
discord-ptb

View file

@ -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;
}

View file

@ -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
View 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
]
)
}
''