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
Toggleterm improvements
bwc9876.dev
8 months ago
d0032410
f12160cf
verified
This commit was signed with the committer's
known signature
.
bwc9876.dev
SSH Key Fingerprint:
SHA256:DanMEP/RNlSC7pAVbnXO6wzQV00rqyKj053tz4uH5gQ=
+184
-119
8 changed files
expand all
collapse all
unified
split
flake.nix
nixosModules
dev
misc.nix
nvim.nix
dev+graphics
nvim.nix
graphics
apps.nix
floorp.nix
hypr.nix
xdg.nix
+4
-3
flake.nix
···
63
63
"*.nix" = "alejandra .";
64
64
"*.sh" = "shfmt -w .";
65
65
};
66
66
-
packages =
67
67
-
nixpkgs.lib.genAttrs ["wayland-mpris-idle-inhibit" "nu_plugin_dbus"]
68
68
-
(i: {pkgs}: inputs.${i}.packages.${pkgs.system}.default);
66
66
+
67
67
+
packages = nixpkgs.lib.genAttrs ["wayland-mpris-idle-inhibit" "nu_plugin_dbus"] (
68
68
+
i: {pkgs}: inputs.${i}.packages.${pkgs.system}.default
69
69
+
);
69
70
nixDir = ./.;
70
71
nixDirAliases = {
71
72
nixosConfigurations = ["systemConfigs"];
+5
-1
nixosModules/dev+graphics/nvim.nix
···
1
1
-
{pkg, ...}: {
1
1
+
{pkgs, ...}: {
2
2
+
environment.systemPackages = with pkgs; [
3
3
+
neovide
4
4
+
];
5
5
+
2
6
home-manager.users.bean = {
3
7
wayland.windowManager.hyprland.settings.bind = [
4
8
"SUPER,D,exec,neovide"
+1
nixosModules/dev/misc.nix
···
31
31
enableBashIntegration = true;
32
32
enableNushellIntegration = true;
33
33
nix-direnv.enable = true;
34
34
+
silent = true;
34
35
};
35
36
}
+77
-53
nixosModules/dev/nvim.nix
···
10
10
fd
11
11
];
12
12
13
13
-
# TODO: Wish list
14
14
-
# - https://github.com/al1-ce/just.nvim
15
15
-
# - DAP Setup? If not just get rid of the plugin...
16
16
-
# - Proper Start screen / projects
17
17
-
# - On project open with no session saved, show a little screen or smth?
18
18
-
# - Neovide let me paste from system clipboard in insert mode
19
19
-
# - Fix hex stuff, working hex editor please
20
20
-
# - Image viewer would be cool
21
21
-
# - More customization of toggleterm, tabs would be really nice
22
22
-
# - Switch project combo if not already present
23
23
-
# - Neotree look nicer
24
24
-
# - Bufferline color "Neovim" in space, im thinking logo in green bold and text in normal green
25
25
-
26
13
home-manager.users.bean = {
27
14
imports = [inputs.nixvim.homeManagerModules.nixvim];
28
15
···
33
20
viAlias = true;
34
21
vimAlias = true;
35
22
36
36
-
dependencies.direnv.enable = true;
23
23
+
dependencies = {
24
24
+
direnv.enable = true;
25
25
+
};
37
26
38
27
nixpkgs.pkgs = pkgs;
39
28
···
46
35
no_underline = false;
47
36
no_bold = false;
48
37
no_italics = false;
38
38
+
term_colors = true;
49
39
# transparent_background = true;
50
40
integrations = {
51
41
alpha = true;
···
98
88
},
99
89
},
100
90
})
91
91
+
vim.g.neovide_cursor_vfx_mode = "pixiedust"
92
92
+
101
93
'';
102
94
103
95
autoGroups = {
···
169
161
170
162
keymaps = [
171
163
{
172
172
-
action = ''"+y'';
173
173
-
key = "<C-S-C>";
174
174
-
options.desc = "Copy to System Clipboard";
175
175
-
}
176
176
-
{
177
177
-
action = ''"+p'';
178
178
-
key = "<C-S-V>";
179
179
-
options.desc = "Paste from System Clipboard";
180
180
-
}
181
181
-
{
182
182
-
action = ''"+x'';
183
183
-
key = "<C-S-X>";
184
184
-
options.desc = "Cut to System Clipboard";
185
185
-
}
186
186
-
{
187
164
action = "<cmd>Lspsaga code_action code_action<cr>";
188
165
key = "<C-.>a";
189
166
options.desc = "Code Actions";
···
434
411
saved_terminal = term.get(termid)
435
412
end,
436
413
post_open = function(opts)
437
437
-
if opts.is_blocking and saved_terminal then
414
414
+
if saved_terminal then
438
415
saved_terminal:close()
439
416
else
440
417
vim.api.nvim_set_current_win(opts.winnr)
···
465
442
})
466
443
'';
467
444
settings = {
445
445
+
size = 20;
468
446
open_mapping = "[[<C-x>]]";
469
447
direction = "horizontal";
470
448
start_in_insert = true;
471
449
insert_mappings = true;
472
450
terminal_mappings = true;
451
451
+
# winbar = {
452
452
+
# enabled = true;
453
453
+
# # name_formatter.__raw = ''
454
454
+
# # function(term)
455
455
+
# # return term:_display_name() .. " (" .. tostring(term.id) .. ")"
456
456
+
# # end
457
457
+
# # '';
458
458
+
# };
473
459
};
474
460
};
475
461
···
487
473
illuminate.enable = true;
488
474
cursorline.enable = true;
489
475
490
490
-
neoscroll = {
491
491
-
enable = true;
492
492
-
settings.easing_function = "cubic";
493
493
-
};
494
476
scrollview.enable = true;
495
477
496
478
navbuddy = {
···
514
496
515
497
bufferline = {
516
498
enable = true;
499
499
+
settings.highlights.__raw = ''
500
500
+
require("catppuccin.groups.integrations.bufferline").get()
501
501
+
'';
517
502
settings.options = {
518
503
indicator.style = "none";
519
504
close_icon = "";
···
521
506
offsets = [
522
507
{
523
508
filetype = "neo-tree";
509
509
+
highlight = "String";
524
510
text = " Neovim";
525
511
text_align = "center";
526
526
-
separator = true;
512
512
+
# separator = true;
527
513
}
528
514
];
529
515
separator_style = "slant";
···
546
532
547
533
statuscol = {
548
534
enable = true;
549
549
-
settings.segments = [
535
535
+
settings.segments = let
536
536
+
dispCond = {
537
537
+
__raw = ''
538
538
+
function(ln)
539
539
+
return vim.bo.filetype ~= "neo-tree"
540
540
+
end
541
541
+
'';
542
542
+
};
543
543
+
in [
550
544
{
551
545
click = "v:lua.ScSa";
546
546
+
condition = [
547
547
+
dispCond
548
548
+
];
552
549
text = [
553
550
"%s"
554
551
];
555
552
}
556
553
{
557
554
click = "v:lua.ScLa";
555
555
+
condition = [dispCond];
558
556
text = [
559
557
{
560
558
__raw = "require('statuscol.builtin').lnumfunc";
···
564
562
{
565
563
click = "v:lua.ScFa";
566
564
condition = [
567
567
-
true
565
565
+
dispCond
568
566
{
569
567
__raw = "require('statuscol.builtin').not_empty";
570
568
}
···
579
577
];
580
578
};
581
579
582
582
-
dropbar.enable = true;
580
580
+
dropbar = {
581
581
+
enable = true;
582
582
+
settings = {
583
583
+
bar.padding.right = 5;
584
584
+
bar.padding.left = 1;
585
585
+
};
586
586
+
};
583
587
584
588
nvim-ufo = {
585
589
enable = true;
586
590
};
587
591
gitsigns.enable = true;
588
592
589
589
-
dap = {
590
590
-
enable = true;
591
591
-
};
592
592
-
593
593
-
dap-virtual-text.enable = true;
594
594
-
595
593
lualine = {
596
594
enable = true;
597
595
settings = {
···
603
601
options = {
604
602
theme = "catppuccin";
605
603
disabled_filetypes = ["neo-tree"];
604
604
+
ignore_focus = ["neo-tree"];
606
605
};
607
606
};
608
607
};
···
616
615
617
616
neo-tree = {
618
617
enable = true;
618
618
+
hideRootNode = false;
619
619
addBlankLineAtTop = true;
620
620
-
window.width = 30;
620
620
+
defaultComponentConfigs = {
621
621
+
container.rightPadding = 2;
622
622
+
name.trailingSlash = true;
623
623
+
indent = {
624
624
+
indentSize = 2;
625
625
+
withExpanders = true;
626
626
+
};
627
627
+
};
628
628
+
window.width = 40;
629
629
+
autoCleanAfterSessionRestore = true;
621
630
closeIfLastWindow = true;
631
631
+
extraOptions = {
632
632
+
filesystem.components.name.__raw = ''
633
633
+
function(config, node, state)
634
634
+
local components = require('neo-tree.sources.common.components')
635
635
+
local name = components.name(config, node, state)
636
636
+
if node:get_depth() == 1 then
637
637
+
name.text = vim.fs.basename(vim.loop.cwd() or "") .. "/"
638
638
+
end
639
639
+
return name
640
640
+
end
641
641
+
'';
642
642
+
};
622
643
};
623
644
624
645
# image.enable = true;
···
640
661
enable = true;
641
662
settings.notification = {
642
663
window = {
664
664
+
y_padding = 2;
665
665
+
x_padding = 2;
666
666
+
zindex = 50;
643
667
align = "top";
644
668
winblend = 0;
645
669
};
···
649
673
none-ls = {
650
674
enable = true;
651
675
sources.formatting = {
652
652
-
alejandra.enable = true;
653
676
prettier = {
654
677
enable = true;
655
678
disableTsServerFormatter = true;
···
692
715
lspkind.enable = true;
693
716
# jupytext.enable = true;
694
717
695
695
-
hex = {
696
696
-
enable = true;
697
697
-
settings = {
698
698
-
assemble_cmd = "xxd -r";
699
699
-
dump_cmd = "xxd -g 1 -u";
700
700
-
};
701
701
-
};
718
718
+
# Broken
719
719
+
# hex = {
720
720
+
# enable = true;
721
721
+
# settings = {
722
722
+
# assemble_cmd = "xxd -r";
723
723
+
# dump_cmd = "xxd -g 1 -u";
724
724
+
# };
725
725
+
# };
702
726
703
727
lspsaga = {
704
728
enable = true;
-2
nixosModules/graphics/apps.nix
···
148
148
'';
149
149
};
150
150
151
151
-
environment.variables.NIXOS_OZONE_WL = "1";
152
152
-
153
151
environment.systemPackages = with pkgs; [
154
152
chromium
155
153
+9
nixosModules/graphics/floorp.nix
···
7
7
floorp
8
8
];
9
9
10
10
+
networking.stevenblack = {
11
11
+
enable = true;
12
12
+
block = [
13
13
+
"fakenews"
14
14
+
"gambling"
15
15
+
"porn"
16
16
+
];
17
17
+
};
18
18
+
10
19
home-manager.users.bean.programs.floorp = {
11
20
enable = true;
12
21
policies = {
+19
-8
nixosModules/graphics/hypr.nix
···
4
4
hyprpicker
5
5
uwsm
6
6
];
7
7
+
variables = {
8
8
+
NIXOS_OZONE_WL = "1";
9
9
+
_JAVA_AWT_WM_NONEREPARENTING = "1";
10
10
+
GDK_BACKEND = "wayland,x11";
11
11
+
ANKI_WAYLAND = "1";
12
12
+
MOZ_ENABLE_WAYLAND = "1";
13
13
+
XDG_SESSION_TYPE = "wayland";
14
14
+
SDL_VIDEODRIVER = "wayland";
15
15
+
CLUTTER_BACKEND = "wayland";
16
16
+
};
7
17
};
8
18
9
19
xdg.portal.extraPortals = with pkgs; [xdg-desktop-portal-gtk];
···
86
96
mod,
87
97
dispatch,
88
98
}:
89
89
-
builtins.genList
90
90
-
(i: let
91
91
-
num = builtins.toString i;
92
92
-
in "${mod},${num},${dispatch},${
93
93
-
if num == "0"
94
94
-
then "10"
95
95
-
else num
96
96
-
}")
99
99
+
builtins.genList (
100
100
+
i: let
101
101
+
num = builtins.toString i;
102
102
+
in "${mod},${num},${dispatch},${
103
103
+
if num == "0"
104
104
+
then "10"
105
105
+
else num
106
106
+
}"
107
107
+
)
97
108
10;
98
109
in
99
110
[
+69
-52
nixosModules/graphics/xdg.nix
···
1
1
-
{config, ...}: {
1
1
+
{
2
2
+
config,
3
3
+
lib,
4
4
+
...
5
5
+
}: {
2
6
home-manager.users.bean.xdg = {
3
7
enable = true;
4
4
-
userDirs = with config.home-manager.users.bean.home; {
8
8
+
userDirs = let
9
9
+
inherit (config.home-manager.users.bean.home) homeDirectory;
10
10
+
in {
5
11
enable = true;
6
12
createDirectories = true;
7
13
desktop = "${homeDirectory}/Desktop";
···
16
22
mimeApps = {
17
23
enable = true;
18
24
defaultApplications = let
19
19
-
textEditors = ["neovide.desktop"];
25
25
+
types = {
26
26
+
browser = [
27
27
+
"text/html"
28
28
+
"application/pdf"
29
29
+
"x-scheme-handler/http"
30
30
+
"x-scheme-handler/https"
31
31
+
"x-scheme-handler/ftp"
32
32
+
"x-scheme-handler/about"
33
33
+
"x-scheme-handler/unknown"
34
34
+
];
35
35
+
code = [
36
36
+
"application/json"
37
37
+
"application/xml"
38
38
+
"application/yaml"
39
39
+
"text/english"
40
40
+
"text/plain"
41
41
+
"text/x-makefile"
42
42
+
"text/x-c++hdr"
43
43
+
"text/x-c++src"
44
44
+
"text/x-chdr"
45
45
+
"text/x-csrc"
46
46
+
"text/x-java"
47
47
+
"text/x-moc"
48
48
+
"text/x-pascal"
49
49
+
"text/x-tcl"
50
50
+
"text/x-tex"
51
51
+
"text/x-rust"
52
52
+
"application/x-shellscript"
53
53
+
"text/x-c"
54
54
+
"text/x-c++"
55
55
+
];
56
56
+
image = ["image/*"];
57
57
+
av = [
58
58
+
"video/*"
59
59
+
"audio/*"
60
60
+
];
61
61
+
dir = ["inode/directory"];
62
62
+
};
63
63
+
fileBrowsers = ["org.kde.dolphin.desktop"];
64
64
+
textEditors = [
65
65
+
"neovide.desktop"
66
66
+
"nvim.desktop"
67
67
+
];
20
68
browsers = [
21
69
"floorp.desktop"
22
70
"chromium.desktop"
23
71
];
24
24
-
imageViewers = [
25
25
-
"org.gnome.Loupe.desktop"
26
26
-
"gimp.desktop"
27
27
-
];
28
28
-
videoPlayers = [
29
29
-
"QMPlay2.desktop"
30
30
-
];
31
31
-
in {
32
32
-
"inode/directory" = ["org.kde.dolphin.desktop"];
33
33
-
"text/plain" = textEditors;
34
34
-
"text/markdown" = textEditors;
35
35
-
"text/xml" = textEditors;
36
36
-
"text/x-markdown" = textEditors;
37
37
-
"text/x-readme" = textEditors;
38
38
-
"text/x-changelog" = textEditors;
39
39
-
"text/x-copying" = textEditors;
40
40
-
"text/x-install" = textEditors;
41
41
-
"text/html" = browsers;
42
42
-
"image/png" = imageViewers;
43
43
-
"image/webp" = imageViewers;
44
44
-
"image/jpeg" = imageViewers;
45
45
-
"image/gif" = browsers;
46
46
-
"image/bmp" = imageViewers;
47
47
-
"image/x-portable-pixmap" = imageViewers;
48
48
-
"image/x-portable-bitmap" = imageViewers;
49
49
-
"image/x-portable-graymap" = imageViewers;
50
50
-
"image/x-portable-anymap" = imageViewers;
51
51
-
"image/svg+xml" = imageViewers;
52
52
-
"video/mp4" = videoPlayers;
53
53
-
"video/AV1" = videoPlayers;
54
54
-
"video/m4a" = videoPlayers;
55
55
-
"video/mpeg" = videoPlayers;
56
56
-
"video/3gpp" = videoPlayers;
57
57
-
"x-terminal-emulator" = ["wezterm.desktop"];
58
58
-
"x-scheme-handler/http" = browsers;
59
59
-
"x-scheme-handler/https" = browsers;
60
60
-
"x-scheme-handler/chrome" = browsers;
61
61
-
"x-scheme-handler/vscode" = ["code-url-handler.desktop"];
62
62
-
"x-scheme-handler/x-github-client" = ["github-desktop.desktop"];
63
63
-
"x-scheme-handler/x-github-desktop-auth" = ["github-desktop.desktop"];
64
64
-
"application/x-extension-htm" = browsers;
65
65
-
"application/x-extension-html" = browsers;
66
66
-
"application/x-extension-shtml" = browsers;
67
67
-
"application/x-extension-xht" = browsers;
68
68
-
"application/x-extension-xhtml" = browsers;
69
69
-
"application/xhtml+xml" = browsers;
70
70
-
"application/xml" = browsers;
71
71
-
"application/pdf" = browsers;
72
72
-
};
72
72
+
imageViewers =
73
73
+
[
74
74
+
"org.gnome.Loupe.desktop"
75
75
+
"gimp.desktop"
76
76
+
]
77
77
+
++ browsers;
78
78
+
avPlayers =
79
79
+
[
80
80
+
"QMPlay2.desktop"
81
81
+
]
82
82
+
++ browsers;
83
83
+
genTypeHandler = type: handlers: lib.genAttrs type (_: handlers);
84
84
+
in
85
85
+
(genTypeHandler types.code textEditors)
86
86
+
// (genTypeHandler types.av avPlayers)
87
87
+
// (genTypeHandler types.image imageViewers)
88
88
+
// (genTypeHandler types.dir fileBrowsers)
89
89
+
// (genTypeHandler types.browser browsers);
73
90
};
74
91
};
75
92
}