authorgravatar for 77413091+JulianBarbera@users.noreply.github.comFish <77413091+JulianBarbera@users.noreply.github.com> 2025-09-30 21:51:58-07:00
committergravatar for 77413091+JulianBarbera@users.noreply.github.comFish <77413091+JulianBarbera@users.noreply.github.com> 2025-09-30 21:51:58-07:00
log94fcf2aaa0ea020ce7c3b9b0589b5eb39a738f62
tree0260ff6f689f0e3b0f67a74d96d84f4760de467c
parentc72bf0900cd12e72ca09bbf569dc02fff85d6f02

Updated vim


8 files changed, 370 insertions(+), 9 deletions(-)

users/fish/cattop/configuration.nix+9-6
......@@ -66,12 +66,14 @@
6666 services.printing.enable = true;
6767
6868 # Enable sound.
69 # services.pulseaudio.enable = true;
70 # OR
71 # services.pipewire = {
72 # enable = true;
73 # pulse.enable = true;
74 # };
69 services.pulseaudio.enable = false;
70 security.rtkit.enable = true;
71 services.pipewire = {
72 enable = true;
73 alsa.enable = true;
74 alsa.support32Bit = true;
75 pulse.enable = true;
76 };
7577
7678 # Enable touchpad support (enabled default in most desktopManager).
7779 # services.libinput.enable = true;
......@@ -81,6 +83,7 @@
8183 extraGroups = [
8284 "wheel"
8385 "dialout"
86 "audio"
8487 ];
8588 packages = with pkgs; [
8689 tree
users/fish/cattop/home.nix+4-1
......@@ -8,7 +8,7 @@
88 ghostty
99 signal-desktop
1010 spotify
11 legcord
11 equibop
1212
1313 # Gaming
1414 (prismlauncher.override { gamemodeSupport = true; })
......@@ -27,14 +27,17 @@
2727 efibootmgr
2828 pqiv
2929 imagemagick
30 toybox
3031
3132 # Dev tools
3233 hyfetch
3334 python3
3435 gh
3536 cmake
37 ripgrep
3638
3739 # Unsorted
40 kicad
3841 ];
3942 };
4043
users/fish/vim.nix+38-2
......@@ -1,4 +1,40 @@
1{ ... }:
1{ pkgs, ... }:
22{
3 vim.languages.svelte.enable = true;
3 imports = [
4 ./vim/default.nix
5 ];
6
7 vim = {
8 #enable python provider
9 withPython3 = true;
10 python3Packages = [ "pynvim" ];
11
12 autocmds = [
13 #Autocommand to fall back to treesitter folding if LSP doesnt support it
14 {
15 event = [ "LspAttach" ];
16 callback = pkgs.lib.generators.mkLuaInline ''
17 function(args)
18 local client = vim.lsp.get_client_by_id(args.data.client_id)
19 if client:supports_method('textDocument/foldingRange') then
20 local win = vim.api.nvim_get_current_win()
21 vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()'
22 end
23 end
24 '';
25 }
26 ];
27
28 tabline = {
29 nvimBufferline.enable = true;
30 };
31 startPlugins = [
32 "nui-nvim"
33 ];
34 theme = {
35 name = "catppuccin";
36 style = "mocha";
37 };
38 hideSearchHighlight = true;
39 };
440}
users/fish/vim/default.nix created+9
......@@ -0,0 +1,9 @@
1{ ... }:
2{
3 imports = [
4 ./languages.nix
5 ./latex.nix
6 ./visuals.nix
7 ./mini.nix
8 ];
9}
users/fish/vim/languages.nix created+155
......@@ -0,0 +1,155 @@
1{
2 flake,
3 user,
4 host,
5 pkgs,
6 ...
7}:
8{
9 vim = {
10 extraPackages = with pkgs; [
11 python312Packages.pylatexenc
12 ];
13 languages = {
14 lua.lsp.enable = true;
15 lua.lsp.lazydev.enable = true;
16 python = {
17 format.type = "ruff";
18 };
19 markdown = {
20 enable = true;
21 extensions.render-markdown-nvim = {
22 enable = true;
23 };
24 };
25 nix = {
26 lsp.servers = [
27 "nil"
28 "nixd"
29 ];
30 };
31 };
32
33 formatter.conform-nvim = {
34 enable = true;
35 setupOpts = {
36 formatters_by_ft = {
37 fish = [ "fish_indent" ];
38 tex = [ "latexindent" ];
39 };
40 };
41 };
42 diagnostics = {
43 enable = true;
44 config = {
45 virtual_text = {
46 format = pkgs.lib.generators.mkLuaInline ''
47 function(diagnostic)
48 return string.format("%s (%s)", diagnostic.message, diagnostic.source)
49 end
50 '';
51 };
52 };
53 nvim-lint = {
54 enable = true;
55 linters_by_ft = {
56 nix = [ "statix" ];
57 tex = [ "chktex" ];
58 haskell = [ "hlint" ];
59 };
60
61 linters = {
62 chktex = {
63 ignore_exitcode = true;
64 };
65 };
66 };
67 };
68 treesitter = {
69 enable = true;
70 fold = true;
71 addDefaultGrammars = true;
72 highlight = {
73 additionalVimRegexHighlighting = true;
74 };
75
76 grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
77 markdown_inline
78 markdown
79 ];
80
81 highlight.enable = true;
82 indent.enable = false;
83 };
84
85 visuals = {
86 fidget-nvim = {
87 setupOpts = {
88 logger.level = "trace";
89 };
90 };
91 };
92
93 ui = {
94 nvim-ufo = {
95 enable = true;
96 };
97 };
98 autocomplete.blink-cmp = {
99 enable = true;
100 mappings = {
101 close = null;
102 complete = null;
103 confirm = null;
104 next = null;
105 previous = null;
106 scrollDocsDown = null;
107 scrollDocsUp = null;
108 };
109
110 setupOpts = {
111 keymap = {
112 preset = "super-tab";
113 };
114 completion = {
115 ghost_text.enabled = false;
116 list.selection.preselect = true;
117 trigger = {
118 show_in_snippet = true;
119 };
120 accept.auto_brackets.enabled = true;
121 };
122 signature = {
123 enabled = true;
124 };
125 };
126 };
127
128 lazy.plugins."blink.pairs" = {
129 enabled = true;
130 package = pkgs.vimPlugins.blink-pairs;
131 setupModule = "blink.pairs";
132 setupOpts = {
133 mappings = {
134 # -- you can call require("blink.pairs.mappings").enable() and require("blink.pairs.mappings").disable() to enable/disable mappings at runtime
135 enabled = true;
136 # -- see the defaults: https://github.com/Saghen/blink.pairs/blob/main/lua/blink/pairs/config/mappings.lua#L10
137 pairs = [ ];
138 };
139 highlights = {
140 enabled = true;
141 groups = [
142 "BlinkPairsOrange"
143 "BlinkPairsPurple"
144 "BlinkPairsBlue"
145 ];
146 matchparen = {
147 enabled = true;
148 group = "MatchParen";
149 };
150 };
151 debug = false;
152 };
153 };
154 };
155}
users/fish/vim/latex.nix created+118
......@@ -0,0 +1,118 @@
1{ pkgs, host, ... }:
2{
3 vim = {
4 extraPackages = with pkgs; [
5 texliveFull
6 ];
7 lazy.plugins.cmp-vimtex = {
8 enabled = true;
9 package = pkgs.vimPlugins.cmp-vimtex;
10 lazy = false;
11
12 };
13 lazy.plugins.vimtex = {
14 enabled = true;
15 package = pkgs.vimPlugins.vimtex;
16 lazy = false;
17 };
18
19 globals = {
20 tex_flavor = "latex";
21 maplocalleader = "\\";
22 vimtex_compiler_method = "latexmk";
23 vimtex_view_method = if host.darwin then "skim" else "zathura";
24 vimtex_view_automatic = 1;
25 vimtex_compiler_latexmk = {
26 callback = 1;
27 continuous = 1;
28 executable = "latexmk";
29 hooks = [ ];
30 options = [
31 "-verbose"
32 "-file-line-error"
33 "-synctex=1"
34 "-interaction=nonstopmode"
35 "-shell-escape"
36 ];
37 };
38 vimtex_log_ignore = [
39 "Underfull"
40 "Overfull"
41 "specifier changed to"
42 "Token not allowed in a PDF string"
43 ];
44 vimtex_quickfix_ignore_filters = [
45 "Underfull"
46 "Overfull"
47 ];
48 };
49
50 autocomplete.blink-cmp = {
51 sourcePlugins = {
52 "blink.compat" = {
53 enable = true;
54 package = "blink-compat";
55 module = "blink.compat.source";
56 };
57 };
58 setupOpts = {
59 sources = {
60 default = [ "vimtex" ];
61 providers = {
62 vimtex = {
63 name = "vimtex";
64 module = "blink.compat.source";
65 score_offset = 100;
66 };
67 };
68 };
69 };
70 };
71
72 augroups = [
73 {
74 name = "VimTeX Events";
75 }
76 ];
77 autocmds = [
78 {
79 pattern = [ "VimtexEventViewReverse" ];
80 event = [ "User" ];
81 desc = "Return to nvim after reverse search";
82 command = "call b:vimtex.viewer.xdo_focus_vim()";
83 group = "VimTeX Events";
84 }
85 {
86 pattern = [ "VimtexEventQuit" ];
87 event = [ "User" ];
88 desc = "Close pdf after exiting nvim";
89 command = "VimtexClean";
90 group = "VimTeX Events";
91 }
92
93 {
94 pattern = [ "VimtexEventInitPost" ];
95 event = [ "User" ];
96 desc = "Start compiling when opening nvim to a tex file";
97 command = "VimtexCompile";
98 group = "VimTeX Events";
99 }
100
101 ];
102
103 lsp = {
104 servers = {
105 texlab = {
106 enable = true;
107 cmd = [ "${pkgs.texlab}/bin/texlab" ];
108 filetypes = [ "tex" ];
109 };
110 };
111 };
112 treesitter = {
113 grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
114 latex
115 ];
116 };
117 };
118}
users/fish/vim/mini.nix created+10
......@@ -0,0 +1,10 @@
1{ pkgs, ... }:
2{
3 vim = {
4 mini = {
5 icons.enable = true;
6 ai.enable = true;
7 surround.enable = true;
8 };
9 };
10}
users/fish/vim/visuals.nix created+27
......@@ -0,0 +1,27 @@
1{ pkgs, ... }:
2{
3 vim = {
4 ui = {
5 noice = {
6 enable = true;
7 setupOpts = {
8 lsp = {
9 progress.enabled = false;
10 signature.enabled = true;
11 };
12 presets = {
13 lsp_doc_border = true;
14 long_message_to_split = true;
15 inc_rename = false;
16 command_palette = false;
17 bottom_search = true;
18 };
19 };
20 };
21 borders = {
22 enable = true;
23 };
24 };
25
26 };
27}