Files
nixos-config/home/editors/helix/_languages.nix
T
2026-03-31 16:53:11 +02:00

163 lines
4.1 KiB
Nix

{pkgs, ...}: let
formatters = {
alejandra = "${pkgs.alejandra}/bin/alejandra";
biome = "${pkgs.biome}/bin/biome";
oxfmt = "${pkgs.oxfmt}/bin/oxfmt";
shfmt = "${pkgs.shfmt}/bin/shfmt";
};
languageServers = {
astro-ls = "${pkgs.astro-language-server}/bin/astro-ls";
biome = "${pkgs.biome}/bin/biome";
marksman = "${pkgs.marksman}/bin/marksman";
nil = "${pkgs.nil}/bin/nil";
tailwindcss = "${pkgs.tailwindcss-language-server}/bin/tailwindcss-language-server";
volar = "${pkgs.vue-language-server}/bin/vue-language-server";
};
in
(pkgs.formats.toml {}).generate "languages.toml" {
language = [
{
name = "bash";
auto-format = true;
formatter = {
command = formatters.shfmt;
args = ["-i" "2"];
};
}
{
name = "yaml";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.yaml"];
};
}
{
name = "astro";
auto-format = true;
formatter = {
command = formatters.biome;
args = ["format" "--stdin-file-path" "a.astro"];
};
language-servers = ["astro-ls" "tailwindcss"];
}
{
name = "javascript";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.js"];
};
language-servers = ["biome" "tailwindcss"];
}
{
name = "json";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.json"];
};
language-servers = ["biome"];
}
{
name = "jsx";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.jsx"];
};
language-servers = ["biome" "tailwindcss"];
}
{
name = "markdown";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.md"];
};
language-servers = ["marksman"];
}
{
name = "typescript";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.ts"];
};
language-servers = ["biome" "tailwindcss"];
}
{
name = "tsx";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.tsx"];
};
language-servers = ["biome" "tailwindcss"];
}
{
name = "css";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.css"];
};
language-servers = ["biome" "tailwindcss"];
}
{
name = "html";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.html"];
};
language-servers = ["tailwindcss"];
}
{
name = "vue";
auto-format = true;
formatter = {
command = formatters.oxfmt;
args = ["--stdin-filepath" "file.vue"];
};
language-servers = ["volar" "tailwindcss"];
}
{
name = "nix";
auto-format = true;
formatter = {
command = formatters.alejandra;
args = ["-q"];
};
language-servers = ["nil"];
}
];
language-server = {
astro-ls = {
command = languageServers.astro-ls;
args = ["--stdio"];
};
biome = {
command = languageServers.biome;
args = ["lsp-proxy"];
};
nil = {
command = languageServers.nil;
config.nil.formatting.command = [formatters.alejandra "-q"];
};
marksman = {
command = languageServers.marksman;
};
tailwindcss = {
command = languageServers.tailwindcss;
args = ["--stdio"];
};
volar = {
command = languageServers.volar;
args = ["--stdio"];
};
};
}