{ pkgs, lib, config, ... }: { options.mods.terminal.development.enable = lib.mkEnableOption "enables cli editor"; config = lib.mkIf config.mods.terminal.development.enable { home.packages = with pkgs; [ # Nix nil # Rust rust-analyzer lldb_18 # Shaders glsl_analyzer wgsl-analyzer # Python black ]; programs.direnv = { enable = true; nix-direnv.enable = true; enableZshIntegration = lib.mkIf config.mods.terminal.zsh.enable true; }; home.sessionVariables.EDITOR = "hx"; programs.zsh.sessionVariables.EDITOR = "hx"; programs.helix = { enable = true; package = pkgs.evil-helix; settings = { keys.normal = { "esc" = [ "collapse_selection" "keep_primary_selection" ]; "Z" = { "Q" = ":quit!"; "Z" = ":write-quit!"; }; "V" = [ "select_mode" "extend_to_line_bounds" ]; }; editor = { line-number = "relative"; completion-replace = true; bufferline = "always"; rulers = [ 80 ]; soft-wrap.enable = true; indent-guides.render = true; cursor-shape = { normal = "block"; insert = "bar"; select = "underline"; }; }; }; languages.language-server = { glsl.command = "${pkgs.glsl_analyzer}/bin/glsl_analyzer"; wgsl.command = "${pkgs.wgsl-analyzer}/bin/wgsl-analyzer"; }; languages.language = [ { name = "nix"; auto-format = true; formatter.command = "${pkgs.nixfmt-classic}/bin/nixfmt"; } { name = "rust"; auto-format = true; formatter.command = "rustfmt"; } { name = "glsl"; language-servers = [ "glsl" ]; } { name = "wgsl"; language-servers = [ "wgsl" ]; } { name = "python"; auto-format = true; formatter = { command = "${pkgs.black}/bin/black"; args = [ "-" "--quiet" "--line-length=79" ]; }; } ]; }; }; }