| author | |
| committer | |
| log | 94fcf2aaa0ea020ce7c3b9b0589b5eb39a738f62 |
| tree | 0260ff6f689f0e3b0f67a74d96d84f4760de467c |
| parent | c72bf0900cd12e72ca09bbf569dc02fff85d6f02 |
8 files changed, 370 insertions(+), 9 deletions(-)
users/fish/cattop/configuration.nix+9-6| ... | ... | @@ -66,12 +66,14 @@ |
| 66 | 66 | services.printing.enable = true; |
| 67 | 67 | |
| 68 | 68 | # 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 | }; | |
| 75 | 77 | |
| 76 | 78 | # Enable touchpad support (enabled default in most desktopManager). |
| 77 | 79 | # services.libinput.enable = true; |
| ... | ... | @@ -81,6 +83,7 @@ |
| 81 | 83 | extraGroups = [ |
| 82 | 84 | "wheel" |
| 83 | 85 | "dialout" |
| 86 | "audio" | |
| 84 | 87 | ]; |
| 85 | 88 | packages = with pkgs; [ |
| 86 | 89 | tree |
users/fish/cattop/home.nix+4-1| ... | ... | @@ -8,7 +8,7 @@ |
| 8 | 8 | ghostty |
| 9 | 9 | signal-desktop |
| 10 | 10 | spotify |
| 11 | legcord | |
| 11 | equibop | |
| 12 | 12 | |
| 13 | 13 | # Gaming |
| 14 | 14 | (prismlauncher.override { gamemodeSupport = true; }) |
| ... | ... | @@ -27,14 +27,17 @@ |
| 27 | 27 | efibootmgr |
| 28 | 28 | pqiv |
| 29 | 29 | imagemagick |
| 30 | toybox | |
| 30 | 31 | |
| 31 | 32 | # Dev tools |
| 32 | 33 | hyfetch |
| 33 | 34 | python3 |
| 34 | 35 | gh |
| 35 | 36 | cmake |
| 37 | ripgrep | |
| 36 | 38 | |
| 37 | 39 | # Unsorted |
| 40 | kicad | |
| 38 | 41 | ]; |
| 39 | 42 | }; |
| 40 | 43 |
users/fish/vim.nix+38-2| ... | ... | @@ -1,4 +1,40 @@ |
| 1 | { ... }: | |
| 1 | { pkgs, ... }: | |
| 2 | 2 | { |
| 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 | }; | |
| 4 | 40 | } |
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 | } |