{ 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 = { theme = "solarized_peninsula"; editor = { auto-pairs = false; file-picker.hidden = false; lsp.display-messages = true; line-number = "relative"; }; keys = { normal = { ";" = "command_mode"; 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"]; }; }; }; themes = { solarized_peninsula = { palette = { base03 = "#002b36"; base025 = "#03303b"; base02 = "#073642"; base0175 = "#16404b"; base015 = "#2c4f59"; base01 = "#586e75"; base00 = "#657b83"; base0 = "#839496"; base1 = "#93a1a1"; base2 = "#eee8d5"; base3 = "#fdf6e3"; yellow = "#b58900"; orange = "#cb4b16"; red = "#dc322f"; magenta = "#d33682"; violet = "#6c71c4"; blue = "#268bd2"; cyan = "#2aa198"; green = "#859900"; transparent = "none"; gray = "#665c54"; dark-gray = "#3c3836"; white = "#fbf1c7"; black = "#282828"; }; "ui.menu" = "transparent"; "ui.menu.selected" = {modifiers = ["reversed"];}; "ui.linenr" = { fg = "gray"; bg = "dark-gray"; }; "ui.popup" = {modifiers = ["reversed"];}; "ui.linenr.selected" = { fg = "white"; bg = "black"; modifiers = ["bold"]; }; "ui.selection" = { fg = "black"; bg = "blue"; }; "ui.selection.primary" = {modifiers = ["reversed"];}; "comment" = {fg = "gray";}; "ui.statusline" = { fg = "white"; bg = "dark-gray"; }; "ui.statusline.inactive" = { fg = "dark-gray"; bg = "white"; }; "ui.help" = { fg = "dark-gray"; bg = "white"; }; "ui.cursor" = {modifiers = ["reversed"];}; "variable" = "red"; "variable.builtin" = "orange"; "constant.numeric" = "orange"; "constant" = "orange"; "attributes" = "yellow"; "type" = "yellow"; "ui.cursor.match" = { fg = "yellow"; modifiers = ["underlined"]; }; "string" = "green"; "variable.other.member" = "red"; "constant.character.escape" = "cyan"; "function" = "blue"; "constructor" = "blue"; "special" = "blue"; "keyword" = "magenta"; "label" = "magenta"; "namespace" = "blue"; "diff.plus" = "green"; "diff.delta" = "yellow"; "diff.minus" = "red"; "diagnostic" = {modifiers = ["underlined"];}; "ui.gutter" = {bg = "black";}; "info" = "blue"; "hint" = "dark-gray"; "debug" = "dark-gray"; "warning" = "yellow"; "error" = "red"; }; }; languages = [ { name = "nix"; auto-format = true; language-server = {command = nil;}; formatter = { command = alejandra; args = ["-q"]; }; } ]; }; }