Files
nix-dotfiles/home/programs/zed/default.nix
2025-12-05 15:34:42 +09:00

201 lines
4.0 KiB
Nix

{ config, lib, pkgs, unstable-pkgs, ... }:
let
cfg = config.programs.zed-editor;
in
{
programs.zed-editor = {
package = unstable-pkgs.zed-editor;
extraPackages = with pkgs; [
gopls
groovy
nixd
pyright
];
userSettings = {
auto_update = false;
load_direnv = "shell_hook";
base_keymap = "VSCode";
autosave = "off";
format_on_save = "off";
remove_trailing_whitespace_on_save = true;
show_whitespaces = "trailing";
tab_size = 2;
ui_font_family = "Noto Sans";
ui_font_size = 18;
buffer_font_family = "Fira Code";
buffer_font_size = 16;
terminal.font_family = "Fira Code";
terminal.font_size = 15;
vertical_scroll_margin = 4;
scroll_beyond_last_line = "vertical_scroll_margin";
sticky_scroll.enabled = true;
file_types = {
"Groovy" = [ "Jenkinsfile*" ];
"Dockerfile" = [ "Dockerfile*" ];
"JSONC" = [ "json5" ];
};
tabs = {
git_status = true;
file_icons = true;
show_close_button = "hover";
show_diagnostics = "errors";
};
telemetry = {
diagnostics = false;
metrics = false;
};
diagnostics = {
include_warnings = true;
inline.enabled = true;
};
search = {
case_sensitive = true;
regex = true;
};
relative_line_numbers = "enabled";
vim_mode = true;
vim = {
toggle_relative_line_numbers = true;
};
theme = "Monokai-og";
icon_theme = "Material Icon Theme";
file_scan_exclusions = [
"**/.git"
"**/.svn"
"**/.hg"
"**/.jj"
"**/CVS"
"**/.DS_Store"
"**/Thumbs.db"
"**/.classpath"
"**/.settings"
"**/.direnv"
];
git.inline_blame.enabled = false;
collaboration_panel.button = false;
project_panel.entry_spacing = "standard";
title_bar.show_branch_icon = true;
preview_tabs.enabled = false;
indent_guides = {
enabled = true;
coloring = "indent_aware";
};
colorize_brackets = true;
node = {
path = lib.getExe pkgs.nodejs;
npm_path = lib.getExe' pkgs.nodejs "npm";
};
features.edit_prediction_provider = "copilot";
languages = {
Nix = {
tab_size = 2;
format_on_save = "off";
language_servers = [ "nixd" "!nil" ];
};
Python = {
language_servers = [ "pyright" "ruff" ];
format_on_save = "off";
formatter = [
# {
# code_actions = {
# "source.organizeImports.ruff" = true;
# "source.fixAll.ruff" = true;
# };
# }
{
language_server.name = "ruff";
}
];
};
};
lsp = {
rust-analyzer = { };
nix = { };
nixd = { };
};
};
userKeymaps = [
{
bindings = {
ctrl-b = "workspace::ToggleLeftDock";
ctrl-j = "workspace::ToggleBottomDock";
ctrl-w = "pane::CloseActiveItem";
ctrl-h = "pane::ActivatePreviousItem";
ctrl-l = "pane::ActivateNextItem";
ctrl-shift-h = "pane::ActivateLastItem";
# ctrl-shift-l = "pane::ActivatFirstItem"; # wat?
ctrl-shift-o = "workspace::Open";
};
}
];
extensions = [
"assembly-syntax"
"basher"
"comment"
"dart"
"dart"
"dockerfile"
"env"
"git-firefly"
"graphql"
"groovy"
"html"
"ini"
"just"
"latex"
"live-server"
"log"
"make"
"material-icon-theme"
"mermaid"
"monokai-og"
"neocmake"
"nix"
"ocaml"
"rainbow-csv"
"ruff"
"sql"
"strace"
"toml"
"typst"
];
};
programs.zsh.initContent = lib.mkIf cfg.enable ''
if [[ "$ZED_TERM" == "true" && -n "$TMUX_PANE" ]]; then
unset TMUX_PANE
fi
'';
}