From 2f0b5cab256434c017a62718bc629434bca6affb Mon Sep 17 00:00:00 2001 From: Aly Raffauf Date: Mon, 15 Jul 2024 15:45:02 -0400 Subject: [PATCH] home/zed: add keymaps options with default additions (#32) --- homeManagerModules/apps/zed/default.nix | 154 +++++++++++++----------- homeManagerModules/options.nix | 6 + 2 files changed, 91 insertions(+), 69 deletions(-) diff --git a/homeManagerModules/apps/zed/default.nix b/homeManagerModules/apps/zed/default.nix index 606ddc8d..0539f5e5 100644 --- a/homeManagerModules/apps/zed/default.nix +++ b/homeManagerModules/apps/zed/default.nix @@ -10,78 +10,94 @@ pkgs.nixd ]; - xdg.configFile."zed/settings.json".text = let - defaults = { - auto_install_extensions = { - adwaita-pastel = true; - basher = true; - docker-compose = true; - dockerfile = true; - git-firefly = true; - haskell = true; - html = true; - ini = true; - just = true; - log = true; - make = true; - nix = true; - ruby = true; - }; - - auto_update = false; - autosave.after_delay.milliseconds = 1000; - buffer_font_family = "NotoSansM Nerd Font"; - buffer_font_size = 14; - current_line_highlight = "line"; - - indent_guides = { - enabled = true; - background_coloring = "disabled"; - coloring = "indent_aware"; - line_width = 1; - }; - - languages = { - Nix = { - formatter.external = { - command = lib.getExe pkgs.alejandra; - arguments = []; + xdg.configFile = { + "zed/keymap.json".text = let + defaults = [ + { + "context" = "Workspace"; + "bindings" = { + "ctrl-p" = "command_palette::Toggle"; + "ctrl-shift-p" = "file_finder::Toggle"; }; + } + ]; + keymaps = defaults ++ config.ar.home.apps.zed.keymaps; + in + lib.generators.toJSON {} keymaps; - tab_size = 2; + "zed/settings.json".text = let + defaults = { + auto_install_extensions = { + adwaita-pastel = true; + basher = true; + docker-compose = true; + dockerfile = true; + git-firefly = true; + haskell = true; + html = true; + ini = true; + just = true; + log = true; + make = true; + nix = true; + ruby = true; }; + + auto_update = false; + autosave.after_delay.milliseconds = 1000; + buffer_font_family = "NotoSansM Nerd Font"; + buffer_font_size = 14; + current_line_highlight = "line"; + + indent_guides = { + enabled = true; + background_coloring = "disabled"; + coloring = "indent_aware"; + line_width = 1; + }; + + languages = { + Nix = { + formatter.external = { + command = lib.getExe pkgs.alejandra; + arguments = []; + }; + + tab_size = 2; + }; + }; + + preferred_line_length = 80; + + tab_bar = { + show = false; + show_nav_history_buttons = false; + }; + + tabs = { + close_position = "right"; + git_status = true; + }; + + telemetry = { + diagnostics = true; + metrics = true; + }; + + terminal.font_size = 12; + + theme = { + dark = "Adwaita Pastel Dark"; + light = "Adwaita Pastel Light"; + mode = "system"; + }; + + ui_font_size = 16; + vim_mode = false; }; - - preferred_line_length = 80; - - tab_bar = { - show = false; - show_nav_history_buttons = false; - }; - - tabs = { - close_position = "right"; - git_status = true; - }; - - telemetry = { - diagnostics = true; - metrics = true; - }; - - terminal.font_size = 12; - - theme = { - dark = "Adwaita Pastel Dark"; - light = "Adwaita Pastel Light"; - mode = "system"; - }; - - ui_font_size = 16; - vim_mode = false; - }; - settings = defaults // config.ar.home.apps.zed.settings; - in - lib.generators.toJSON {} settings; + settings = defaults // config.ar.home.apps.zed.settings; + in + lib.generators.toJSON {} settings; + }; }; } diff --git a/homeManagerModules/options.nix b/homeManagerModules/options.nix index 53607a74..567d7f73 100644 --- a/homeManagerModules/options.nix +++ b/homeManagerModules/options.nix @@ -57,6 +57,12 @@ in { enable = lib.mkEnableOption "Zed text editor."; package = lib.mkPackageOption pkgs "zed-editor" {}; + keymaps = lib.mkOption { + description = "Zed keymaps."; + default = []; + type = lib.types.listOf lib.types.attrs; + }; + settings = lib.mkOption { description = "Zed settings."; default = {};