nix-configs/modules/editors/helix/default.nix
2025-05-02 15:34:47 +02:00

113 lines
2.8 KiB
Nix

{ config, pkgs, ... }:
{
imports = [
./binds.nix
./settings.nix
];
home = {
sessionVariables.EDITOR = "hx";
packages = [
pkgs.wl-clipboard-rs
pkgs.nil
pkgs.vscode-langservers-extracted
pkgs.nodePackages.typescript-language-server
pkgs.emmet-language-server
pkgs.jdt-language-server
pkgs.tinymist
pkgs.typstyle
];
};
programs.helix = {
enable = true;
defaultEditor = true;
languages = {
language-server = {
"nu-builtin-lsp" = {
command = "${pkgs.nushell}/bin/nu";
args = [ "--lsp" ];
};
"rust-analyzer" = {
config = {
check.command = "check";
completion.snippets.custom = {
"pub fn" = {
prefix = [
"pfn"
"pubfn"
];
postfix = [ "pfn" ];
body = [
"pub fn $\{receiver\}() {"
"\\t$1"
"}"
];
scope = "type";
};
};
completion.termSearch.enable = true;
diagnostics.enable = true;
inlayHints = {
bindingModeHints.enable = true;
closureCaptureHints.enable = true;
closureReturnTypeHints.enable = true;
discriminantHints.enable = true;
expressionAdjustmentHints = {
hideOutsideUnsafe = true;
};
lifetimeElisionHints.enable = "skip_trivial";
};
interpret.tests = true;
lens = {
references = {
adt.enable = true;
trait.enable = true;
};
};
typing.autoClosingAngleBrackets.enable = true;
};
};
"emmet-language-server" = {
command = "emmet-language-server";
args = [ "--stdio" ];
};
"psalm" = {
command = "psalm";
args = [ "--language-server" ];
};
"tinymist" = {
config = {
exportPdf = "onType";
formatterMode = "typstyle";
};
};
};
language = [
{
name = "nu";
language-servers = [ "nu-builtin-lsp" ];
}
{
name = "php";
language-servers = [ "psalm" ];
}
{
name = "nix";
formatter = {
command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
args = [ "--quiet" ];
};
auto-format = true;
}
{
name = "html";
roots = [ ".git" ];
language-servers = [
"vscode-html-language-server"
"emmet-language-server"
];
auto-format = false;
}
];
};
};
}