From c17f47817998243cc871558e030aa7fe31d47ec4 Mon Sep 17 00:00:00 2001 From: wi11-holdsworth <83637728+wi11-holdsworth@users.noreply.github.com> Date: Tue, 7 Oct 2025 23:37:22 +1100 Subject: [PATCH] feat: configure zed-editor with home-manager --- hosts/desktop/home.nix | 1 + hosts/laptop/home.nix | 1 + modules/home-manager/bundles/dev.nix | 19 ++++ modules/home-manager/features/zed-editor.nix | 97 ++++++++++++++++++++ modules/nixos/bundles/dev.nix | 1 - 5 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 modules/home-manager/bundles/dev.nix create mode 100644 modules/home-manager/features/zed-editor.nix diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index b3e04b4..e7f3270 100644 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -9,6 +9,7 @@ # keep-sorted start desktop.enable = true; + dev.enable = true; # keep-sorted end # config diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index d79d582..4d0e134 100644 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -9,6 +9,7 @@ # keep-sorted start desktop.enable = true; + dev.enable = true; # keep-sorted end # config diff --git a/modules/home-manager/bundles/dev.nix b/modules/home-manager/bundles/dev.nix new file mode 100644 index 0000000..bb6638a --- /dev/null +++ b/modules/home-manager/bundles/dev.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + ... +}: +let + feature = "dev"; +in +{ + config = lib.mkIf config.${feature}.enable { + # keep-sorted start + zed-editor.enable = lib.mkDefault true; + # keep-sorted end + }; + + imports = [ ]; + + options.${feature}.enable = lib.mkEnableOption "enables ${feature}"; +} diff --git a/modules/home-manager/features/zed-editor.nix b/modules/home-manager/features/zed-editor.nix new file mode 100644 index 0000000..3271284 --- /dev/null +++ b/modules/home-manager/features/zed-editor.nix @@ -0,0 +1,97 @@ +{ + config, + lib, + pkgs, + ... +}: +let + feature = "zed-editor"; +in +{ + config = lib.mkIf config.${feature}.enable { + programs.zed-editor = { + enable = true; + package = pkgs.zed-editor-fhs; + extensions = [ + # keep-sorted start + "catppuccin" + "catppuccin-icons" + "codebook" + "emmet" + "git-firefly" + "haskell" + "html" + "nix" + # keep-sorted end + ]; + extraPackages = with pkgs; [ + # keep-sorted start + haskell-language-server + nil + nixd + package-version-server + rust-analyzer + # keep-sorted end + ]; + installRemoteServer = true; + userSettings = { + # keep-sorted start block=yes + base_keymap = "VSCode"; + buffer_font_family = "JetBrainsMono Nerd Font"; + buffer_font_size = 15; + disable_ai = true; + icon_theme = "Catppuccin Mocha"; + inlay_hints = { + enabled = true; + show_value_hints = true; + show_type_hints = true; + show_parameter_hints = true; + show_other_hints = true; + show_background = false; + edit_debounce_ms = 700; + scroll_debounce_ms = 50; + toggle_on_modifiers_press = { + control = false; + alt = false; + shift = false; + platform = false; + function = false; + }; + }; + # https://wiki.nixos.org/wiki/Zed#rust-analyzer + lsp.rust-analyzer.binary.path = lib.getExe pkgs.rust-analyzer; + minimap = { + show = "auto"; + }; + preferred_line_length = 80; + relative_line_numbers = true; + soft_wrap = "preferred_line_length"; + tab_bar = { + show_nav_history_buttons = false; + }; + tab_size = 2; + tabs = { + file_icons = true; + git_status = true; + }; + telemetry = { + diagnostics = false; + metrics = false; + }; + theme = { + mode = "system"; + light = "One Light"; + dark = "Catppuccin Mocha"; + }; + ui_font_family = "JetBrainsMono Nerd Font"; + ui_font_size = 16; + vim_mode = true; + # keep-sorted end + }; + }; + }; + + imports = [ ]; + + options.${feature}.enable = lib.mkEnableOption "enables ${feature}"; +} diff --git a/modules/nixos/bundles/dev.nix b/modules/nixos/bundles/dev.nix index 5ae477e..6e3f89f 100644 --- a/modules/nixos/bundles/dev.nix +++ b/modules/nixos/bundles/dev.nix @@ -17,7 +17,6 @@ in just mask rusty-man - zed-editor # keep-sorted end ]; };