nix-configs/modules/editors/helix/default.nix

153 lines
4.1 KiB
Nix
Raw Normal View History

2025-05-02 15:34:12 +02:00
{ 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" ];
};
2025-05-25 15:36:44 +02:00
"discord-presence-lsp" = {
command = "discord-presence-lsp";
config = {
application_id = "1376167046974279731";
base_icons_url = "https://raw.githubusercontent.com/xhyrom/zed-discord-presence/main/assets/icons/";
state = "Working on {filename}";
details = "In {workspace}";
large_image = "{language}";
large_text = "{language:u}";
small_image = "logo";
small_text = "Helix";
# idle = {
# timeout = 999999999999999999;
# action = "change_activity";
# state = "Idling";
# details = "In Helix";
# large_image = "logo";
# large_text = "Helix";
# small_image = "idle";
# small_text = "Idle";
# };
rules = {
mode = "blacklist";
paths = [ "absolute path" ];
};
git_integration = true;
};
};
2025-05-02 15:34:12 +02:00
"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";
2025-05-25 15:36:44 +02:00
language-servers = [
"nu-builtin-lsp"
"discord-presence-lsp"
];
2025-05-02 15:34:12 +02:00
}
{
name = "php";
language-servers = [ "psalm" ];
}
{
name = "nix";
2025-05-25 15:36:44 +02:00
# language-servers = [""]
2025-05-02 15:34:12 +02:00
formatter = {
command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
args = [ "--quiet" ];
};
auto-format = true;
}
2025-05-25 15:36:44 +02:00
{
name = "rust";
language-servers = [
# "rust-analyzer"
"discord-presence-lsp"
];
}
2025-05-02 15:34:12 +02:00
{
name = "html";
roots = [ ".git" ];
language-servers = [
"vscode-html-language-server"
"emmet-language-server"
];
auto-format = false;
}
];
};
};
}