159 lines
4.1 KiB
Nix
159 lines
4.1 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (lib) mkIf mkEnableOption mkForce getExe;
|
|
cfg = config.editor.zed;
|
|
in {
|
|
options = {
|
|
editor.zed.enable =
|
|
mkEnableOption "enable zed editor";
|
|
};
|
|
config = mkIf cfg.enable {
|
|
programs.zed-editor = {
|
|
enable = true;
|
|
extensions = [
|
|
"bash"
|
|
"fsharp"
|
|
"justfile"
|
|
"nix"
|
|
"typst"
|
|
];
|
|
userSettings = {
|
|
vim_mode = true;
|
|
ui_font_size = mkForce 16;
|
|
buffer_font_size = mkForce 16;
|
|
# features = {inline_completion_provider = "none";};
|
|
auto_update = false;
|
|
languages = {
|
|
"FSharp" = {
|
|
language-servers = [
|
|
"fsautocomplete"
|
|
];
|
|
};
|
|
"Nix" = {
|
|
language-servers = [
|
|
"nil"
|
|
];
|
|
# 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 = ["-i" "{buffer_path}"];
|
|
# };
|
|
# };
|
|
};
|
|
"Python" = {
|
|
format_on_save = "on";
|
|
formatter = [
|
|
{
|
|
language_server = {
|
|
name = "ruff";
|
|
};
|
|
}
|
|
];
|
|
language_servers = ["ruff"];
|
|
};
|
|
};
|
|
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;
|
|
# };
|
|
# };
|
|
ruff = {
|
|
binary = {
|
|
arguments = [];
|
|
path = getExe pkgs.ruff;
|
|
};
|
|
};
|
|
# nixd = {
|
|
# binary = {
|
|
# arguments = [];
|
|
# path = getExe pkgs.nixd;
|
|
# };
|
|
# initialization_options.formatting.command = [(getExe pkgs.alejandra)];
|
|
# };
|
|
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;
|
|
};
|
|
};
|
|
vscode-json-language-server = {
|
|
binary = {
|
|
path = getExe pkgs.nodePackages.vscode-json-languageserver;
|
|
};
|
|
};
|
|
yaml-language-server = {
|
|
binary = {
|
|
path = getExe pkgs.yaml-language-server;
|
|
};
|
|
};
|
|
};
|
|
telemetry = {
|
|
diagnostics = false;
|
|
metrics = false;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|