1{
2 lib,
3 config,
4 pkgs,
5 ...
6}: {
7 options.myHome.programs.zed-editor.enable = lib.mkEnableOption "zed editor";
8
9 config = lib.mkIf config.myHome.programs.zed-editor.enable {
10 programs.zed-editor = {
11 enable = true;
12 extensions = [
13 "env"
14 "fish"
15 "git-firefly"
16 "github-theme"
17 "html"
18 "lua"
19 "nix"
20 "scss"
21 "toml"
22 ];
23 userSettings = {
24 auto_indent_on_paste = true;
25 auto_update = false;
26 buffer_font_size = 14;
27 ui_font_size = 14;
28 buffer_font_family = "JetBrainsMono Nerd Font";
29 use_on_type_format = true;
30 wrap_guides = [100];
31 minimap.show = "auto";
32 preferred_line_length = 100;
33 soft_wrap = "preferred_line_length";
34
35 agent = {
36 default_model = {
37 provider = "google";
38 model = "gemini-2.5-pro";
39 };
40 inline_assistant_model = {
41 provider = "google";
42 model = "gemini-2.5-pro";
43 };
44 default_profile = "ask";
45 };
46
47 languages = {
48 JavaScript = {
49 format_on_save = "on";
50
51 formatter = {
52 external = {
53 command = lib.getExe pkgs.prettier;
54 arguments = ["--stdin-filepath" "{buffer_path}"];
55 };
56 };
57 };
58 TypeScript = {
59 format_on_save = "on";
60
61 formatter = {
62 external = {
63 command = lib.getExe pkgs.prettier;
64 arguments = ["--stdin-filepath" "{buffer_path}"];
65 };
66 };
67 };
68 TSX = {
69 format_on_save = "on";
70
71 formatter = {
72 external = {
73 command = lib.getExe pkgs.prettier;
74 arguments = ["--stdin-filepath" "{buffer_path}"];
75 };
76 };
77 };
78 Nix = {
79 format_on_save = "on";
80 formatter = "language_server";
81 language_servers = [
82 "nixd"
83 ];
84 };
85 JSON = {
86 format_on_save = "on";
87
88 formatter = {
89 external = {
90 command = lib.getExe pkgs.prettier;
91 arguments = ["--stdin-filepath" "{buffer_path}"];
92 };
93 };
94 };
95 CSS = {
96 format_on_save = "on";
97
98 formatter = {
99 external = {
100 command = lib.getExe pkgs.prettier;
101 arguments = ["--stdin-filepath" "{buffer_path}"];
102 };
103 };
104 };
105 };
106 lsp.nixd = {
107 binary.path = lib.getExe pkgs.nixd;
108 settings.formatting.command = [(lib.getExe pkgs.alejandra) "--quiet" "--"];
109 };
110 telemetry = {
111 diagnostics = false;
112 metrics = false;
113 };
114 };
115 };
116 };
117}