Commit 28a2dbd

HPCesia <me@hpcesia.com>
2025-10-15 17:42:03
feat: add zed
1 parent 141be8b
Changed files (4)
modules/dev/zed/languages/nix.nix
@@ -0,0 +1,10 @@
+{
+  flake.modules.homeManager.dev-zed = _: {
+    programs.zed-editor.extensions = ["nix"];
+
+    programs.zed-editor.userSettings = {
+      languages.Nix.language_servers = ["nixd" "!nil"];
+      lsp.nixd.settings.formatting.command = ["alejandra"];
+    };
+  };
+}
modules/dev/zed/default.nix
@@ -0,0 +1,35 @@
+{
+  flake.modules.homeManager.dev-zed = _: {
+    programs.zed-editor = {
+      enable = true;
+      extensions = [
+        # Appearance
+        "material-icon-theme"
+
+        # No specific config languages
+        "just"
+        "latex"
+        "lua"
+        "marksman"
+        "mdx"
+        "toml"
+        "typst"
+      ];
+      userSettings = {
+        # Appearance
+        relative_line_numbers = true;
+        icon_theme = "Material Icon Theme";
+        # Privacy
+        telemetry = {
+          diagnostics = false;
+          metrics = false;
+        };
+        # Functionality
+        terminal = {
+          working_directory = "current_project_directory";
+          shell.program = "fish";
+        };
+      };
+    };
+  };
+}
modules/dev/zed/keymap.nix
@@ -0,0 +1,32 @@
+{
+  flake.modules.homeManager.dev-zed = _: {
+    programs.zed-editor = {
+      userSettings.helix_mode = true;
+
+      userKeymaps = [
+        {
+          context = "((vim_mode == helix_normal || vim_mode == helix_select) && !menu)";
+          bindings = {
+            # Zed's Helix mode missing keybindings that I frequently used in Helix
+            "alt-o" = "vim::SelectLargerSyntaxNode";
+            "alt-i" = "vim::SelectSmallerSyntaxNode";
+            "space e" = "project_panel::ToggleFocus";
+            "space g" = "git_panel::ToggleFocus";
+          };
+        }
+        {
+          context = "ProjectPanel && not_editing";
+          bindings = {
+            # I prefered yazi's default keybinding
+            "a" = "project_panel::NewFile";
+            "d" = "project_panel::Delete";
+            "y" = "project_panel::Copy";
+            "x" = "project_panel::Cut";
+            "p" = "project_panel::Paste";
+            "r" = "project_panel::Rename";
+          };
+        }
+      ];
+    };
+  };
+}
modules/dev/editors.nix
@@ -9,6 +9,7 @@
     imports = with config.flake.modules.homeManager; [
       dev-helix
       dev-vscode
+      dev-zed
     ];
 
     xdg.mimeApps.defaultApplications = let