Files
nixos-blueprint/modules/homePrograms/zed-editor.nix
T
2026-04-24 14:43:18 +03:00

154 lines
3.7 KiB
Nix

{
# config,
pkgs,
lib,
...
}: let
inherit (lib) getExe mkForce;
in {
programs.zed-editor.enable = true;
programs.zed-editor = {
extensions = [
"bash"
"fsharp"
"justfile"
"nix"
"typst"
];
userSettings = {
vim_mode = true;
ui_font_size = mkForce 14;
buffer_font_size = mkForce 14;
# features = {inline_completion_provider = "none";};
auto_update = false;
languages = {
"FSharp" = {
language_servers = [
"fsautocomplete"
];
};
"Nix" = {
language_servers = [
"nil"
"!nixd"
];
# formatter = {
# external.command = getExe pkgs.alejandra;
# };
};
# "Rust" = {
# formatter = {
# external = {
# command = getExe pkgs.rustfmt;
# arguments = ["--edition" "2021"];
# };
# };
# };
"Typst" = {
language_servers = ["tinymist"];
format_on_save = "on";
formatter = {
external = {
command = getExe pkgs.typstyle;
arguments = ["-l" "120"];
};
};
};
"Python" = {
format_on_save = "on";
formatter = [
{
language_server = {
name = "ruff";
};
}
];
language_servers = ["ruff" "pylsp"];
};
};
lsp = {
bash-language-server = {
binary = {
path = getExe pkgs.bash-language-server;
env = {
"SHELLCHECK_PATH" = getExe pkgs.shellcheck;
"SHFMT_PATH" = getExe pkgs.shfmt;
};
};
};
fsautocomplete = {
binary = {
path = getExe pkgs.fsautocomplete;
};
settings = {
AutomaticWorkspaceInit = true;
FSharp.ExternalAutocomplete = true;
FSharp.linting.fsharplint.enabled = true;
FSharp.linting.fsharplint.configFile = "fsharplint.json";
FSharp.formatting.fantomas.enabled = true;
};
};
clangd = {
binary = {
arguments = [];
path = "${pkgs.clang-tools}/bin/clangd";
};
};
# rust-analyzer = {
# binary = {
# arguments = [];
# path = getExe pkgs.rust-analyzer;
# };
# };
pylsp = {
binary = {
# arguments = ["server"];
path = getExe pkgs.python313Packages.python-lsp-server;
};
};
ruff = {
binary = {
arguments = ["server"];
path = getExe pkgs.ruff;
};
};
nil = {
binary = {
arguments = [];
path = getExe pkgs.nil;
};
settings.formatting.command = [(getExe pkgs.alejandra)];
};
# texlab = {
# binary = {
# arguments = [];
# path = getExe pkgs.texlab;
# };
# };
tinymist = {
binary = {
arguments = [];
path = getExe pkgs.tinymist;
};
};
# json-language-server = {
# binary = {
# arguments = ["--stdio"];
# path = getExe pkgs.nodePackages.vscode-json-languageserver;
# };
# };
yaml-language-server = {
binary = {
arguments = ["--stdio"];
path = getExe pkgs.yaml-language-server;
};
};
};
telemetry = {
diagnostics = false;
metrics = false;
};
};
};
}