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

131 lines
3.8 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";
};
# Helper function to create external formatter config
mkExternalFormatter = command: args: {
external = {
inherit command;
arguments = args;
};
};
in {
languages = {
YAML = {
tab_size = 2;
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
format_on_save = "on";
};
Astro = {
tab_size = 2;
formatter = mkExternalFormatter formatters.biome ["format" "--stdin-file-path" "{buffer_path}"];
format_on_save = "on";
language_servers = ["astro-ls" "tailwindcss-language-server"];
};
JavaScript = {
tab_size = 2;
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
format_on_save = "on";
language_servers = ["biome" "tailwindcss-language-server"];
};
JSON = {
tab_size = 2;
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
format_on_save = "on";
language_servers = ["biome"];
};
Markdown = {
tab_size = 2;
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
format_on_save = "on";
language_servers = ["marksman"];
};
TypeScript = {
tab_size = 2;
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
format_on_save = "on";
language_servers = ["biome" "tailwindcss-language-server"];
};
TSX = {
tab_size = 2;
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
format_on_save = "on";
language_servers = ["biome" "tailwindcss-language-server"];
};
CSS = {
tab_size = 2;
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
format_on_save = "on";
language_servers = ["biome" "tailwindcss-language-server"];
};
HTML = {
tab_size = 2;
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
format_on_save = "on";
language_servers = ["tailwindcss-language-server"];
};
"Vue.js" = {
tab_size = 2;
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
format_on_save = "on";
language_servers = ["vue-language-server" "tailwindcss-language-server"];
};
Nix = {
tab_size = 2;
formatter = mkExternalFormatter formatters.alejandra ["-q"];
format_on_save = "on";
language_servers = ["nil"];
};
};
lsp = {
"astro-language-server" = {
binary = {
path = languageServers.astro-ls;
arguments = ["--stdio"];
};
};
biome = {
binary = {
path = languageServers.biome;
arguments = ["lsp-proxy"];
};
};
nil = {
binary = {
path = languageServers.nil;
};
initialization_options = {
formatting = {
command = [formatters.alejandra "-q"];
};
};
};
"tailwindcss-language-server" = {
binary = {
path = languageServers.tailwindcss;
arguments = ["--stdio"];
};
};
"vue-language-server" = {
binary = {
path = languageServers.volar;
arguments = ["--stdio"];
};
};
};
}