tangled
alpha
login
or
join now
bwc9876.dev
/
nixos-config
1
fork
atom
Flake for my NixOS devices
1
fork
atom
overview
issues
pulls
pipelines
Keybind for which key
bwc9876.dev
8 months ago
92c52cc0
fb3e3f41
verified
This commit was signed with the committer's
known signature
.
bwc9876.dev
SSH Key Fingerprint:
SHA256:DanMEP/RNlSC7pAVbnXO6wzQV00rqyKj053tz4uH5gQ=
+139
-131
1 changed file
expand all
collapse all
unified
split
nixosModules
dev
nvim.nix
+139
-131
nixosModules/dev/nvim.nix
···
4
4
config,
5
5
lib,
6
6
...
7
7
-
}: {
7
7
+
}:
8
8
+
{
8
9
environment.systemPackages = with pkgs; [
9
10
ripgrep
10
11
fd
11
12
];
12
13
13
14
home-manager.users.bean = {
14
14
-
imports = [inputs.nixvim.homeManagerModules.nixvim];
15
15
+
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
15
16
16
17
programs.nixvim = {
17
18
enable = true;
···
62
63
background = true;
63
64
};
64
65
virtual_text = {
65
65
-
errors = ["italic"];
66
66
-
hints = ["italic"];
67
67
-
information = ["italic"];
68
68
-
warnings = ["italic"];
69
69
-
ok = ["italic"];
66
66
+
errors = [ "italic" ];
67
67
+
hints = [ "italic" ];
68
68
+
information = [ "italic" ];
69
69
+
warnings = [ "italic" ];
70
70
+
ok = [ "italic" ];
70
71
};
71
72
underlines = {
72
72
-
errors = ["underline"];
73
73
-
hints = ["underline"];
74
74
-
information = ["underline"];
75
75
-
warnings = ["underline"];
73
73
+
errors = [ "underline" ];
74
74
+
hints = [ "underline" ];
75
75
+
information = [ "underline" ];
76
76
+
warnings = [ "underline" ];
76
77
};
77
78
};
78
79
};
···
93
94
'';
94
95
95
96
autoGroups = {
96
96
-
restore_cursor = {};
97
97
-
open_neotree = {};
97
97
+
restore_cursor = { };
98
98
+
open_neotree = { };
98
99
};
99
100
100
101
opts = {
···
115
116
autoCmd = [
116
117
{
117
118
group = "restore_cursor";
118
118
-
event = ["BufReadPost"];
119
119
+
event = [ "BufReadPost" ];
119
120
pattern = "*";
120
121
callback.__raw = ''
121
122
function()
···
132
133
}
133
134
{
134
135
group = "open_neotree";
135
135
-
event = ["BufRead"];
136
136
+
event = [ "BufRead" ];
136
137
pattern = "*";
137
138
once = true;
138
139
callback.__raw = ''
···
160
161
};
161
162
};
162
163
163
163
-
keymaps = let
164
164
-
prefixMap = pre: maps:
165
165
-
builtins.map (k: {
166
166
-
action = "<cmd>${k.action}<cr>";
167
167
-
key = "${pre}${k.key}";
168
168
-
options = k.options;
169
169
-
})
170
170
-
maps;
171
171
-
in
164
164
+
keymaps =
165
165
+
let
166
166
+
prefixMap =
167
167
+
pre: maps:
168
168
+
builtins.map (k: {
169
169
+
action = "<cmd>${k.action}<cr>";
170
170
+
key = "${pre}${k.key}";
171
171
+
options = k.options;
172
172
+
}) maps;
173
173
+
in
172
174
lib.lists.flatten (
173
173
-
builtins.map (g:
174
174
-
if builtins.hasAttr "group" g
175
175
-
then prefixMap g.prefix g.keys
176
176
-
else g) [
175
175
+
builtins.map (g: if builtins.hasAttr "group" g then prefixMap g.prefix g.keys else g) [
177
176
{
178
177
group = "Tab Navigation";
179
178
prefix = "<Tab>";
···
294
293
}
295
294
{
296
295
action.__raw = "[[<C-\\><C-n><C-w>]]";
297
297
-
mode = ["t"];
296
296
+
mode = [ "t" ];
298
297
key = "<C-w>";
299
298
}
300
299
{
301
300
action.__raw = "[[<C-\\><C-n>]]";
302
302
-
mode = ["t"];
301
301
+
mode = [ "t" ];
303
302
key = "<esc>";
304
303
}
304
304
+
{
305
305
+
action = "<cmd>WhichKey<cr>";
306
306
+
key = "<C-/>";
307
307
+
}
305
308
]
306
309
);
307
310
308
311
extraPlugins = with pkgs.vimPlugins; [
309
309
-
{plugin = pkgs.nvim-mdx;}
310
310
-
{plugin = pkgs.nvim-flatten;}
311
311
-
{plugin = tiny-devicons-auto-colors-nvim;}
312
312
-
{plugin = nvim-biscuits;}
312
312
+
{ plugin = pkgs.nvim-mdx; }
313
313
+
{ plugin = pkgs.nvim-flatten; }
314
314
+
{ plugin = tiny-devicons-auto-colors-nvim; }
315
315
+
{ plugin = nvim-biscuits; }
313
316
];
314
317
315
318
plugins = {
···
381
384
opts = {
382
385
position = "center";
383
386
};
384
384
-
layout = let
385
385
-
o = {
386
386
-
position = "center";
387
387
-
};
388
388
-
txt = s: {
389
389
-
type = "text";
390
390
-
val = s;
391
391
-
opts =
392
392
-
{
387
387
+
layout =
388
388
+
let
389
389
+
o = {
390
390
+
position = "center";
391
391
+
};
392
392
+
txt = s: {
393
393
+
type = "text";
394
394
+
val = s;
395
395
+
opts = {
393
396
hl = "Keyword";
394
394
-
}
395
395
-
// o;
396
396
-
};
397
397
-
grp = g: {
398
398
-
type = "group";
399
399
-
val = g;
400
400
-
opts.spacing = 1;
401
401
-
};
402
402
-
btn = {
403
403
-
val,
404
404
-
onClick,
405
405
-
...
406
406
-
}: {
407
407
-
type = "button";
408
408
-
inherit val;
409
409
-
opts = o;
410
410
-
on_press.__raw = "function() vim.cmd[[${onClick}]] end";
411
411
-
};
412
412
-
cmd = {
413
413
-
command,
414
414
-
width,
415
415
-
height,
416
416
-
}: {
417
417
-
type = "terminal";
418
418
-
inherit command width height;
419
419
-
opts = o;
420
420
-
};
421
421
-
pad = {
422
422
-
type = "padding";
423
423
-
val = 2;
424
424
-
};
425
425
-
in
397
397
+
} // o;
398
398
+
};
399
399
+
grp = g: {
400
400
+
type = "group";
401
401
+
val = g;
402
402
+
opts.spacing = 1;
403
403
+
};
404
404
+
btn =
405
405
+
{
406
406
+
val,
407
407
+
onClick,
408
408
+
...
409
409
+
}:
410
410
+
{
411
411
+
type = "button";
412
412
+
inherit val;
413
413
+
opts = o;
414
414
+
on_press.__raw = "function() vim.cmd[[${onClick}]] end";
415
415
+
};
416
416
+
cmd =
417
417
+
{
418
418
+
command,
419
419
+
width,
420
420
+
height,
421
421
+
}:
422
422
+
{
423
423
+
type = "terminal";
424
424
+
inherit command width height;
425
425
+
opts = o;
426
426
+
};
427
427
+
pad = {
428
428
+
type = "padding";
429
429
+
val = 2;
430
430
+
};
431
431
+
in
426
432
[
427
433
pad
428
434
pad
···
432
438
(
433
439
let
434
440
banner =
435
435
-
pkgs.runCommand "nvim-banner" {}
436
436
-
''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out'';
441
441
+
pkgs.runCommand "nvim-banner" { }
442
442
+
''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out'';
437
443
# bannerText = builtins.readFile banner;
438
444
in
439
439
-
cmd {
440
440
-
command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)'';
441
441
-
# Hardcoding to prevent IFD
442
442
-
width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3;
443
443
-
height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1;
444
444
-
}
445
445
+
cmd {
446
446
+
command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)'';
447
447
+
# Hardcoding to prevent IFD
448
448
+
width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3;
449
449
+
height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1;
450
450
+
}
445
451
)
446
452
(grp [
447
453
(btn {
···
462
468
])
463
469
(txt "::<シ>")
464
470
])
465
465
-
++ [pad];
471
471
+
++ [ pad ];
466
472
};
467
473
468
474
trouble = {
···
586
592
hover = {
587
593
enabled = true;
588
594
delay = 150;
589
589
-
reveal = ["close"];
595
595
+
reveal = [ "close" ];
590
596
};
591
597
sort_by = "insert_at_end";
592
598
diagnostics = "nvim_lsp";
···
601
607
602
608
statuscol = {
603
609
enable = true;
604
604
-
settings.segments = let
605
605
-
dispCond = {
606
606
-
__raw = ''
607
607
-
function(ln)
608
608
-
return vim.bo.filetype ~= "neo-tree"
609
609
-
end
610
610
-
'';
611
611
-
};
612
612
-
in [
613
613
-
{
614
614
-
click = "v:lua.ScSa";
615
615
-
condition = [
616
616
-
dispCond
617
617
-
];
618
618
-
text = [
619
619
-
"%s"
620
620
-
];
621
621
-
}
622
622
-
{
623
623
-
click = "v:lua.ScLa";
624
624
-
condition = [dispCond];
625
625
-
text = [
626
626
-
{
627
627
-
__raw = "require('statuscol.builtin').lnumfunc";
628
628
-
}
629
629
-
];
630
630
-
}
631
631
-
{
632
632
-
click = "v:lua.ScFa";
633
633
-
condition = [
634
634
-
dispCond
635
635
-
{
636
636
-
__raw = "require('statuscol.builtin').not_empty";
637
637
-
}
638
638
-
];
639
639
-
text = [
640
640
-
{
641
641
-
__raw = "require('statuscol.builtin').foldfunc";
642
642
-
}
643
643
-
" "
644
644
-
];
645
645
-
}
646
646
-
];
610
610
+
settings.segments =
611
611
+
let
612
612
+
dispCond = {
613
613
+
__raw = ''
614
614
+
function(ln)
615
615
+
return vim.bo.filetype ~= "neo-tree"
616
616
+
end
617
617
+
'';
618
618
+
};
619
619
+
in
620
620
+
[
621
621
+
{
622
622
+
click = "v:lua.ScSa";
623
623
+
condition = [
624
624
+
dispCond
625
625
+
];
626
626
+
text = [
627
627
+
"%s"
628
628
+
];
629
629
+
}
630
630
+
{
631
631
+
click = "v:lua.ScLa";
632
632
+
condition = [ dispCond ];
633
633
+
text = [
634
634
+
{
635
635
+
__raw = "require('statuscol.builtin').lnumfunc";
636
636
+
}
637
637
+
];
638
638
+
}
639
639
+
{
640
640
+
click = "v:lua.ScFa";
641
641
+
condition = [
642
642
+
dispCond
643
643
+
{
644
644
+
__raw = "require('statuscol.builtin').not_empty";
645
645
+
}
646
646
+
];
647
647
+
text = [
648
648
+
{
649
649
+
__raw = "require('statuscol.builtin').foldfunc";
650
650
+
}
651
651
+
" "
652
652
+
];
653
653
+
}
654
654
+
];
647
655
};
648
656
649
657
dropbar = {
···
669
677
670
678
options = {
671
679
theme = "catppuccin";
672
672
-
disabled_filetypes = ["neo-tree"];
673
673
-
ignore_focus = ["neo-tree"];
680
680
+
disabled_filetypes = [ "neo-tree" ];
681
681
+
ignore_focus = [ "neo-tree" ];
674
682
};
675
683
};
676
684
};
···
764
772
cmp = {
765
773
enable = true;
766
774
settings = {
767
767
-
sources = map (name: {inherit name;}) [
775
775
+
sources = map (name: { inherit name; }) [
768
776
"nvim_lsp"
769
777
"nvim_lsp_signature_help"
770
778
"path"