Skip to content

Commit 1d2e723

Browse files
committed
weekend hacking
1 parent 59ac2fa commit 1d2e723

File tree

5 files changed

+254
-38
lines changed

5 files changed

+254
-38
lines changed

flake.lock

Lines changed: 69 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
};
1919
impermanence.url = "github:nix-community/impermanence";
2020
# neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
21+
helix.url = "github:helix-editor/helix";
2122

2223
# niri-unstable = {
2324
# url = "github:YaLTeR/niri/a11fe23cbf6ba01ae4c23679aa2f7d7d8b44baf4";

home/default.nix

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,17 @@
214214
go = {
215215
enable = true;
216216
};
217+
lf = {
218+
enable = true;
219+
settings = {
220+
previewer = "${pkgs.writeScript "./previewer.sh" ''
221+
#!/bin/sh
222+
git log --pretty=format:'%an, %ad: %s' --date=relative -- $@
223+
''}";
224+
cursorpreviewfmt = "";
225+
ratios = [1 1];
226+
};
227+
};
217228
nh = {
218229
enable = true;
219230
flake = "/etc/nixos";

home/helix.nix

Lines changed: 162 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,22 @@
1-
{pkgs, ...}: {
1+
{
2+
inputs,
3+
pkgs,
4+
...
5+
}: {
26
programs.helix = {
37
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+
};
418
settings = {
5-
theme = "kanagawa";
19+
theme = "mykanagawa";
620
editor = {
721
bufferline = "multiple";
822
line-number = "relative";
@@ -11,24 +25,161 @@
1125
normal = "block";
1226
select = "underline";
1327
};
28+
soft-wrap = {
29+
enable = true;
30+
};
31+
inline-diagnostics = {
32+
cursor-line = "hint";
33+
};
34+
lsp = {
35+
goto-reference-include-declaration = false;
36+
};
1437
cursorline = true;
1538
color-modes = true;
1639
indent-guides = {
1740
render = true;
1841
character = "·";
42+
skip-levels = 1;
1943
};
2044
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"];
2748
};
2849
};
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+
};
32183
};
33184
};
34185
};

0 commit comments

Comments
 (0)