diff options
| author | Mel <mel@rnrd.eu> | 2025-04-26 16:25:25 +0200 |
|---|---|---|
| committer | Mel <mel@rnrd.eu> | 2025-04-26 16:25:25 +0200 |
| commit | bca04b418838998c183b4e087ded86856c88a062 (patch) | |
| tree | 3b7c0b0edefd6c9435748f916bfbcaa84dcf2b4a /modules | |
| parent | cfd5cbe46a27a11013fe7b7a5345d82272a5f130 (diff) | |
| download | minerals-bca04b418838998c183b4e087ded86856c88a062.tar.zst minerals-bca04b418838998c183b4e087ded86856c88a062.zip | |
Add Zed Editor configuration
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/home/common.nix | 1 | ||||
| -rw-r--r-- | modules/home/zed.nix | 158 |
2 files changed, 159 insertions, 0 deletions
diff --git a/modules/home/common.nix b/modules/home/common.nix index bf2d347..e2b57f7 100644 --- a/modules/home/common.nix +++ b/modules/home/common.nix @@ -6,6 +6,7 @@ ./shell.nix ./code.nix + ./zed.nix ]; programs = { diff --git a/modules/home/zed.nix b/modules/home/zed.nix new file mode 100644 index 0000000..b8f08a5 --- /dev/null +++ b/modules/home/zed.nix @@ -0,0 +1,158 @@ +{ pkgs, lib, ... }: + +let + inherit (pkgs) + clang-tools + go + gopls + nixd + nil + nixfmt-rfc-style + rust-analyzer + elixir-ls + elixir + ; + + tool = package: lib.getExe package; +in +{ + programs.zed-editor = { + enable = true; + extensions = [ + "nix" + "elixir" + "hare" + "make" + "meson" + + "catppuccin" + ]; + + userSettings = { + # i. general behaviour + + autosave = "on_focus_change"; + format_on_save = "on"; + base_keymap = "VSCode"; + vim_mode = true; + load_direnv = "shell_hook"; # load direnv through shell + + auto_update = false; + auto_install_extensions = { }; + + # ii. pretties + + ui_font_size = 16; + buffer_font_size = 16; + buffer_font_family = "Berkeley Mono"; + show_whitespaces = "selection"; + hour_format = "hour24"; + relative_line_numbers = true; + + theme = { + mode = "system"; + light = "Catppuccin Latte"; + dark = "Catppuccin Mocha"; + }; + + tabs = { + # show both the file type icon and + # git status on the current file tab. + file_icons = true; + git_status = true; + }; + + # iii. the terminal + + terminal = { + alternate_scroll = "off"; + blinking = "off"; + copy_on_select = false; + dock = "bottom"; + env = { + TERM = "alacritty"; + }; + font_family = "Berkeley Mono"; + font_size = 16; + line_height = "comfortable"; + option_as_meta = false; + shell = "system"; + toolbar = { + title = true; + }; + working_directory = "current_project_directory"; + }; + + # iv. all the language support + + languages = { + "C" = { + language_servers = [ "clangd" ]; + formatter = "language_server"; + }; + "C++" = { + language_servers = [ "clangd" ]; + formatter = "language_server"; + }; + "Nix" = { + language_servers = [ + "nixd" + "!nil" + ]; + formatter.external = { + command = tool nixfmt-rfc-style; + arguments = [ + "--quiet" + "--" + ]; + }; + }; + "Go" = { + language_servers = [ "gopls" ]; + formatter.external = { + command = lib.getExe' go "gofmt"; + arguments = [ ]; + }; + }; + "Rust" = { + language_servers = [ "rust-analyzer" ]; + formatter = "language_server"; + }; + "Elixir" = { + language_servers = [ + "!lexical" + "elixir-ls" + "!next-ls" + ]; + formatter = { + external = { + command = lib.getExe' elixir "mix"; + arguments = [ + "format" + "--stdin-filename" + "{buffer_path}" + "-" + ]; + }; + }; + }; + }; + + lsp = { + clangd.binary.path = lib.getExe' clang-tools "clangd"; + gopls.binary.path = tool gopls; + nixd.binary.path = tool nixd; + nil.binary.path = tool nil; + rust-analyzer.binary.path = tool rust-analyzer; + elixir-ls.binary.path = tool elixir-ls; + }; + + # v. yuck + + telemetry = { + diagnostics = false; + metrics = false; + }; + }; + }; +} |
