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