dnf-test/dnf/modules/home/zed.nix
2025-10-27 00:08:16 -02:00

129 lines
3 KiB
Nix

{
pkgs,
lib,
config,
...
}:
let
cfg = config.darkone.home.zed;
in
{
options = {
darkone.home.zed = {
enable = lib.mkEnableOption "Preconfigured ZED editor";
};
};
config = lib.mkIf cfg.enable {
# Dependencies
programs.alacritty.enable = true;
# Editor
programs.zed-editor = {
enable = true;
extensions = [
"nix"
"toml"
"php"
"xml"
"php"
"catppuccin"
"html"
"astro"
"justfile"
"make"
];
# Zed options -> json config
userSettings = {
assistant = {
enabled = true;
version = "2";
default_open_ai_model = null;
### PROVIDER OPTIONS
### zed.dev models { claude-3-5-sonnet-latest } requires github connected
### anthropic models { claude-3-5-sonnet-latest claude-3-haiku-latest claude-3-opus-latest } requires API_KEY
### copilot_chat models { gpt-4o gpt-4 gpt-3.5-turbo o1-preview } requires github connected
default_model = {
provider = "zed.dev";
model = "claude-3-5-sonnet-latest";
};
# inline_alternatives = [
# {
# provider = "copilot_chat";
# model = "gpt-3.5-turbo";
# }
# ];
};
node = {
path = lib.getExe pkgs.nodejs;
npm_path = lib.getExe' pkgs.nodejs "npm";
};
hour_format = "hour24";
auto_update = false;
terminal = {
alternate_scroll = "off";
blinking = "off";
copy_on_select = false;
dock = "bottom";
detect_venv = {
on = {
directories = [
".env"
"env"
".venv"
"venv"
];
activate_script = "default";
};
};
env = {
TERM = "alacritty";
};
font_family = "JetBrainsMono Nerd Font Mono";
font_features = null;
font_size = 16;
line_height = "comfortable";
option_as_meta = false;
button = false;
shell = "system";
toolbar = {
title = true;
};
working_directory = "current_project_directory";
};
lsp = {
rust-analyzer = {
binary = {
path_lookup = true;
};
};
nix = {
binary = {
path_lookup = true;
};
};
};
#vim_mode = true;
## tell zed to use direnv and direnv can use a flake.nix environment.
load_direnv = "shell_hook";
base_keymap = "VSCode";
theme = {
mode = "system";
light = "One Light";
dark = "One Dark";
};
ui_font_size = 16;
buffer_font_size = 16;
};
};
};
}