Martin Berg Alstad d74f3880ca
[shared] Helix config
Support for more languages in Helix. C-f to format. Autosave. Added some lsp packages
2025-04-19 19:37:12 +02:00

131 lines
2.7 KiB
Nix

{
pkgs,
lib,
theme,
...
}:
{
catppuccin.helix = {
enable = true;
flavor = theme.flavor;
};
programs = {
fish.shellAliases.edit = "hx";
helix = {
enable = true;
defaultEditor = true;
extraPackages = with pkgs; [
# Markdown
marksman
markdown-oxide
# Html, css, Json, Eslint
vscode-langservers-extracted
# Yaml
ansible-language-server
yaml-language-server
];
settings = {
editor = {
auto-save = {
after-delay.enable = true;
focus-lost = true;
};
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
lsp = {
display-inlay-hints = true;
display-messages = true;
};
};
keys.normal = {
C-f = ":format";
};
};
languages.language = [
{
name = "css";
formatter = {
command = "prettier";
args = [
"--stdin-filepath"
"file.css"
];
};
auto-format = true;
}
{
name = "json";
language-servers = [
{
name = "vscode-json-language-server";
except-features = [ "format" ];
}
];
formatter = {
command = "prettier";
args = [
"--stdin-filepath"
"file.json"
];
};
auto-format = true;
}
{
name = "jsonc";
language-servers = [
{
name = "vscode-json-language-server";
except-features = [ "format" ];
}
];
formatter = {
command = "prettier";
args = [
"--stdin-filepath"
"file.jsonc"
];
};
file-types = [
"jsonc"
];
auto-format = true;
}
{
name = "markdown";
formatter = {
command = "prettier";
args = [
"--stdin-filepath"
"file.md"
];
};
auto-format = true;
}
{
name = "nix";
formatter.command = lib.getExe pkgs.nixfmt-rfc-style;
auto-format = true;
}
{
name = "yaml";
formatter = {
command = "prettier";
args = [
"--stdin-filepath"
"file.yaml"
];
};
auto-format = true;
}
];
};
};
}