|
1 | | -{pkgs, ...}: { |
| 1 | +{ |
| 2 | + inputs, |
| 3 | + pkgs, |
| 4 | + ... |
| 5 | +}: { |
2 | 6 | programs.helix = { |
3 | 7 | enable = true; |
| 8 | + package = inputs.helix.packages.${pkgs.system}.default; |
| 9 | + themes = { |
| 10 | + mykanagawa = { |
| 11 | + inherits = "kanagawa"; |
| 12 | + "ui.bufferline.active" = { |
| 13 | + bg = "blue"; |
| 14 | + fg = "black"; |
| 15 | + }; |
| 16 | + }; |
| 17 | + }; |
4 | 18 | settings = { |
5 | | - theme = "kanagawa"; |
| 19 | + theme = "mykanagawa"; |
6 | 20 | editor = { |
7 | 21 | bufferline = "multiple"; |
8 | 22 | line-number = "relative"; |
|
11 | 25 | normal = "block"; |
12 | 26 | select = "underline"; |
13 | 27 | }; |
| 28 | + soft-wrap = { |
| 29 | + enable = true; |
| 30 | + }; |
| 31 | + inline-diagnostics = { |
| 32 | + cursor-line = "hint"; |
| 33 | + }; |
| 34 | + lsp = { |
| 35 | + goto-reference-include-declaration = false; |
| 36 | + }; |
14 | 37 | cursorline = true; |
15 | 38 | color-modes = true; |
16 | 39 | indent-guides = { |
17 | 40 | render = true; |
18 | 41 | character = "·"; |
| 42 | + skip-levels = 1; |
19 | 43 | }; |
20 | 44 | statusline = { |
21 | | - left = ["mode" "spacer" "version-control" "workspace-diagnostics" "file-name" "diagnostics"]; |
22 | | - center = []; |
23 | | - right = ["file-type" "position-percentage" "total-line-numbers"]; |
24 | | - mode.normal = "NORMAL"; |
25 | | - mode.insert = "INSERT"; |
26 | | - mode.select = "SELECT"; |
| 45 | + left = ["mode" "spacer" "version-control" "workspace-diagnostics"]; |
| 46 | + center = ["file-name" "spinner"]; |
| 47 | + right = ["diagnostics" "file-type" "position-percentage" "total-line-numbers"]; |
27 | 48 | }; |
28 | 49 | }; |
29 | | - keys.normal = { |
30 | | - tab = "goto_next_buffer"; |
31 | | - "S-tab" = "goto_previous_buffer"; |
| 50 | + keys = { |
| 51 | + normal = { |
| 52 | + tab = "goto_next_buffer"; |
| 53 | + S-tab = "goto_previous_buffer"; |
| 54 | + backspace = "jump_backward"; |
| 55 | + S-backspace = "jump_forward"; |
| 56 | + H = "goto_first_nonwhitespace"; |
| 57 | + L = "goto_line_end"; |
| 58 | + "-" = [":open %sh{lf --print-selection %{buffer_name}}" ":redraw"]; |
| 59 | + w = "move_next_sub_word_start"; |
| 60 | + e = "move_next_sub_word_end"; |
| 61 | + b = "move_prev_sub_word_start"; |
| 62 | + C-h = "jump_view_left"; |
| 63 | + C-j = "jump_view_down"; |
| 64 | + C-k = "jump_view_up"; |
| 65 | + C-l = "jump_view_right"; |
| 66 | + K = "hover"; |
| 67 | + esc = ["collapse_selection" "keep_primary_selection"]; |
| 68 | + A-k = "keep_selections"; |
| 69 | + space = { |
| 70 | + g = { |
| 71 | + b = ":echo %sh{git log --pretty=format:'%%an, %%ad: %%s' --date=relative --no-patch -1 -L %{cursor_line},+1:%{buffer_name}}"; |
| 72 | + g = "changed_file_picker"; |
| 73 | + }; |
| 74 | + t = ":! gotest ./$(dirname %{buffer_name})"; |
| 75 | + T = '':! echo "fd -ego . $(dirname %{buffer_name}) | entr -cr gotest ./$(dirname %{buffer_name})" | wl-copy''; |
| 76 | + tab = ":buffer-close"; |
| 77 | + k = ":debug-eval %{selection}"; |
| 78 | + G = { |
| 79 | + t = ":debug-start test %sh{dirname %{buffer_name}}"; |
| 80 | + r = ":debug-remote remote 127.0.0.1:2345"; |
| 81 | + }; |
| 82 | + }; |
| 83 | + }; |
| 84 | + select = { |
| 85 | + w = "extend_next_sub_word_start"; |
| 86 | + e = "extend_next_sub_word_end"; |
| 87 | + b = "extend_prev_sub_word_start"; |
| 88 | + A-k = "keep_selections"; |
| 89 | + esc = ["collapse_selection" "keep_primary_selection" "normal_mode"]; |
| 90 | + }; |
| 91 | + }; |
| 92 | + }; |
| 93 | + languages = { |
| 94 | + language = [ |
| 95 | + { |
| 96 | + name = "nix"; |
| 97 | + auto-format = true; |
| 98 | + formatter.command = "alejandra"; |
| 99 | + } |
| 100 | + { |
| 101 | + name = "go"; |
| 102 | + auto-format = true; |
| 103 | + formatter = { |
| 104 | + command = "bash"; |
| 105 | + args = ["-c" "${pkgs.gofumpt}/bin/gofumpt | ${pkgs.goimports-reviser}/bin/goimports-reviser -rm-unused -"]; |
| 106 | + }; |
| 107 | + language-servers = ["gopls" "golangci-lint-langserver"]; |
| 108 | + indent = { |
| 109 | + tab-width = 8; |
| 110 | + unit = "\t"; |
| 111 | + }; |
| 112 | + debugger = { |
| 113 | + name = "go"; |
| 114 | + transport = "tcp"; |
| 115 | + command = "${pkgs.delve}/bin/dlv"; |
| 116 | + args = ["dap"]; |
| 117 | + port-arg = "-l 127.0.0.1:{}"; |
| 118 | + templates = [ |
| 119 | + { |
| 120 | + name = "test"; |
| 121 | + request = "launch"; |
| 122 | + completion = [ |
| 123 | + { |
| 124 | + name = "test"; |
| 125 | + completion = "directory"; |
| 126 | + default = "./..."; |
| 127 | + } |
| 128 | + ]; |
| 129 | + args = { |
| 130 | + mode = "test"; |
| 131 | + program = "{0}"; |
| 132 | + buildFlags = "-tags=unit,integration,e2e"; |
| 133 | + }; |
| 134 | + } |
| 135 | + { |
| 136 | + name = "remote"; |
| 137 | + request = "attach"; |
| 138 | + args = { |
| 139 | + mode = "remote"; |
| 140 | + }; |
| 141 | + } |
| 142 | + ]; |
| 143 | + }; |
| 144 | + } |
| 145 | + ]; |
| 146 | + language-server.golangci-lint-langserver = with pkgs; { |
| 147 | + command = "${golangci-lint-langserver}/bin/golangci-lint-langserver"; |
| 148 | + config = { |
| 149 | + command = [ |
| 150 | + "${golangci-lint}/bin/golangci-lint" |
| 151 | + "run" |
| 152 | + "--output.json.path=stdout" |
| 153 | + "--show-stats=false" |
| 154 | + "--issues-exit-code=1" |
| 155 | + ]; |
| 156 | + }; |
| 157 | + }; |
| 158 | + language-server.gopls = with pkgs; { |
| 159 | + command = "${gopls}/bin/gopls"; |
| 160 | + config = { |
| 161 | + buildFlags = ["-tags=unit,integration,e2e"]; |
| 162 | + directoryFilters = ["-.git"]; |
| 163 | + gofumpt = true; |
| 164 | + codelenses = { |
| 165 | + test = true; |
| 166 | + vulncheck = true; |
| 167 | + }; |
| 168 | + semanticTokens = true; |
| 169 | + staticcheck = true; |
| 170 | + vulncheck = "Imports"; |
| 171 | + hints = { |
| 172 | + assignVariableTypes = true; |
| 173 | + compositeLiteralFields = true; |
| 174 | + compositeLiteralTypes = true; |
| 175 | + constantValues = true; |
| 176 | + functionTypeParameters = true; |
| 177 | + parameterNames = true; |
| 178 | + rangeVariableTypes = true; |
| 179 | + }; |
| 180 | + completeUnimported = true; |
| 181 | + deepCompletion = true; |
| 182 | + }; |
32 | 183 | }; |
33 | 184 | }; |
34 | 185 | }; |
|
0 commit comments