Home

dotnix @main - refs - log -
-
https://git.jolheiser.com/dotnix.git
My nix dotfiles
tree log patch
feat: zed FHS Signed-off-by: jolheiser <git@jolheiser.com>
Signature
-----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgBTEvCQk6VqUAdN2RuH6bj1dNkY oOpbPWj+jw4ua1B1cAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQIiTjMskbTHnYSNJN67A1v/2Qz+5Uyioq6krFHxxq2p3iKFiTe4ATC39KL7XDUInm5 /GOZYxqyF7ZZoGRl/Mpw0= -----END SSH SIGNATURE-----
jolheiser <git@jolheiser.com>
5 months ago
1 changed files, 109 additions(+), 20 deletions(-)
M apps/gui/zed.nix -> apps/gui/zed.nix
diff --git a/apps/gui/zed.nix b/apps/gui/zed.nix
index d6b5ba2a0836dedf78083f6eab2ef0e79d5456a3..6f52f48c43af68996748c0f9af98e75770860ff4 100644
--- a/apps/gui/zed.nix
+++ b/apps/gui/zed.nix
@@ -1,26 +1,115 @@
 { pkgs, ... }:
+let
+  zed-fhs = pkgs.buildFHSUserEnv {
+    name = "zed";
+    targetPkgs = pkgs: [ pkgs.zed-editor ];
+    runScript = "zed";
+  };
+in
 {
-  home.packages = [ pkgs.zed-editor ];
-  xdg.configFile."zed/settings.json".text = builtins.toJSON {
-    buffer_font_family = "Monaspace Neon";
-    buffer_font_size = 16;
-    soft_wrap = "editor_width";
-    telemetry = {
-      diagnostics = false;
-      metrics = false;
-    };
-    terminal = {
-      font_family = "Monaspace Neon";
-      shell = {
-        program = "nu";
+  home.packages = [ zed-fhs ];
+  xdg.configFile = {
+    "zed/settings.json".text = builtins.toJSON {
+      buffer_font_family = "Monaspace Neon";
+      buffer_font_size = 16;
+      soft_wrap = "editor_width";
+      telemetry = {
+        diagnostics = false;
+        metrics = false;
+      };
+      terminal = {
+        font_family = "Monaspace Neon";
+        shell = {
+          program = "nu";
+        };
+      };
+      theme = "Catppuccin Mocha";
+      ui_font_size = 16;
+      vim_mode = true;
+      relative_line_numbers = true;
+      vim = {
+        use_system_clipboard = "always";
+        use_multiline_find = true;
+      };
+      tab_bar.show = false;
+      toolbar = {
+        breadcrumbs = true;
+        quick_actions = false;
+      };
+      assistant = {
+        version = "1";
+        provider.name = "anthropic";
       };
     };
-    theme = "Catppuccin Mocha";
-    ui_font_size = 16;
-    vim_mode = false;
-    assistant = {
-      version = "1";
-      provider.name = "anthropic";
-    };
+    "zed/keymap.json".text =
+      let
+        leader = "space";
+      in
+      builtins.toJSON [
+        {
+          "context" = "Dock || Terminal || Editor";
+          "bindings" = {
+            "ctrl-h" = [
+              "workspace::ActivatePaneInDirection"
+              "Left"
+            ];
+            "ctrl-l" = [
+              "workspace::ActivatePaneInDirection"
+              "Right"
+            ];
+            "ctrl-k" = [
+              "workspace::ActivatePaneInDirection"
+              "Up"
+            ];
+            "ctrl-j" = [
+              "workspace::ActivatePaneInDirection"
+              "Down"
+            ];
+          };
+        }
+        {
+          "context" = "Editor && VimControl && !VimWaiting && !menu";
+          "bindings" = {
+            "${leader} b" = "editor::ToggleGitBlame";
+            "${leader} k" = "editor::Hover";
+            "${leader} a" = "editor::ToggleCodeActions";
+            "${leader} l f" = "editor::Format";
+            "${leader} d" = "diagnostics::Deploy";
+            "${leader} f" = "file_finder::Toggle";
+            "${leader} o" = "tab_switcher::Toggle";
+            "${leader} e" = "workspace::ToggleLeftDock";
+            "${leader} /" = "workspace::NewSearch";
+            "n" = "search::SelectNextMatch";
+            "shift-n" = "search::SelectPrevMatch";
+            "${leader} t" = "workspace::NewCenterTerminal";
+            "${leader} c" = "editor::ToggleComments";
+            "${leader} w" = "workspace::Save";
+          };
+        }
+        {
+          "context" = "Editor && vim_mode == visual && !VimWaiting && !VimObject";
+          "bindings" = {
+            "shift-j" = "editor::MoveLineDown";
+            "shift-k" = "editor::MoveLineUp";
+          };
+        }
+        {
+          "context" = "Workspace";
+          "bindings" = {
+            "ctrl-z" = "workspace::ToggleZoom";
+            "cmd-k" = [
+              "projects::OpenRecent"
+              { "create_new_window" = false; }
+            ];
+            "ctrl-x" = "tab_switcher::CloseSelectedItem";
+          };
+        }
+        {
+          "context" = "Terminal";
+          "bindings" = {
+            "cmd-t" = "workspace::NewTerminal";
+          };
+        }
+      ];
   };
 }