From 94fcf2aaa0ea020ce7c3b9b0589b5eb39a738f62 Mon Sep 17 00:00:00 2001 From: Fish <77413091+JulianBarbera@users.noreply.github.com> Date: Tue, 30 Sep 2025 21:51:58 -0700 Subject: [PATCH] Updated vim --- users/fish/cattop/configuration.nix | 15 +-- users/fish/cattop/home.nix | 5 +- users/fish/vim.nix | 40 ++++++- users/fish/vim/default.nix | 9 ++ users/fish/vim/languages.nix | 155 ++++++++++++++++++++++++++++ users/fish/vim/latex.nix | 118 +++++++++++++++++++++ users/fish/vim/mini.nix | 10 ++ users/fish/vim/visuals.nix | 27 +++++ 8 files changed, 370 insertions(+), 9 deletions(-) create mode 100644 users/fish/vim/default.nix create mode 100644 users/fish/vim/languages.nix create mode 100644 users/fish/vim/latex.nix create mode 100644 users/fish/vim/mini.nix create mode 100644 users/fish/vim/visuals.nix diff --git a/users/fish/cattop/configuration.nix b/users/fish/cattop/configuration.nix index d455b262b7dd5253e88736b7c0d5f55cfb9a5e78..510ebab44d3118f2dfbec63a6d960b799c4f099e 100644 --- a/users/fish/cattop/configuration.nix +++ b/users/fish/cattop/configuration.nix @@ -66,12 +66,14 @@ services.printing.enable = true; # Enable sound. - # services.pulseaudio.enable = true; - # OR - # services.pipewire = { - # enable = true; - # pulse.enable = true; - # }; + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; # Enable touchpad support (enabled default in most desktopManager). # services.libinput.enable = true; @@ -81,6 +83,7 @@ extraGroups = [ "wheel" "dialout" + "audio" ]; packages = with pkgs; [ tree diff --git a/users/fish/cattop/home.nix b/users/fish/cattop/home.nix index 6cef84292dabfa59f7a19ca31c11d3c9628e4d73..717ef04009d48832066d111b9c4df8fb9615b61c 100644 --- a/users/fish/cattop/home.nix +++ b/users/fish/cattop/home.nix @@ -8,7 +8,7 @@ ghostty signal-desktop spotify - legcord + equibop # Gaming (prismlauncher.override { gamemodeSupport = true; }) @@ -27,14 +27,17 @@ efibootmgr pqiv imagemagick + toybox # Dev tools hyfetch python3 gh cmake + ripgrep # Unsorted + kicad ]; }; diff --git a/users/fish/vim.nix b/users/fish/vim.nix index 80d61f494d953950672d228d2d0e6a78e541999d..9104cec4f818859d19d728dd01182ea540e9b9c7 100644 --- a/users/fish/vim.nix +++ b/users/fish/vim.nix @@ -1,4 +1,40 @@ -{ ... }: +{ pkgs, ... }: { - vim.languages.svelte.enable = true; + imports = [ + ./vim/default.nix + ]; + + vim = { + #enable python provider + withPython3 = true; + python3Packages = [ "pynvim" ]; + + autocmds = [ + #Autocommand to fall back to treesitter folding if LSP doesnt support it + { + event = [ "LspAttach" ]; + callback = pkgs.lib.generators.mkLuaInline '' + function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + if client:supports_method('textDocument/foldingRange') then + local win = vim.api.nvim_get_current_win() + vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' + end + end + ''; + } + ]; + + tabline = { + nvimBufferline.enable = true; + }; + startPlugins = [ + "nui-nvim" + ]; + theme = { + name = "catppuccin"; + style = "mocha"; + }; + hideSearchHighlight = true; + }; } diff --git a/users/fish/vim/default.nix b/users/fish/vim/default.nix new file mode 100644 index 0000000000000000000000000000000000000000..9d7518bb41816b453399dd044663a511ba364078 --- /dev/null +++ b/users/fish/vim/default.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + imports = [ + ./languages.nix + ./latex.nix + ./visuals.nix + ./mini.nix + ]; +} diff --git a/users/fish/vim/languages.nix b/users/fish/vim/languages.nix new file mode 100644 index 0000000000000000000000000000000000000000..6c370854799533d6388b8eb992df055f6df93b7a --- /dev/null +++ b/users/fish/vim/languages.nix @@ -0,0 +1,155 @@ +{ + flake, + user, + host, + pkgs, + ... +}: +{ + vim = { + extraPackages = with pkgs; [ + python312Packages.pylatexenc + ]; + languages = { + lua.lsp.enable = true; + lua.lsp.lazydev.enable = true; + python = { + format.type = "ruff"; + }; + markdown = { + enable = true; + extensions.render-markdown-nvim = { + enable = true; + }; + }; + nix = { + lsp.servers = [ + "nil" + "nixd" + ]; + }; + }; + + formatter.conform-nvim = { + enable = true; + setupOpts = { + formatters_by_ft = { + fish = [ "fish_indent" ]; + tex = [ "latexindent" ]; + }; + }; + }; + diagnostics = { + enable = true; + config = { + virtual_text = { + format = pkgs.lib.generators.mkLuaInline '' + function(diagnostic) + return string.format("%s (%s)", diagnostic.message, diagnostic.source) + end + ''; + }; + }; + nvim-lint = { + enable = true; + linters_by_ft = { + nix = [ "statix" ]; + tex = [ "chktex" ]; + haskell = [ "hlint" ]; + }; + + linters = { + chktex = { + ignore_exitcode = true; + }; + }; + }; + }; + treesitter = { + enable = true; + fold = true; + addDefaultGrammars = true; + highlight = { + additionalVimRegexHighlighting = true; + }; + + grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ + markdown_inline + markdown + ]; + + highlight.enable = true; + indent.enable = false; + }; + + visuals = { + fidget-nvim = { + setupOpts = { + logger.level = "trace"; + }; + }; + }; + + ui = { + nvim-ufo = { + enable = true; + }; + }; + autocomplete.blink-cmp = { + enable = true; + mappings = { + close = null; + complete = null; + confirm = null; + next = null; + previous = null; + scrollDocsDown = null; + scrollDocsUp = null; + }; + + setupOpts = { + keymap = { + preset = "super-tab"; + }; + completion = { + ghost_text.enabled = false; + list.selection.preselect = true; + trigger = { + show_in_snippet = true; + }; + accept.auto_brackets.enabled = true; + }; + signature = { + enabled = true; + }; + }; + }; + + lazy.plugins."blink.pairs" = { + enabled = true; + package = pkgs.vimPlugins.blink-pairs; + setupModule = "blink.pairs"; + setupOpts = { + mappings = { + # -- you can call require("blink.pairs.mappings").enable() and require("blink.pairs.mappings").disable() to enable/disable mappings at runtime + enabled = true; + # -- see the defaults: https://github.com/Saghen/blink.pairs/blob/main/lua/blink/pairs/config/mappings.lua#L10 + pairs = [ ]; + }; + highlights = { + enabled = true; + groups = [ + "BlinkPairsOrange" + "BlinkPairsPurple" + "BlinkPairsBlue" + ]; + matchparen = { + enabled = true; + group = "MatchParen"; + }; + }; + debug = false; + }; + }; + }; +} diff --git a/users/fish/vim/latex.nix b/users/fish/vim/latex.nix new file mode 100644 index 0000000000000000000000000000000000000000..dd256a544add51076952ca5837f0ebc5631f0a06 --- /dev/null +++ b/users/fish/vim/latex.nix @@ -0,0 +1,118 @@ +{ pkgs, host, ... }: +{ + vim = { + extraPackages = with pkgs; [ + texliveFull + ]; + lazy.plugins.cmp-vimtex = { + enabled = true; + package = pkgs.vimPlugins.cmp-vimtex; + lazy = false; + + }; + lazy.plugins.vimtex = { + enabled = true; + package = pkgs.vimPlugins.vimtex; + lazy = false; + }; + + globals = { + tex_flavor = "latex"; + maplocalleader = "\\"; + vimtex_compiler_method = "latexmk"; + vimtex_view_method = if host.darwin then "skim" else "zathura"; + vimtex_view_automatic = 1; + vimtex_compiler_latexmk = { + callback = 1; + continuous = 1; + executable = "latexmk"; + hooks = [ ]; + options = [ + "-verbose" + "-file-line-error" + "-synctex=1" + "-interaction=nonstopmode" + "-shell-escape" + ]; + }; + vimtex_log_ignore = [ + "Underfull" + "Overfull" + "specifier changed to" + "Token not allowed in a PDF string" + ]; + vimtex_quickfix_ignore_filters = [ + "Underfull" + "Overfull" + ]; + }; + + autocomplete.blink-cmp = { + sourcePlugins = { + "blink.compat" = { + enable = true; + package = "blink-compat"; + module = "blink.compat.source"; + }; + }; + setupOpts = { + sources = { + default = [ "vimtex" ]; + providers = { + vimtex = { + name = "vimtex"; + module = "blink.compat.source"; + score_offset = 100; + }; + }; + }; + }; + }; + + augroups = [ + { + name = "VimTeX Events"; + } + ]; + autocmds = [ + { + pattern = [ "VimtexEventViewReverse" ]; + event = [ "User" ]; + desc = "Return to nvim after reverse search"; + command = "call b:vimtex.viewer.xdo_focus_vim()"; + group = "VimTeX Events"; + } + { + pattern = [ "VimtexEventQuit" ]; + event = [ "User" ]; + desc = "Close pdf after exiting nvim"; + command = "VimtexClean"; + group = "VimTeX Events"; + } + + { + pattern = [ "VimtexEventInitPost" ]; + event = [ "User" ]; + desc = "Start compiling when opening nvim to a tex file"; + command = "VimtexCompile"; + group = "VimTeX Events"; + } + + ]; + + lsp = { + servers = { + texlab = { + enable = true; + cmd = [ "${pkgs.texlab}/bin/texlab" ]; + filetypes = [ "tex" ]; + }; + }; + }; + treesitter = { + grammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ + latex + ]; + }; + }; +} diff --git a/users/fish/vim/mini.nix b/users/fish/vim/mini.nix new file mode 100644 index 0000000000000000000000000000000000000000..b8119e7ae3dd250c84ec324309d6b0cbe8d30fc2 --- /dev/null +++ b/users/fish/vim/mini.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: +{ + vim = { + mini = { + icons.enable = true; + ai.enable = true; + surround.enable = true; + }; + }; +} diff --git a/users/fish/vim/visuals.nix b/users/fish/vim/visuals.nix new file mode 100644 index 0000000000000000000000000000000000000000..09759c3e78e9e3f9522cbc0a1ed03e17e2340614 --- /dev/null +++ b/users/fish/vim/visuals.nix @@ -0,0 +1,27 @@ +{ pkgs, ... }: +{ + vim = { + ui = { + noice = { + enable = true; + setupOpts = { + lsp = { + progress.enabled = false; + signature.enabled = true; + }; + presets = { + lsp_doc_border = true; + long_message_to_split = true; + inc_rename = false; + command_palette = false; + bottom_search = true; + }; + }; + }; + borders = { + enable = true; + }; + }; + + }; +} -- 2.54.0