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
Use nix-develop.nvim
bwc9876.dev
8 months ago
88b8078a
0395d10d
verified
This commit was signed with the committer's
known signature
.
bwc9876.dev
SSH Key Fingerprint:
SHA256:DanMEP/RNlSC7pAVbnXO6wzQV00rqyKj053tz4uH5gQ=
+182
-154
3 changed files
expand all
collapse all
unified
split
nixosModules
dev
misc.nix
nvim.nix
imperm.nix
+7
-7
nixosModules/dev/misc.nix
···
26
package = pkgs.wireshark;
27
};
28
29
-
home-manager.users.bean.programs.direnv = {
30
-
enable = true;
31
-
enableBashIntegration = true;
32
-
enableNushellIntegration = true;
33
-
nix-direnv.enable = true;
34
-
silent = true;
35
-
};
36
}
···
26
package = pkgs.wireshark;
27
};
28
29
+
# home-manager.users.bean.programs.direnv = {
30
+
# enable = true;
31
+
# enableBashIntegration = true;
32
+
# enableNushellIntegration = true;
33
+
# nix-direnv.enable = true;
34
+
# silent = true;
35
+
# };
36
}
+148
-140
nixosModules/dev/nvim.nix
···
4
config,
5
lib,
6
...
7
-
}:
8
-
{
9
environment.systemPackages = with pkgs; [
10
ripgrep
11
fd
12
];
13
14
home-manager.users.bean = {
15
-
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
16
17
programs.nixvim = {
18
enable = true;
···
20
defaultEditor = true;
21
viAlias = true;
22
vimAlias = true;
23
-
24
-
dependencies = {
25
-
direnv.enable = true;
26
-
};
27
28
nixpkgs.pkgs = pkgs;
29
···
63
background = true;
64
};
65
virtual_text = {
66
-
errors = [ "italic" ];
67
-
hints = [ "italic" ];
68
-
information = [ "italic" ];
69
-
warnings = [ "italic" ];
70
-
ok = [ "italic" ];
71
};
72
underlines = {
73
-
errors = [ "underline" ];
74
-
hints = [ "underline" ];
75
-
information = [ "underline" ];
76
-
warnings = [ "underline" ];
77
};
78
};
79
};
···
95
'';
96
97
autoGroups = {
98
-
restore_cursor = { };
99
-
open_neotree = { };
100
};
101
102
opts = {
···
117
autoCmd = [
118
{
119
group = "restore_cursor";
120
-
event = [ "BufReadPost" ];
121
pattern = "*";
122
callback.__raw = ''
123
function()
···
134
}
135
{
136
group = "open_neotree";
137
-
event = [ "BufRead" ];
138
pattern = "*";
139
once = true;
140
callback.__raw = ''
···
162
};
163
};
164
165
-
keymaps =
166
-
let
167
-
prefixMap =
168
-
pre: maps:
169
-
builtins.map (k: {
170
-
action = "<cmd>${k.action}<cr>";
171
-
key = "${pre}${k.key}";
172
-
options = k.options;
173
-
}) maps;
174
-
in
175
lib.lists.flatten (
176
-
builtins.map (g: if builtins.hasAttr "group" g then prefixMap g.prefix g.keys else g) [
0
0
0
177
{
178
group = "Tab Navigation";
179
prefix = "<Tab>";
···
294
}
295
{
296
action.__raw = "[[<C-\\><C-n><C-w>]]";
297
-
mode = [ "t" ];
298
key = "<C-w>";
299
}
300
{
301
action.__raw = "[[<C-\\><C-n>]]";
302
-
mode = [ "t" ];
303
key = "<esc>";
304
}
305
{
···
310
);
311
312
extraPlugins = with pkgs.vimPlugins; [
313
-
{ plugin = pkgs.nvim-mdx; }
314
-
{ plugin = satellite-nvim; }
315
-
{ plugin = flatten-nvim; }
316
-
{ plugin = tiny-devicons-auto-colors-nvim; }
317
];
318
319
plugins = {
···
385
opts = {
386
position = "center";
387
};
388
-
layout =
389
-
let
390
-
o = {
391
-
position = "center";
392
-
};
393
-
txt = s: {
394
-
type = "text";
395
-
val = s;
396
-
opts = {
397
-
hl = "Keyword";
398
-
} // o;
399
-
};
400
-
grp = g: {
401
-
type = "group";
402
-
val = g;
403
-
opts.spacing = 1;
404
-
};
405
-
btn =
406
-
{
407
-
val,
408
-
onClick,
409
-
...
410
-
}:
411
-
{
412
-
type = "button";
413
-
inherit val;
414
-
opts = o;
415
-
on_press.__raw = "function() vim.cmd[[${onClick}]] end";
416
-
};
417
-
cmd =
418
-
{
419
-
command,
420
-
width,
421
-
height,
422
-
}:
423
{
424
-
type = "terminal";
425
-
inherit command width height;
426
-
opts = o;
427
-
};
428
-
pad = {
429
-
type = "padding";
430
-
val = 2;
431
-
};
432
-
in
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
433
[
434
pad
435
pad
···
439
(
440
let
441
banner =
442
-
pkgs.runCommand "nvim-banner" { }
443
-
''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out'';
444
# bannerText = builtins.readFile banner;
445
in
446
-
cmd {
447
-
command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)'';
448
-
# Hardcoding to prevent IFD
449
-
width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3;
450
-
height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1;
451
-
}
452
)
453
(grp [
454
(btn {
···
469
])
470
(txt "::<シ>")
471
])
472
-
++ [ pad ];
473
};
474
475
trouble = {
···
591
hover = {
592
enabled = true;
593
delay = 150;
594
-
reveal = [ "close" ];
595
};
596
sort_by = "insert_at_end";
597
diagnostics = "nvim_lsp";
···
606
607
statuscol = {
608
enable = true;
609
-
settings.segments =
610
-
let
611
-
dispCond = {
612
-
__raw = ''
613
-
function(ln)
614
-
return vim.bo.filetype ~= "neo-tree"
615
-
end
616
-
'';
617
-
};
618
-
in
619
-
[
620
-
{
621
-
click = "v:lua.ScSa";
622
-
condition = [
623
-
dispCond
624
-
];
625
-
text = [
626
-
"%s"
627
-
];
628
-
}
629
-
{
630
-
click = "v:lua.ScLa";
631
-
condition = [ dispCond ];
632
-
text = [
633
-
{
634
-
__raw = "require('statuscol.builtin').lnumfunc";
635
-
}
636
-
];
637
-
}
638
-
{
639
-
click = "v:lua.ScFa";
640
-
condition = [
641
-
dispCond
642
-
{
643
-
__raw = "require('statuscol.builtin').not_empty";
644
-
}
645
-
];
646
-
text = [
647
-
{
648
-
__raw = "require('statuscol.builtin').foldfunc";
649
-
}
650
-
" "
651
-
];
652
-
}
653
-
];
654
};
655
656
dropbar = {
···
676
677
options = {
678
theme = "catppuccin";
679
-
disabled_filetypes = [ "neo-tree" ];
680
-
ignore_focus = [ "neo-tree" ];
681
};
682
};
683
};
684
685
-
direnv.enable = true;
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
686
687
project-nvim = {
688
enable = true;
···
742
fidget = {
743
enable = true;
744
settings.notification = {
0
745
window = {
746
y_padding = 2;
747
x_padding = 2;
···
771
cmp = {
772
enable = true;
773
settings = {
774
-
sources = map (name: { inherit name; }) [
775
"nvim_lsp"
776
"nvim_lsp_signature_help"
777
"path"
···
4
config,
5
lib,
6
...
7
+
}: {
0
8
environment.systemPackages = with pkgs; [
9
ripgrep
10
fd
11
];
12
13
home-manager.users.bean = {
14
+
imports = [inputs.nixvim.homeManagerModules.nixvim];
15
16
programs.nixvim = {
17
enable = true;
···
19
defaultEditor = true;
20
viAlias = true;
21
vimAlias = true;
0
0
0
0
22
23
nixpkgs.pkgs = pkgs;
24
···
58
background = true;
59
};
60
virtual_text = {
61
+
errors = ["italic"];
62
+
hints = ["italic"];
63
+
information = ["italic"];
64
+
warnings = ["italic"];
65
+
ok = ["italic"];
66
};
67
underlines = {
68
+
errors = ["underline"];
69
+
hints = ["underline"];
70
+
information = ["underline"];
71
+
warnings = ["underline"];
72
};
73
};
74
};
···
90
'';
91
92
autoGroups = {
93
+
restore_cursor = {};
94
+
open_neotree = {};
95
};
96
97
opts = {
···
112
autoCmd = [
113
{
114
group = "restore_cursor";
115
+
event = ["BufReadPost"];
116
pattern = "*";
117
callback.__raw = ''
118
function()
···
129
}
130
{
131
group = "open_neotree";
132
+
event = ["BufRead"];
133
pattern = "*";
134
once = true;
135
callback.__raw = ''
···
157
};
158
};
159
160
+
keymaps = let
161
+
prefixMap = pre: maps:
162
+
builtins.map (k: {
163
+
action = "<cmd>${k.action}<cr>";
164
+
key = "${pre}${k.key}";
165
+
options = k.options;
166
+
})
167
+
maps;
168
+
in
0
169
lib.lists.flatten (
170
+
builtins.map (g:
171
+
if builtins.hasAttr "group" g
172
+
then prefixMap g.prefix g.keys
173
+
else g) [
174
{
175
group = "Tab Navigation";
176
prefix = "<Tab>";
···
291
}
292
{
293
action.__raw = "[[<C-\\><C-n><C-w>]]";
294
+
mode = ["t"];
295
key = "<C-w>";
296
}
297
{
298
action.__raw = "[[<C-\\><C-n>]]";
299
+
mode = ["t"];
300
key = "<esc>";
301
}
302
{
···
307
);
308
309
extraPlugins = with pkgs.vimPlugins; [
310
+
{plugin = pkgs.nvim-mdx;}
311
+
{plugin = satellite-nvim;}
312
+
{plugin = flatten-nvim;}
313
+
{plugin = tiny-devicons-auto-colors-nvim;}
314
];
315
316
plugins = {
···
382
opts = {
383
position = "center";
384
};
385
+
layout = let
386
+
o = {
387
+
position = "center";
388
+
};
389
+
txt = s: {
390
+
type = "text";
391
+
val = s;
392
+
opts =
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
393
{
394
+
hl = "Keyword";
395
+
}
396
+
// o;
397
+
};
398
+
grp = g: {
399
+
type = "group";
400
+
val = g;
401
+
opts.spacing = 1;
402
+
};
403
+
btn = {
404
+
val,
405
+
onClick,
406
+
...
407
+
}: {
408
+
type = "button";
409
+
inherit val;
410
+
opts = o;
411
+
on_press.__raw = "function() vim.cmd[[${onClick}]] end";
412
+
};
413
+
cmd = {
414
+
command,
415
+
width,
416
+
height,
417
+
}: {
418
+
type = "terminal";
419
+
inherit command width height;
420
+
opts = o;
421
+
};
422
+
pad = {
423
+
type = "padding";
424
+
val = 2;
425
+
};
426
+
in
427
[
428
pad
429
pad
···
433
(
434
let
435
banner =
436
+
pkgs.runCommand "nvim-banner" {}
437
+
''${pkgs.toilet}/bin/toilet " NIXVIM " -f mono12 -F border > $out'';
438
# bannerText = builtins.readFile banner;
439
in
440
+
cmd {
441
+
command = ''open ${banner} | ${pkgs.lolcat}/bin/lolcat -f -S (random int 1..360)'';
442
+
# Hardcoding to prevent IFD
443
+
width = 83; # (builtins.stringLength (lib.trim (builtins.elemAt (lib.splitString "\n" bannerText) 1))) - 3;
444
+
height = 12; # (builtins.length (lib.splitString "\n" bannerText)) - 1;
445
+
}
446
)
447
(grp [
448
(btn {
···
463
])
464
(txt "::<シ>")
465
])
466
+
++ [pad];
467
};
468
469
trouble = {
···
585
hover = {
586
enabled = true;
587
delay = 150;
588
+
reveal = ["close"];
589
};
590
sort_by = "insert_at_end";
591
diagnostics = "nvim_lsp";
···
600
601
statuscol = {
602
enable = true;
603
+
settings.segments = let
604
+
dispCond = {
605
+
__raw = ''
606
+
function(ln)
607
+
return vim.bo.filetype ~= "neo-tree"
608
+
end
609
+
'';
610
+
};
611
+
in [
612
+
{
613
+
click = "v:lua.ScSa";
614
+
condition = [
615
+
dispCond
616
+
];
617
+
text = [
618
+
"%s"
619
+
];
620
+
}
621
+
{
622
+
click = "v:lua.ScLa";
623
+
condition = [dispCond];
624
+
text = [
625
+
{
626
+
__raw = "require('statuscol.builtin').lnumfunc";
627
+
}
628
+
];
629
+
}
630
+
{
631
+
click = "v:lua.ScFa";
632
+
condition = [
633
+
dispCond
634
+
{
635
+
__raw = "require('statuscol.builtin').not_empty";
636
+
}
637
+
];
638
+
text = [
639
+
{
640
+
__raw = "require('statuscol.builtin').foldfunc";
641
+
}
642
+
" "
643
+
];
644
+
}
645
+
];
0
0
646
};
647
648
dropbar = {
···
668
669
options = {
670
theme = "catppuccin";
671
+
disabled_filetypes = ["neo-tree"];
672
+
ignore_focus = ["neo-tree"];
673
};
674
};
675
};
676
677
+
nix-develop = {
678
+
enable = true;
679
+
package =
680
+
pkgs.vimPlugins.nix-develop-nvim.overrideAttrs (
681
+
prev: next: {
682
+
src =
683
+
pkgs.fetchFromGitHub {
684
+
owner = "Bwc9876";
685
+
repo = "nix-develop.nvim";
686
+
rev = "089cd52191ccbb3726594e21cd96567af6088dd5";
687
+
sha256 = "sha256-EIEJk8/IAuG+UICUJ2F8QakgRpFrQ1ezDSJ79NAVuD8=
688
+
";
689
+
};
690
+
}
691
+
);
692
+
};
693
694
project-nvim = {
695
enable = true;
···
749
fidget = {
750
enable = true;
751
settings.notification = {
752
+
override_vim_notify = true;
753
window = {
754
y_padding = 2;
755
x_padding = 2;
···
779
cmp = {
780
enable = true;
781
settings = {
782
+
sources = map (name: {inherit name;}) [
783
"nvim_lsp"
784
"nvim_lsp_signature_help"
785
"path"
+27
-7
nixosModules/imperm.nix
···
22
23
fileSystems."/tmp/nix-build" = {
24
device = "${cacheRoot}/nix-build";
25
-
options = ["bind" "X-fstrim.notrim" "x-gvfs-hide"];
0
0
0
0
26
};
27
28
systemd.services.nix-daemon = {
29
environment.TMPDIR = "/tmp/nix-build";
30
-
unitConfig.RequiresMountsFor = ["/tmp/nix-build" "/nix/store"];
0
0
0
31
};
32
33
environment.persistence.${cacheRoot} = {
34
enable = true;
35
hideMounts = true;
36
directories =
37
-
(preWith "/var" ([
0
38
"log"
39
]
40
++ preWith "lib" (
···
48
"backlight"
49
"rfkill"
50
]
51
-
)))
0
52
++ [
53
{
54
directory = "/var/lib/colord";
···
65
".pnpm"
66
".local/state/wireplumber"
67
]
68
-
++ (preShare ["Steam" "Trash" "dolphin"])
69
-
++ (preConf ["gh" "GitHub Desktop" "spotify" "vesktop" "kdeconnect" "keepassxc"]);
0
0
0
0
0
0
0
0
0
0
0
70
};
71
72
environment.persistence.${persistRoot} = {
···
107
"Cemu"
108
])
109
++ (preShare [
110
-
"direnv"
111
"ow-mod-man"
112
"OuterWildsModManager"
113
"PrismLauncher"
···
22
23
fileSystems."/tmp/nix-build" = {
24
device = "${cacheRoot}/nix-build";
25
+
options = [
26
+
"bind"
27
+
"X-fstrim.notrim"
28
+
"x-gvfs-hide"
29
+
];
30
};
31
32
systemd.services.nix-daemon = {
33
environment.TMPDIR = "/tmp/nix-build";
34
+
unitConfig.RequiresMountsFor = [
35
+
"/tmp/nix-build"
36
+
"/nix/store"
37
+
];
38
};
39
40
environment.persistence.${cacheRoot} = {
41
enable = true;
42
hideMounts = true;
43
directories =
44
+
(preWith "/var" (
45
+
[
46
"log"
47
]
48
++ preWith "lib" (
···
56
"backlight"
57
"rfkill"
58
]
59
+
)
60
+
))
61
++ [
62
{
63
directory = "/var/lib/colord";
···
74
".pnpm"
75
".local/state/wireplumber"
76
]
77
+
++ (preShare [
78
+
"Steam"
79
+
"Trash"
80
+
"dolphin"
81
+
])
82
+
++ (preConf [
83
+
"gh"
84
+
"GitHub Desktop"
85
+
"spotify"
86
+
"vesktop"
87
+
"kdeconnect"
88
+
"keepassxc"
89
+
]);
90
};
91
92
environment.persistence.${persistRoot} = {
···
127
"Cemu"
128
])
129
++ (preShare [
130
+
# "direnv"
131
"ow-mod-man"
132
"OuterWildsModManager"
133
"PrismLauncher"