dotnix/apps/gui/zed.nix

120 lines
3.2 KiB
Nix

{ pkgs, ... }:
let
zed-fhs = pkgs.buildFHSUserEnv {
name = "zed";
targetPkgs =
pkgs: with pkgs; [
zed-editor
nixd
];
runScript = "zed";
};
in
{
home.packages = [ zed-fhs ];
xdg.configFile = {
"zed/settings.json".text = builtins.toJSON {
buffer_font_family = "Monaspace Neon";
buffer_font_size = 13;
soft_wrap = "editor_width";
telemetry = {
diagnostics = false;
metrics = false;
};
terminal = {
font_family = "Monaspace Neon";
shell = {
program = "nu";
};
};
theme = "Catppuccin Mocha";
ui_font_size = 15;
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";
};
};
"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";
};
}
];
};
}