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 67b1830304
commit a27bc57d15
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; 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 =

View file

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

View file

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

View file

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

View file

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