122 lines
2.9 KiB
Nix
122 lines
2.9 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.editor.zed;
|
|
in {
|
|
options = {
|
|
editor.zed.enable =
|
|
mkEnableOption "enable zed editor";
|
|
};
|
|
config = mkIf cfg.enable {
|
|
programs.zed-editor = {
|
|
enable = true;
|
|
extensions = [
|
|
"nix"
|
|
"latex"
|
|
"typst"
|
|
];
|
|
userSettings = {
|
|
vim_mode = true;
|
|
ui_font_size = lib.mkForce 16;
|
|
buffer_font_size = lib.mkForce 16;
|
|
features = {inline_completion_provider = "none";};
|
|
auto_update = false;
|
|
languages = {
|
|
"Nix" = {
|
|
language-servers = [
|
|
"!nil"
|
|
"nixd"
|
|
];
|
|
formatter = {
|
|
external.command = lib.getExe pkgs.alejandra;
|
|
};
|
|
};
|
|
"Rust" = {
|
|
formatter = {
|
|
external = {
|
|
command = lib.getExe pkgs.rustfmt;
|
|
arguments = ["--edition" "2021"];
|
|
};
|
|
};
|
|
};
|
|
"typst" = {
|
|
language-servers = ["tinymist"];
|
|
format_on_save = "on";
|
|
formatter = {
|
|
external = {
|
|
command = lib.getExe pkgs.typstyle;
|
|
arguments = ["-i" "{buffer_path}"];
|
|
};
|
|
};
|
|
};
|
|
"Python" = {
|
|
format_on_save = "on";
|
|
formatter = [
|
|
{
|
|
language_server = {
|
|
name = "ruff";
|
|
};
|
|
}
|
|
];
|
|
language_servers = ["ruff"];
|
|
};
|
|
};
|
|
lsp = {
|
|
clangd = {
|
|
binary = {
|
|
arguments = [];
|
|
path = "${pkgs.clang-tools}/bin/clangd";
|
|
};
|
|
};
|
|
rust-analyzer = {
|
|
binary = {
|
|
arguments = [];
|
|
path = lib.getExe pkgs.rust-analyzer;
|
|
};
|
|
};
|
|
ruff = {
|
|
binary = {
|
|
arguments = [];
|
|
path = lib.getExe pkgs.ruff;
|
|
};
|
|
};
|
|
nixd = {
|
|
binary = {
|
|
arguments = [];
|
|
path = lib.getExe pkgs.nixd;
|
|
};
|
|
initialization_options.formatting.command = [(lib.getExe pkgs.alejandra)];
|
|
};
|
|
nil = {
|
|
binary = {
|
|
arguments = [];
|
|
path = lib.getExe pkgs.nil;
|
|
};
|
|
initialization_options.formatting.command = [(lib.getExe pkgs.alejandra)];
|
|
};
|
|
texlab = {
|
|
binary = {
|
|
arguments = [];
|
|
path = lib.getExe pkgs.texlab;
|
|
};
|
|
};
|
|
tinymist = {
|
|
binary = {
|
|
arguments = [];
|
|
path = lib.getExe pkgs.tinymist;
|
|
};
|
|
};
|
|
};
|
|
telemetry = {
|
|
diagnostics = false;
|
|
metrics = false;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|