{ config, pkgs, lib, inputs, system, ... }: let alejandra = lib.getExe inputs.alejandra.packages.${system}.default; nil = lib.getExe inputs.nil.packages.${system}.default; in { programs.helix = { enable = true; package = inputs.helix.packages."${system}".helix; settings = { editor = { auto-pairs = false; lsp.display-messages = true; line-number = "relative"; }; keys.normal = { C-p = "file_picker"; C-b = "buffer_picker"; "{" = ["goto_prev_paragraph" "collapse_selection"]; "}" = ["goto_next_paragraph" "collapse_selection"]; "0" = "goto_line_start"; "$" = "goto_line_end"; "^" = "goto_first_nonwhitespace"; G = "goto_file_end"; V = ["select_mode" "extend_to_line_bounds"]; }; select = { "{" = ["extend_to_line_bounds" "goto_prev_paragraph"]; "}" = ["extend_to_line_bounds" "goto_next_paragraph"]; "0" = "goto_line_start"; "$" = "goto_line_end"; "^" = "goto_first_nonwhitespace"; G = "goto_file_end"; D = ["extend_to_line_bounds" "delete_selection" "normal_mode"]; C = ["goto_line_start" "extend_to_line_bounds" "change_selection"]; "%" = "match_brackets"; V = ["extend_to_line_bounds"]; i = "select_textobject_inner"; a = "select_textobject_around"; k = ["extend_line_up" "extend_to_line_bounds"]; j = ["extend_line_down" "extend_to_line_bounds"]; }; }; languages = [ { name = "nix"; auto-format = true; language-server = {command = nil;}; formatter = { command = alejandra; args = ["-q"]; }; } ]; }; }