mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 02:52:37 +00:00 
			
		
		
		
	Merge pull request #259 from NotAShelf/post-restructure
treewide: post-restructure refactoring
This commit is contained in:
		
				commit
				
					
						a8d7f98dc4
					
				
			
		
					 28 changed files with 490 additions and 290 deletions
				
			
		|  | @ -7,9 +7,11 @@ inputs: let | ||||||
|     lib ? pkgs.lib, |     lib ? pkgs.lib, | ||||||
|     check ? true, |     check ? true, | ||||||
|     extraSpecialArgs ? {}, |     extraSpecialArgs ? {}, | ||||||
|  |     extraModules ? [], | ||||||
|  |     ... | ||||||
|   }: |   }: | ||||||
|     modulesWithInputs { |     modulesWithInputs { | ||||||
|       inherit pkgs lib check extraSpecialArgs; |       inherit pkgs lib check extraSpecialArgs extraModules; | ||||||
|       configuration.imports = modules; |       configuration.imports = modules; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | @ -23,11 +25,14 @@ inputs: let | ||||||
|       vimAlias = true; |       vimAlias = true; | ||||||
|       debugMode = { |       debugMode = { | ||||||
|         enable = false; |         enable = false; | ||||||
|         level = 20; |         level = 16; | ||||||
|         logFile = "/tmp/nvim.log"; |         logFile = "/tmp/nvim.log"; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       spellcheck.vim-dirtytalk.enable = true; |       spellcheck = { | ||||||
|  |         enable = isMaximal; | ||||||
|  |         programmingWordlist.enable = isMaximal; | ||||||
|  |       }; | ||||||
| 
 | 
 | ||||||
|       lsp = { |       lsp = { | ||||||
|         formatOnSave = true; |         formatOnSave = true; | ||||||
|  |  | ||||||
|  | @ -127,10 +127,12 @@ | ||||||
| 
 | 
 | ||||||
|       nixos-render-docs -j $NIX_BUILD_CORES options manpage \ |       nixos-render-docs -j $NIX_BUILD_CORES options manpage \ | ||||||
|         --revision ${revision} \ |         --revision ${revision} \ | ||||||
|  |         --header ${./man/header.5} \ | ||||||
|  |         --footer ${./man/footer.5} \ | ||||||
|         ${nvimModuleDocs.optionsJSON}/share/doc/nixos/options.json \ |         ${nvimModuleDocs.optionsJSON}/share/doc/nixos/options.json \ | ||||||
|         $out/share/man/man5/neovim-flake.5 |         $out/share/man/man5/neovim-flake.5 | ||||||
| 
 | 
 | ||||||
|       cp ${./neovim-flake.1} $out/share/man/man1/neovim-flake.1 |       cp ${./man/neovim-flake.1} $out/share/man/man1/neovim-flake.1 | ||||||
|     ''; |     ''; | ||||||
| 
 | 
 | ||||||
|   # Generate the HTML manual pages |   # Generate the HTML manual pages | ||||||
|  |  | ||||||
|  | @ -9,6 +9,5 @@ | ||||||
| neovim-flake configuration specification | neovim-flake configuration specification | ||||||
| .SH "OPTIONS" | .SH "OPTIONS" | ||||||
| .PP | .PP | ||||||
| You can use the following options in | You can use the following options to configure neovim-flake: | ||||||
| home\-configuration\&.nix: |  | ||||||
| .PP | .PP | ||||||
|  | @ -9,13 +9,17 @@ | ||||||
| .cflags 4 / | .cflags 4 / | ||||||
| .Sh NAME | .Sh NAME | ||||||
| .Nm neovim-flake | .Nm neovim-flake | ||||||
| .Nd a extensible and distro-agonistic Neovim configuration wrapper in Nix | .Nd A highly modular, extensible and distro-agnostic Neovim distribution for Nix/NixOS. | ||||||
| . | . | ||||||
| .Sh BUGS | .Sh BUGS | ||||||
| .Pp | .Pp | ||||||
| Please report any bugs on the | Please report any bugs that you might encounter on the | ||||||
| \m[blue]\fBproject issue tracker\fR\m[]\&. | \m[blue]\fBproject issue tracker\fR\m[]\&. | ||||||
| 
 | 
 | ||||||
|  | .Sh SEE ALSO | ||||||
|  | .Pp | ||||||
|  | \fBneovim-flake\fR(5) | ||||||
|  | 
 | ||||||
| .Sh AUTHOR | .Sh AUTHOR | ||||||
| .Pp | .Pp | ||||||
| \fBneovim-flake contributors\fR | \fBneovim-flake contributors\fR | ||||||
|  | @ -25,5 +29,5 @@ Author. | ||||||
| 
 | 
 | ||||||
| .Sh COPYRIGHT | .Sh COPYRIGHT | ||||||
| .br | .br | ||||||
| Copyright \(co 2017\(en2022 neovim-flake contributors | Copyright \(co 2023\(en2024 neovim-flake contributors | ||||||
| .br | .br | ||||||
|  | @ -59,6 +59,10 @@ vim.api.nvim_set_keymap('n', '<leader>a', ':lua camelToSnake()<CR>', { noremap = | ||||||
| 
 | 
 | ||||||
| - Added rose-pine theme | - Added rose-pine theme | ||||||
| 
 | 
 | ||||||
|  | [jacekpoz](https://github.com/jacekpoz): | ||||||
|  | 
 | ||||||
|  | - Added `vim.autocomplete.alwaysComplete`. Allows users to have the autocomplete window popup only when manually activated. | ||||||
|  | 
 | ||||||
| [horriblename](https://github.com/horriblename): | [horriblename](https://github.com/horriblename): | ||||||
| 
 | 
 | ||||||
| - Fixed empty winbar when breadcrumbs are disabled | - Fixed empty winbar when breadcrumbs are disabled | ||||||
|  | @ -122,7 +126,8 @@ vim.api.nvim_set_keymap('n', '<leader>a', ':lua camelToSnake()<CR>', { noremap = | ||||||
| - Changed the tree structure to distinguish between core options and plugin options. | - Changed the tree structure to distinguish between core options and plugin options. | ||||||
| 
 | 
 | ||||||
| - Added plugin auto-discovery from plugin inputs. This is mostly from | - Added plugin auto-discovery from plugin inputs. This is mostly from | ||||||
|   [JordanIsaac's neovim-flake](https://github.com/jordanisaacs/neovim-flake) |   [JordanIsaac's neovim-flake](https://github.com/jordanisaacs/neovim-flake). Allows contributors to add plugin inputs | ||||||
|  |   with the `plugin-` prefix to have them automatically discovered for the `plugin` type in `lib/types`. | ||||||
| 
 | 
 | ||||||
| - Moved internal `wrapLuaConfig` to the extended library, structured its arguments to take `luaBefore`, `luaConfig` | - Moved internal `wrapLuaConfig` to the extended library, structured its arguments to take `luaBefore`, `luaConfig` | ||||||
|   and `luaAfter` as strings, which are then concatted inside a lua block. |   and `luaAfter` as strings, which are then concatted inside a lua block. | ||||||
|  | @ -131,6 +136,7 @@ vim.api.nvim_set_keymap('n', '<leader>a', ':lua camelToSnake()<CR>', { noremap = | ||||||
|   for inserting verbatim Lua configuration before and after the resolved Lua DAG respectively. Both of those options |   for inserting verbatim Lua configuration before and after the resolved Lua DAG respectively. Both of those options | ||||||
|   take strings as the type, so you may read the contents of a Lua file from a given path. |   take strings as the type, so you may read the contents of a Lua file from a given path. | ||||||
| 
 | 
 | ||||||
| [jacekpoz](https://github.com/jacekpoz): | - Added [`vim.spellChecking.ignoredFiletypes`](vim.spellChecking.ignoredFiletypes) | ||||||
| 
 |   and [`vim.spellChecking.programmingWordlist.enable`](vim.spellChecking.programmingWordlist.enable) for ignoring certain filetypes | ||||||
| - Added `vim.autocomplete.alwaysComplete`. Allows users to have the autocomplete window popup only when manually activated. |   in spellchecking and enabling `vim-dirtytalk` respectively. The previously used `vim.spellcheck.vim-dirtytalk` aliases to the latter | ||||||
|  |   option. | ||||||
|  |  | ||||||
							
								
								
									
										120
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										120
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -131,11 +131,11 @@ | ||||||
|     }, |     }, | ||||||
|     "nixpkgs": { |     "nixpkgs": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1712791164, |         "lastModified": 1713537308, | ||||||
|         "narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=", |         "narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=", | ||||||
|         "owner": "nixos", |         "owner": "nixos", | ||||||
|         "repo": "nixpkgs", |         "repo": "nixpkgs", | ||||||
|         "rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5", |         "rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -262,11 +262,11 @@ | ||||||
|     "plugin-catppuccin": { |     "plugin-catppuccin": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1713033163, |         "lastModified": 1713105352, | ||||||
|         "narHash": "sha256-hmWp/+qFEJ0zZBjR6kz+EuyHswI0T+DhmUneSPZVhkM=", |         "narHash": "sha256-yTVou/WArEWygBBs2NFPI9Dm9iSGfwVftKFbOAGl8tk=", | ||||||
|         "owner": "catppuccin", |         "owner": "catppuccin", | ||||||
|         "repo": "nvim", |         "repo": "nvim", | ||||||
|         "rev": "fc98570d85ae772e56dc42cf8d7d6a497a909bdb", |         "rev": "a1439ad7c584efb3d0ce14ccb835967f030450fe", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -502,11 +502,11 @@ | ||||||
|     "plugin-dashboard-nvim": { |     "plugin-dashboard-nvim": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1712210522, |         "lastModified": 1713420371, | ||||||
|         "narHash": "sha256-i/kKj69yeij/aUP3RpIL1opN5tUiy6C1vehSSLYHbgw=", |         "narHash": "sha256-zcWBgDM409n6rmb06FqVXbC+HU9HJN0+ADoTJDWHvbA=", | ||||||
|         "owner": "glepnir", |         "owner": "glepnir", | ||||||
|         "repo": "dashboard-nvim", |         "repo": "dashboard-nvim", | ||||||
|         "rev": "681300934baf36f6184ca41f0b26aed22056d4ee", |         "rev": "6d06924b562de6f0bb136edf1bf549afbf6b7d00", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -566,11 +566,11 @@ | ||||||
|     "plugin-elixir-ls": { |     "plugin-elixir-ls": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1711286188, |         "lastModified": 1713432893, | ||||||
|         "narHash": "sha256-OIB5f+FBOPsTWKGWyoU+/NQDMsJXBdj1v7UclbTP5ZY=", |         "narHash": "sha256-4xIX5j920uKYHvwH+Ftid4UixMa274a/37CZIw6dg6M=", | ||||||
|         "owner": "elixir-lsp", |         "owner": "elixir-lsp", | ||||||
|         "repo": "elixir-ls", |         "repo": "elixir-ls", | ||||||
|         "rev": "3e71900e0d0891f9f95e35d9a52b16c6a773a259", |         "rev": "df03608f11700ece5c8f8202ccd4d7f296df54df", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -582,11 +582,11 @@ | ||||||
|     "plugin-elixir-tools": { |     "plugin-elixir-tools": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1710172806, |         "lastModified": 1713617654, | ||||||
|         "narHash": "sha256-pVDeS9oCFzA9t9J/JfYG/RfdMoSmaaERd5nUgL9KHyM=", |         "narHash": "sha256-pJgtW51FLs+Yr+tlQckRmGkRnSUQNI3fEROn3D51mMs=", | ||||||
|         "owner": "elixir-tools", |         "owner": "elixir-tools", | ||||||
|         "repo": "elixir-tools.nvim", |         "repo": "elixir-tools.nvim", | ||||||
|         "rev": "4d003f4b41ab9b4f8b569104fa7818f048ed4e25", |         "rev": "3c4f8344a341818417b3d75c04eb96d894cb4640", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -614,11 +614,11 @@ | ||||||
|     "plugin-flutter-tools": { |     "plugin-flutter-tools": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1711622317, |         "lastModified": 1713525182, | ||||||
|         "narHash": "sha256-TQRz2MHg6qnzZGUDVFUoaZJiTBwQ3Hjqvc8AAeVS93Y=", |         "narHash": "sha256-krcaaDPJsftkrcEov1QdKQUQBH6+PgjNwFamWpmNFkU=", | ||||||
|         "owner": "akinsho", |         "owner": "akinsho", | ||||||
|         "repo": "flutter-tools.nvim", |         "repo": "flutter-tools.nvim", | ||||||
|         "rev": "4f18033c3b78aa5450e538d81dfbbb3e67aeadec", |         "rev": "f04131d6b2c82c2a7624a8843642d6269b50b437", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -646,11 +646,11 @@ | ||||||
|     "plugin-gitsigns-nvim": { |     "plugin-gitsigns-nvim": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1712937200, |         "lastModified": 1713620636, | ||||||
|         "narHash": "sha256-8pAy6mICiXpUO36ctWXbmRVB7cDSSDIArh9Nq59az9I=", |         "narHash": "sha256-UK3DyvrQ0kLm9wrMQ6tLDoDunoThbY/Yfjn+eCZpuMw=", | ||||||
|         "owner": "lewis6991", |         "owner": "lewis6991", | ||||||
|         "repo": "gitsigns.nvim", |         "repo": "gitsigns.nvim", | ||||||
|         "rev": "d96ef3bbff0bdbc3916a220f5c74a04c4db033f2", |         "rev": "035da036e68e509ed158414416c827d022d914bd", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -742,11 +742,11 @@ | ||||||
|     "plugin-image-nvim": { |     "plugin-image-nvim": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1712327429, |         "lastModified": 1713467683, | ||||||
|         "narHash": "sha256-usDtW+WnaeTdxx1ALCiZu/gnx2so7QneOjWoEXiChoQ=", |         "narHash": "sha256-qSGtiBl94RJMffoxXEV74fNcmrYcKtfPc3Aw65tzuDM=", | ||||||
|         "owner": "3rd", |         "owner": "3rd", | ||||||
|         "repo": "image.nvim", |         "repo": "image.nvim", | ||||||
|         "rev": "9be5ede323756d7ee2bbef2bc157767b3972cce6", |         "rev": "301de7919b2c0378cb7a782663f67abbcb198b17", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1015,11 +1015,11 @@ | ||||||
|     "plugin-nvim-bufferline-lua": { |     "plugin-nvim-bufferline-lua": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1709805539, |         "lastModified": 1713525468, | ||||||
|         "narHash": "sha256-drvgwupiyRAoShL2enXEYUumkYJnG+QtIkBIVqVZK+U=", |         "narHash": "sha256-28ZkN2o6xumhvXGbxRl3/eODhMOgJfOig/+svi/uAZk=", | ||||||
|         "owner": "akinsho", |         "owner": "akinsho", | ||||||
|         "repo": "nvim-bufferline.lua", |         "repo": "nvim-bufferline.lua", | ||||||
|         "rev": "64e2c5def50dfd6b6f14d96a45fa3d815a4a1eef", |         "rev": "f6f00d9ac1a51483ac78418f9e63126119a70709", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1095,11 +1095,11 @@ | ||||||
|     "plugin-nvim-dap": { |     "plugin-nvim-dap": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1711382674, |         "lastModified": 1713432622, | ||||||
|         "narHash": "sha256-HoLnYeA18TpHM1SJ3NOY53ZAyBo2y2EoUbAIr7TqtQI=", |         "narHash": "sha256-kEn2INrNMQSLHY3gpSVV+cTx9f1nFeUCM6by9WGn5Sg=", | ||||||
|         "owner": "mfussenegger", |         "owner": "mfussenegger", | ||||||
|         "repo": "nvim-dap", |         "repo": "nvim-dap", | ||||||
|         "rev": "405df1dcc2e395ab5173a9c3d00e03942c023074", |         "rev": "6ae8a14828b0f3bff1721a35a1dfd604b6a933bb", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1159,11 +1159,11 @@ | ||||||
|     "plugin-nvim-lspconfig": { |     "plugin-nvim-lspconfig": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1713075103, |         "lastModified": 1713507075, | ||||||
|         "narHash": "sha256-3GS1udfgzbghho1xtwZ5N1MZgWXWrJnW36Gnl/SAzIQ=", |         "narHash": "sha256-/SqLT0PG2RUWyknYpcXlcU/aUyKWZMBs35s1sPRkEmc=", | ||||||
|         "owner": "neovim", |         "owner": "neovim", | ||||||
|         "repo": "nvim-lspconfig", |         "repo": "nvim-lspconfig", | ||||||
|         "rev": "76b1bbaecbe7215498983356d50a16b46c20d6b0", |         "rev": "ed8b8a15acc441aec669f97d75f2c1f2ac8c8aa5", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1303,11 +1303,11 @@ | ||||||
|     "plugin-nvim-treesitter-context": { |     "plugin-nvim-treesitter-context": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1713029046, |         "lastModified": 1713520917, | ||||||
|         "narHash": "sha256-9r8UjGPAbLFHR3eYReLOR7SmBI+H6l6BeUrzaocq3YU=", |         "narHash": "sha256-AT49dDlwPaV41O+rcUCzzdra8moIg4iDAIhZJb6j0zE=", | ||||||
|         "owner": "nvim-treesitter", |         "owner": "nvim-treesitter", | ||||||
|         "repo": "nvim-treesitter-context", |         "repo": "nvim-treesitter-context", | ||||||
|         "rev": "ba05c6b753130d96b284d3e8ba8f54c28c0fb6d1", |         "rev": "ba4289ad345ececd335a9cdd7b9616fd0bb6be92", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1335,11 +1335,11 @@ | ||||||
|     "plugin-nvim-web-devicons": { |     "plugin-nvim-web-devicons": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1712684166, |         "lastModified": 1713596748, | ||||||
|         "narHash": "sha256-v+dhVbAN2OKLdS5YbSLmZsLijO4meSUBG26R+Ivm/BM=", |         "narHash": "sha256-yxsKBCP0ICMiH23tcLoTfZJ3VqNMhgkjOzynjPSRb8Q=", | ||||||
|         "owner": "nvim-tree", |         "owner": "nvim-tree", | ||||||
|         "repo": "nvim-web-devicons", |         "repo": "nvim-web-devicons", | ||||||
|         "rev": "6e355632387a085f15a66ad68cf681c1d7374a04", |         "rev": "31ba3c489e56a7f20881cee013cea1269b6b2f2d", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1351,11 +1351,11 @@ | ||||||
|     "plugin-obsidian-nvim": { |     "plugin-obsidian-nvim": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1712778222, |         "lastModified": 1713538455, | ||||||
|         "narHash": "sha256-jjsDXGdFMgdalgkw8HSY3+EfiTkYotsNA6txk1/09VY=", |         "narHash": "sha256-nIAaQa0DBYBQyfTEJi3Lzqs7QJqyw0Cemq6Hm704K60=", | ||||||
|         "owner": "epwalsh", |         "owner": "epwalsh", | ||||||
|         "repo": "obsidian.nvim", |         "repo": "obsidian.nvim", | ||||||
|         "rev": "1265a1fbfca5979f629ecedb2552f743c70f458f", |         "rev": "ec0f44e1921d2701bd99a542031d280f1e3930b5", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1383,11 +1383,11 @@ | ||||||
|     "plugin-orgmode-nvim": { |     "plugin-orgmode-nvim": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1712982802, |         "lastModified": 1713539113, | ||||||
|         "narHash": "sha256-zfw3eHBnJPPhsNr8aG8kn3pAchxklvk5aiFm2rys7PQ=", |         "narHash": "sha256-0Ayu2kVpnsxu/ER0nx+t7nyU9oNN8URLrGQtAKKb7Ls=", | ||||||
|         "owner": "nvim-orgmode", |         "owner": "nvim-orgmode", | ||||||
|         "repo": "orgmode", |         "repo": "orgmode", | ||||||
|         "rev": "5875037fa9c7c8e0abf29cd69510150355d248a0", |         "rev": "389e91f6f935aa845bc0cd13dd80f75431c34751", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1464,11 +1464,11 @@ | ||||||
|     "plugin-rose-pine": { |     "plugin-rose-pine": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1712685632, |         "lastModified": 1713451685, | ||||||
|         "narHash": "sha256-A9C5BJiOdT/F6JzWxJw/La77nxCoX3/bND15DM9st6k=", |         "narHash": "sha256-AdPSz5+nCOnLWexBasHuxRxEKbL4WVg+uV78//W5nLs=", | ||||||
|         "owner": "rose-pine", |         "owner": "rose-pine", | ||||||
|         "repo": "neovim", |         "repo": "neovim", | ||||||
|         "rev": "9cd7d8aad3606a95d733a45d16275eb7a5a836a3", |         "rev": "17b466e79479758b332a3cac12544a3ad2be6241", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1560,11 +1560,11 @@ | ||||||
|     "plugin-telescope": { |     "plugin-telescope": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1713022073, |         "lastModified": 1713586895, | ||||||
|         "narHash": "sha256-ZktFx77Ukuk1/Qhmf1wUEe0+wODM7f2H+PlXsDDTjcA=", |         "narHash": "sha256-3mrcol36HmY31pMAadirDdZqJtD0f+m8V0Lz8FnBx0M=", | ||||||
|         "owner": "nvim-telescope", |         "owner": "nvim-telescope", | ||||||
|         "repo": "telescope.nvim", |         "repo": "telescope.nvim", | ||||||
|         "rev": "4d4ade7f2b8f403e8816ca50c05ed16e259b21fb", |         "rev": "a4432dfb9b0b960c4cbc8765a42dc4fe2e029e8f", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1592,11 +1592,11 @@ | ||||||
|     "plugin-toggleterm-nvim": { |     "plugin-toggleterm-nvim": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1707733615, |         "lastModified": 1713526392, | ||||||
|         "narHash": "sha256-FJyDxQm2vs9R4WkqAbh6ryCvEABfrLSKRrAGo/qI5jM=", |         "narHash": "sha256-liy+AE8a+jll1fhROBKpJaTE9YZHQvYosOW4euGZNYc=", | ||||||
|         "owner": "akinsho", |         "owner": "akinsho", | ||||||
|         "repo": "toggleterm.nvim", |         "repo": "toggleterm.nvim", | ||||||
|         "rev": "193786e0371e3286d3bc9aa0079da1cd41beaa62", |         "rev": "dca1c80fb8ec41c97e7c3ef308719d8143fbbb05", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -1672,11 +1672,11 @@ | ||||||
|     "plugin-vim-illuminate": { |     "plugin-vim-illuminate": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1707016059, |         "lastModified": 1713467568, | ||||||
|         "narHash": "sha256-KNIu4cNyZddZSRS8KZ0U0T8uSSLJu8iqNLQN8e+Bv94=", |         "narHash": "sha256-o0D1edrsHkaljrzBFZXjdxiK/5ziCGJxM/kYNJgBI1E=", | ||||||
|         "owner": "RRethy", |         "owner": "RRethy", | ||||||
|         "repo": "vim-illuminate", |         "repo": "vim-illuminate", | ||||||
|         "rev": "305bf07b919ac526deb5193280379e2f8b599926", |         "rev": "e522e0dd742a83506db0a72e1ced68c9c130f185", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -2095,11 +2095,11 @@ | ||||||
|         "nixpkgs": "nixpkgs_4" |         "nixpkgs": "nixpkgs_4" | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1713070736, |         "lastModified": 1713572548, | ||||||
|         "narHash": "sha256-FatD7AHSoZGfn2JCOkDt9v04YkJG3PLfC7U7pU6r+bM=", |         "narHash": "sha256-bYNsY9HwrV8+eJGRYvfLEP6/Sgf2Kr9qNbnB91OYMMM=", | ||||||
|         "owner": "mitchellh", |         "owner": "mitchellh", | ||||||
|         "repo": "zig-overlay", |         "repo": "zig-overlay", | ||||||
|         "rev": "1c04fe593ef5124fd84e3d8726d481cba8b527b8", |         "rev": "76bccd85db6a182dfcbf8a5f4b540953f029a12c", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  |  | ||||||
|  | @ -7,8 +7,9 @@ packages: inputs: { | ||||||
| }: let | }: let | ||||||
|   inherit (lib) maintainers; |   inherit (lib) maintainers; | ||||||
|   inherit (lib.modules) mkIf; |   inherit (lib.modules) mkIf; | ||||||
|  |   inherit (lib.lists) optional; | ||||||
|   inherit (lib.options) mkOption mkEnableOption literalExpression; |   inherit (lib.options) mkOption mkEnableOption literalExpression; | ||||||
|   inherit (lib.types) attrsOf anything; |   inherit (lib.types) attrsOf anything bool; | ||||||
| 
 | 
 | ||||||
|   cfg = config.programs.neovim-flake; |   cfg = config.programs.neovim-flake; | ||||||
|   inherit (import ../../configuration.nix inputs) neovimConfiguration; |   inherit (import ../../configuration.nix inputs) neovimConfiguration; | ||||||
|  | @ -21,7 +22,24 @@ in { | ||||||
|   meta.maintainers = with maintainers; [NotAShelf]; |   meta.maintainers = with maintainers; [NotAShelf]; | ||||||
| 
 | 
 | ||||||
|   options.programs.neovim-flake = { |   options.programs.neovim-flake = { | ||||||
|     enable = mkEnableOption "neovim-flake, the extensible neovim-wrapper"; |     enable = mkEnableOption "neovim-flake, the extensible neovim configuration wrapper"; | ||||||
|  | 
 | ||||||
|  |     enableManpages = mkOption { | ||||||
|  |       type = bool; | ||||||
|  |       default = false; | ||||||
|  |       description = "Whether to enable manpages for neovim-flake."; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     defaultEditor = mkOption { | ||||||
|  |       type = bool; | ||||||
|  |       default = false; | ||||||
|  |       description = '' | ||||||
|  |         Whether to set `neovim-flake` as the default editor. | ||||||
|  | 
 | ||||||
|  |         This will set the `EDITOR` environment variable as `nvim` | ||||||
|  |         if set to true. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
| 
 | 
 | ||||||
|     finalPackage = mkOption { |     finalPackage = mkOption { | ||||||
|       type = anything; |       type = anything; | ||||||
|  | @ -57,8 +75,13 @@ in { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     home.packages = [cfg.finalPackage]; |  | ||||||
| 
 |  | ||||||
|     programs.neovim-flake.finalPackage = neovimConfigured.neovim; |     programs.neovim-flake.finalPackage = neovimConfigured.neovim; | ||||||
|  | 
 | ||||||
|  |     home = { | ||||||
|  |       sessionVariables = mkIf cfg.defaultEditor {EDITOR = "nvim";}; | ||||||
|  |       packages = | ||||||
|  |         [cfg.finalPackage] | ||||||
|  |         ++ optional cfg.enableManpages packages.${pkgs.stdenv.system}.docs-manpages; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| # Home Manager module | # NixOS module | ||||||
| packages: inputs: { | packages: inputs: { | ||||||
|   config, |   config, | ||||||
|   pkgs, |   pkgs, | ||||||
|  | @ -6,9 +6,10 @@ packages: inputs: { | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (lib) maintainers; |   inherit (lib) maintainers; | ||||||
|   inherit (lib.modules) mkIf; |   inherit (lib.modules) mkIf mkOverride; | ||||||
|  |   inherit (lib.lists) optional; | ||||||
|   inherit (lib.options) mkOption mkEnableOption literalExpression; |   inherit (lib.options) mkOption mkEnableOption literalExpression; | ||||||
|   inherit (lib.types) attrsOf anything; |   inherit (lib.types) attrsOf anything bool; | ||||||
| 
 | 
 | ||||||
|   cfg = config.programs.neovim-flake; |   cfg = config.programs.neovim-flake; | ||||||
|   inherit (import ../../configuration.nix inputs) neovimConfiguration; |   inherit (import ../../configuration.nix inputs) neovimConfiguration; | ||||||
|  | @ -21,7 +22,24 @@ in { | ||||||
|   meta.maintainers = with maintainers; [NotAShelf]; |   meta.maintainers = with maintainers; [NotAShelf]; | ||||||
| 
 | 
 | ||||||
|   options.programs.neovim-flake = { |   options.programs.neovim-flake = { | ||||||
|     enable = mkEnableOption "neovim-flake, the extensible neovim-wrapper"; |     enable = mkEnableOption "neovim-flake, the extensible neovim configuration wrapper"; | ||||||
|  | 
 | ||||||
|  |     enableManpages = mkOption { | ||||||
|  |       type = bool; | ||||||
|  |       default = false; | ||||||
|  |       description = "Whether to enable manpages for neovim-flake."; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     defaultEditor = mkOption { | ||||||
|  |       type = bool; | ||||||
|  |       default = false; | ||||||
|  |       description = '' | ||||||
|  |         Whether to set `neovim-flake` as the default editor. | ||||||
|  | 
 | ||||||
|  |         This will set the `EDITOR` environment variable as `nvim` | ||||||
|  |         if set to true. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
| 
 | 
 | ||||||
|     finalPackage = mkOption { |     finalPackage = mkOption { | ||||||
|       type = anything; |       type = anything; | ||||||
|  | @ -57,8 +75,13 @@ in { | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     environment.systemPackages = [cfg.finalPackage]; |  | ||||||
| 
 |  | ||||||
|     programs.neovim-flake.finalPackage = neovimConfigured.neovim; |     programs.neovim-flake.finalPackage = neovimConfigured.neovim; | ||||||
|  | 
 | ||||||
|  |     environment = { | ||||||
|  |       variables.EDITOR = mkIf cfg.defaultEditor (mkOverride 900 "nvim"); | ||||||
|  |       systemPackages = | ||||||
|  |         [cfg.finalPackage] | ||||||
|  |         ++ optional cfg.enableManpages packages.${pkgs.stdenv.system}.docs-manpages; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -56,10 +56,11 @@ in { | ||||||
| 
 | 
 | ||||||
|   pluginsOpt = { |   pluginsOpt = { | ||||||
|     description, |     description, | ||||||
|  |     example, | ||||||
|     default ? [], |     default ? [], | ||||||
|   }: |   }: | ||||||
|     mkOption { |     mkOption { | ||||||
|       inherit description default; |       inherit example description default; | ||||||
|       type = pluginsType; |       type = pluginsType; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,87 +0,0 @@ | ||||||
| { |  | ||||||
|   pkgs, |  | ||||||
|   lib, |  | ||||||
|   ... |  | ||||||
| }: let |  | ||||||
|   inherit (lib.options) mkEnableOption mkOption literalExpression; |  | ||||||
|   inherit (lib.types) path int package bool str listOf attrsOf; |  | ||||||
|   inherit (lib.nvim.types) pluginsOpt extraPluginType; |  | ||||||
| in { |  | ||||||
|   options.vim = { |  | ||||||
|     package = mkOption { |  | ||||||
|       type = package; |  | ||||||
|       default = pkgs.neovim-unwrapped; |  | ||||||
|       description = '' |  | ||||||
|         The neovim package to use. |  | ||||||
| 
 |  | ||||||
|         You will need to use an unwrapped package for this option to work as intended. |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     debugMode = { |  | ||||||
|       enable = mkEnableOption "debug mode"; |  | ||||||
|       level = mkOption { |  | ||||||
|         type = int; |  | ||||||
|         default = 20; |  | ||||||
|         description = "Set the debug level"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       logFile = mkOption { |  | ||||||
|         type = path; |  | ||||||
|         default = "/tmp/nvim.log"; |  | ||||||
|         description = "Set the log file"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     viAlias = mkOption { |  | ||||||
|       description = "Enable vi alias"; |  | ||||||
|       type = bool; |  | ||||||
|       default = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     vimAlias = mkOption { |  | ||||||
|       description = "Enable vim alias"; |  | ||||||
|       type = bool; |  | ||||||
|       default = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     startPlugins = pluginsOpt { |  | ||||||
|       default = []; |  | ||||||
|       description = "List of plugins to startup."; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     optPlugins = pluginsOpt { |  | ||||||
|       default = []; |  | ||||||
|       description = "List of plugins to optionally load"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     extraPlugins = mkOption { |  | ||||||
|       type = attrsOf extraPluginType; |  | ||||||
|       default = {}; |  | ||||||
|       description = '' |  | ||||||
|         List of plugins and related config. |  | ||||||
|         Note that these are setup after builtin plugins. |  | ||||||
|       ''; |  | ||||||
|       example = literalExpression '' |  | ||||||
|           with pkgs.vimPlugins; { |  | ||||||
|           aerial = { |  | ||||||
|             package = aerial-nvim; |  | ||||||
|             setup = "require('aerial').setup {}"; |  | ||||||
|           }; |  | ||||||
|           harpoon = { |  | ||||||
|             package = harpoon; |  | ||||||
|             setup = "require('harpoon').setup {}"; |  | ||||||
|             after = ["aerial"]; |  | ||||||
|           }; |  | ||||||
|         }''; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     luaPackages = mkOption { |  | ||||||
|       type = listOf str; |  | ||||||
|       default = []; |  | ||||||
|       description = '' |  | ||||||
|         List of lua packages to install. |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -4,30 +4,43 @@ inputs: { | ||||||
|   lib ? pkgs.lib, |   lib ? pkgs.lib, | ||||||
|   check ? true, |   check ? true, | ||||||
|   extraSpecialArgs ? {}, |   extraSpecialArgs ? {}, | ||||||
|  |   extraModules ? [], | ||||||
| }: let | }: let | ||||||
|   inherit (builtins) map filter isString toString getAttr; |   inherit (builtins) map filter isString toString getAttr; | ||||||
|   inherit (pkgs) wrapNeovimUnstable vimPlugins; |   inherit (pkgs) wrapNeovimUnstable vimPlugins; | ||||||
|   inherit (pkgs.vimUtils) buildVimPlugin; |   inherit (pkgs.vimUtils) buildVimPlugin; | ||||||
|   inherit (pkgs.neovimUtils) makeNeovimConfig; |   inherit (pkgs.neovimUtils) makeNeovimConfig; | ||||||
|  |   inherit (lib.lists) concatLists; | ||||||
|   inherit (lib.attrsets) recursiveUpdate; |   inherit (lib.attrsets) recursiveUpdate; | ||||||
|   inherit (lib.asserts) assertMsg; |   inherit (lib.asserts) assertMsg; | ||||||
| 
 | 
 | ||||||
|  |   # call the extedended library with `lib` and `inputs` as arguments | ||||||
|  |   # lib is used to provide the standard library functions to the extended library | ||||||
|  |   # but it can be overridden while this file is being called | ||||||
|  |   # inputs is used to pass inputs to the plugin autodiscovery function | ||||||
|   extendedLib = import ../lib/stdlib-extended.nix lib inputs; |   extendedLib = import ../lib/stdlib-extended.nix lib inputs; | ||||||
| 
 | 
 | ||||||
|  |   # import modules.nix with `check`, `pkgs` and `lib` as arguments | ||||||
|  |   # check can be disabled while calling this file is called | ||||||
|  |   # to avoid checking in all modules | ||||||
|   nvimModules = import ./modules.nix { |   nvimModules = import ./modules.nix { | ||||||
|     inherit check pkgs; |     inherit check pkgs; | ||||||
|     lib = extendedLib; |     lib = extendedLib; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   # evaluate the extended library with the modules | ||||||
|  |   # optionally with any additional modules passed by the user | ||||||
|   module = extendedLib.evalModules { |   module = extendedLib.evalModules { | ||||||
|     modules = [configuration] ++ nvimModules; |  | ||||||
|     specialArgs = recursiveUpdate {modulesPath = toString ./.;} extraSpecialArgs; |     specialArgs = recursiveUpdate {modulesPath = toString ./.;} extraSpecialArgs; | ||||||
|  |     modules = concatLists [[configuration] nvimModules extraModules]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   # alias to the internal configuration | ||||||
|   vimOptions = module.config.vim; |   vimOptions = module.config.vim; | ||||||
| 
 | 
 | ||||||
|   extraLuaPackages = ps: map (x: ps.${x}) vimOptions.luaPackages; |   # build a vim plugin with the given name and arguments | ||||||
| 
 |   # if the plugin is nvim-treesitter, warn the user to use buildTreesitterPlug | ||||||
|  |   # instead | ||||||
|   buildPlug = {pname, ...} @ args: |   buildPlug = {pname, ...} @ args: | ||||||
|     assert assertMsg (pname != "nvim-treesitter") "Use buildTreesitterPlug for building nvim-treesitter."; |     assert assertMsg (pname != "nvim-treesitter") "Use buildTreesitterPlug for building nvim-treesitter."; | ||||||
|       buildVimPlugin (args |       buildVimPlugin (args | ||||||
|  | @ -60,24 +73,36 @@ inputs: { | ||||||
|       (f: f != null) |       (f: f != null) | ||||||
|       plugins); |       plugins); | ||||||
| 
 | 
 | ||||||
|   plugins = |   # built (or "normalized") plugins that are modified | ||||||
|     (buildConfigPlugins vimOptions.startPlugins) |   builtStartPlugins = buildConfigPlugins vimOptions.startPlugins; | ||||||
|     ++ (map (package: { |   builtOptPlugins = map (package: { | ||||||
|     plugin = package; |     plugin = package; | ||||||
|     optional = false; |     optional = false; | ||||||
|       }) |   }) (buildConfigPlugins vimOptions.optPlugins); | ||||||
|       (buildConfigPlugins |  | ||||||
|         vimOptions.optPlugins)); |  | ||||||
| 
 | 
 | ||||||
|   neovim = wrapNeovimUnstable vimOptions.package (makeNeovimConfig { |   plugins = builtStartPlugins ++ builtOptPlugins; | ||||||
|     inherit (vimOptions) viAlias; | 
 | ||||||
|     inherit (vimOptions) vimAlias; |   extraLuaPackages = ps: map (x: ps.${x}) vimOptions.luaPackages; | ||||||
|     inherit extraLuaPackages; | 
 | ||||||
|     inherit plugins; |   # wrap user's desired neovim package using the neovim wrapper from nixpkgs | ||||||
|  |   # the wrapper takes the following arguments: | ||||||
|  |   #  - withPython (bool) | ||||||
|  |   #  - extraPython3Packages (lambda) | ||||||
|  |   #  - withNodeJs (bool) | ||||||
|  |   #  - withRuby (bool) | ||||||
|  |   #  - extraLuaPackages (lambda) | ||||||
|  |   #  - plugins (list) | ||||||
|  |   #  - customRC (string) | ||||||
|  |   # and returns the wrapped package | ||||||
|  |   neovim-wrapped = wrapNeovimUnstable vimOptions.package (makeNeovimConfig { | ||||||
|  |     inherit (vimOptions) viAlias vimAlias; | ||||||
|  |     inherit plugins extraLuaPackages; | ||||||
|     customRC = vimOptions.builtConfigRC; |     customRC = vimOptions.builtConfigRC; | ||||||
|   }); |   }); | ||||||
| in { | in { | ||||||
|   inherit (module) options config; |   inherit (module) options config; | ||||||
|   inherit (module._module.args) pkgs; |   inherit (module._module.args) pkgs; | ||||||
|   inherit neovim; | 
 | ||||||
|  |   # expose wrapped neovim-package | ||||||
|  |   neovim = neovim-wrapped; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -6,16 +6,17 @@ | ||||||
|   inherit (lib.modules) mkDefault; |   inherit (lib.modules) mkDefault; | ||||||
|   inherit (lib.lists) concatLists; |   inherit (lib.lists) concatLists; | ||||||
| 
 | 
 | ||||||
|   core = map (p: ./core + "/${p}") [ |   # The core neovim modules. | ||||||
|     "build" |   # Contains configuration for core neovim features | ||||||
|     "warnings" |   # such as spellchecking, mappings, and the init script (init.vim). | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   neovim = map (p: ./neovim + "/${p}") [ |   neovim = map (p: ./neovim + "/${p}") [ | ||||||
|     "basic" |     "init" | ||||||
|     "mappings" |     "mappings" | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|  |   # Individual plugin modules, separated by the type of plugin. | ||||||
|  |   # While adding a new type, you must make sure your type is | ||||||
|  |   # included in the list below. | ||||||
|   plugins = map (p: ./plugins + "/${p}") [ |   plugins = map (p: ./plugins + "/${p}") [ | ||||||
|     "assistant" |     "assistant" | ||||||
|     "autopairs" |     "autopairs" | ||||||
|  | @ -44,7 +45,14 @@ | ||||||
|     "visuals" |     "visuals" | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   allModules = concatLists [core neovim plugins]; |   # The neovim wrapper, used to build a wrapped neovim package | ||||||
|  |   # using the configuration passed in `neovim` and `plugins` modules. | ||||||
|  |   wrapper = map (p: ./wrapper + "/${p}") [ | ||||||
|  |     "build" | ||||||
|  |     "warnings" | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   allModules = concatLists [neovim plugins wrapper]; | ||||||
| 
 | 
 | ||||||
|   pkgsModule = {config, ...}: { |   pkgsModule = {config, ...}: { | ||||||
|     config = { |     config = { | ||||||
|  |  | ||||||
|  | @ -1,34 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   ... |  | ||||||
| }: let |  | ||||||
|   inherit (lib.modules) mkIf; |  | ||||||
|   inherit (lib.options) mkEnableOption literalExpression mkOption; |  | ||||||
|   inherit (lib.strings) concatStringsSep; |  | ||||||
|   inherit (lib.lists) optionals; |  | ||||||
|   inherit (lib.types) listOf str; |  | ||||||
|   inherit (lib.nvim.dag) entryAfter; |  | ||||||
| 
 |  | ||||||
|   cfg = config.vim.spellChecking; |  | ||||||
| in { |  | ||||||
|   options.vim.spellChecking = { |  | ||||||
|     enable = mkEnableOption "neovim's built-in spellchecking"; |  | ||||||
|     languages = mkOption { |  | ||||||
|       type = listOf str; |  | ||||||
|       default = ["en"]; |  | ||||||
|       example = literalExpression ''["en" "de"]''; |  | ||||||
|       description = "The languages to be used for spellchecking"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     vim = { |  | ||||||
|       configRC.spellchecking = entryAfter ["basic"] '' |  | ||||||
|         " Spellchecking |  | ||||||
|         set spell |  | ||||||
|         set spelllang=${concatStringsSep "," cfg.languages} |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| { |  | ||||||
|   config = { |  | ||||||
|     vim.startPlugins = ["plenary-nvim"]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,8 +1,6 @@ | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./basic |     ./init | ||||||
|     ./mappings |     ./mappings | ||||||
| 
 |  | ||||||
|     ./config.nix |  | ||||||
|   ]; |   ]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -145,6 +145,7 @@ in { | ||||||
|       default = true; |       default = true; | ||||||
|       description = "New splits will open to the right"; |       description = "New splits will open to the right"; | ||||||
|     }; |     }; | ||||||
|  | 
 | ||||||
|     enableEditorconfig = mkOption { |     enableEditorconfig = mkOption { | ||||||
|       type = bool; |       type = bool; | ||||||
|       default = true; |       default = true; | ||||||
|  | @ -167,25 +168,19 @@ in { | ||||||
|   config.vim.configRC.basic = entryAfter ["globalsScript"] '' |   config.vim.configRC.basic = entryAfter ["globalsScript"] '' | ||||||
|     " Settings that are set for everything |     " Settings that are set for everything | ||||||
|     set encoding=utf-8 |     set encoding=utf-8 | ||||||
|  |     set hidden | ||||||
|  |     set shortmess+=c | ||||||
|  |     set expandtab | ||||||
|     set mouse=${cfg.mouseSupport} |     set mouse=${cfg.mouseSupport} | ||||||
|     set tabstop=${toString cfg.tabWidth} |     set tabstop=${toString cfg.tabWidth} | ||||||
|     set shiftwidth=${toString cfg.tabWidth} |     set shiftwidth=${toString cfg.tabWidth} | ||||||
|     set softtabstop=${toString cfg.tabWidth} |     set softtabstop=${toString cfg.tabWidth} | ||||||
|     set expandtab |  | ||||||
|     set cmdheight=${toString cfg.cmdHeight} |     set cmdheight=${toString cfg.cmdHeight} | ||||||
|     set updatetime=${toString cfg.updateTime} |     set updatetime=${toString cfg.updateTime} | ||||||
|     set shortmess+=c |  | ||||||
|     set tm=${toString cfg.mapTimeout} |     set tm=${toString cfg.mapTimeout} | ||||||
|     set hidden |  | ||||||
|     set cursorlineopt=${toString cfg.cursorlineOpt} |     set cursorlineopt=${toString cfg.cursorlineOpt} | ||||||
|     set scrolloff=${toString cfg.scrollOffset} |     set scrolloff=${toString cfg.scrollOffset} | ||||||
| 
 | 
 | ||||||
|     ${optionalString cfg.debugMode.enable '' |  | ||||||
|       " Debug mode settings |  | ||||||
|       set verbose=${toString cfg.debugMode.level} |  | ||||||
|       set verbosefile=${cfg.debugMode.logFile} |  | ||||||
|     ''} |  | ||||||
| 
 |  | ||||||
|     ${optionalString cfg.splitBelow '' |     ${optionalString cfg.splitBelow '' | ||||||
|       set splitbelow |       set splitbelow | ||||||
|     ''} |     ''} | ||||||
							
								
								
									
										50
									
								
								modules/neovim/init/debug.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								modules/neovim/init/debug.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,50 @@ | ||||||
|  | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib.modules) mkIf; | ||||||
|  |   inherit (lib.strings) optionalString; | ||||||
|  |   inherit (lib.options) mkEnableOption mkOption; | ||||||
|  |   inherit (lib.types) path enum nullOr; | ||||||
|  |   inherit (lib.nvim.dag) entryAfter; | ||||||
|  | 
 | ||||||
|  |   cfg = config.vim.debugMode; | ||||||
|  | in { | ||||||
|  |   options.vim = { | ||||||
|  |     debugMode = { | ||||||
|  |       enable = mkEnableOption "debug mode"; | ||||||
|  |       level = mkOption { | ||||||
|  |         type = enum [2 3 4 5 8 9 11 12 13 14 15 16]; | ||||||
|  |         default = 16; | ||||||
|  |         description = '' | ||||||
|  |           Set verbosity level of Neovim while debug mode is enabled. | ||||||
|  | 
 | ||||||
|  |           Value must be be one of the levels expected by Neovim's | ||||||
|  |           [`verbose` option](https://neovim.io/doc/user/options.html#'verbose') | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       logFile = mkOption { | ||||||
|  |         type = nullOr path; | ||||||
|  |         default = null; | ||||||
|  |         description = '' | ||||||
|  |           Set the log file that will be used to store verbose messages | ||||||
|  |           set by the `verbose` option. | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config.vim = mkIf cfg.enable { | ||||||
|  |     luaConfigRC.debug-mode = entryAfter ["basic"] '' | ||||||
|  |       -- Debug mode settings | ||||||
|  |       vim.o.verbose = ${toString cfg.level}, | ||||||
|  | 
 | ||||||
|  |       ${optionalString (cfg.logFile != null) '' | ||||||
|  |         -- Set verbose log file | ||||||
|  |         vim.o.verbosefile = ${cfg.logFile}, | ||||||
|  |       ''} | ||||||
|  |     ''; | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./configrc.nix |     ./basic.nix | ||||||
|  |     ./debug.nix | ||||||
|     ./spellcheck.nix |     ./spellcheck.nix | ||||||
|   ]; |   ]; | ||||||
| } | } | ||||||
							
								
								
									
										70
									
								
								modules/neovim/init/spellcheck.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								modules/neovim/init/spellcheck.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,70 @@ | ||||||
|  | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib.modules) mkIf mkRenamedOptionModule; | ||||||
|  |   inherit (lib.options) mkOption mkEnableOption literalExpression; | ||||||
|  |   inherit (lib.types) listOf str; | ||||||
|  |   inherit (lib.nvim.lua) listToLuaTable; | ||||||
|  |   inherit (lib.nvim.dag) entryAfter; | ||||||
|  | 
 | ||||||
|  |   cfg = config.vim.spellcheck; | ||||||
|  | in { | ||||||
|  |   imports = [ | ||||||
|  |     (mkRenamedOptionModule ["vim" "spellChecking"] ["vim" "spellcheck"]) | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|  |   options.vim.spellcheck = { | ||||||
|  |     enable = mkEnableOption "neovim's built-in spellchecking"; | ||||||
|  |     languages = mkOption { | ||||||
|  |       type = listOf str; | ||||||
|  |       default = ["en"]; | ||||||
|  |       example = literalExpression ''["en" "de"]''; | ||||||
|  |       description = '' | ||||||
|  |         A list of languages that should be used for spellchecking. | ||||||
|  | 
 | ||||||
|  |         To add your own language files, you may place your `spell` | ||||||
|  |         directory in either `~/.config/nvim` or the | ||||||
|  |         [additionalRuntimePaths](#opt-vim.additionalRuntimePaths) | ||||||
|  |         directory provided by neovim-flake. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     ignoredFiletypes = mkOption { | ||||||
|  |       type = listOf str; | ||||||
|  |       default = ["toggleterm"]; | ||||||
|  |       example = literalExpression ''["markdown" "gitcommit"]''; | ||||||
|  |       description = '' | ||||||
|  |         A list of filetypes for which spellchecking will be disabled. | ||||||
|  | 
 | ||||||
|  |         You may use `echo &filetype` in neovim to find out the | ||||||
|  |         filetype for a specific buffer. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     programmingWordlist.enable = mkEnableOption '' | ||||||
|  |       vim-dirtytalk, a wordlist for programmers containing | ||||||
|  |       common programming terms. | ||||||
|  | 
 | ||||||
|  |       Setting this value as `true` has the same effect | ||||||
|  |       as setting {option}`vim.spellCheck.enable` | ||||||
|  |     ''; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     vim.luaConfigRC.spellcheck = entryAfter ["basic"] '' | ||||||
|  |       vim.opt.spell = true | ||||||
|  |       vim.opt.spelllang = ${listToLuaTable cfg.languages} | ||||||
|  | 
 | ||||||
|  |       -- Disable spellchecking for certain filetypes | ||||||
|  |       -- as configured by `vim.spellcheck.ignoredFiletypes` | ||||||
|  |       vim.api.nvim_create_autocmd({ "FileType" }, { | ||||||
|  |         pattern = ${listToLuaTable cfg.ignoredFiletypes}, | ||||||
|  |         callback = function() | ||||||
|  |           vim.opt_local.spell = false | ||||||
|  |         end, | ||||||
|  |       }) | ||||||
|  |     ''; | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim; |   cfg = config.vim; | ||||||
| in { | in { | ||||||
|  |   config = { | ||||||
|     vim.maps = { |     vim.maps = { | ||||||
|       normal = |       normal = | ||||||
|         mkIf cfg.disableArrows { |         mkIf cfg.disableArrows { | ||||||
|  | @ -54,4 +55,5 @@ in { | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
|   inherit (lib.nvim.dag) entryAfter; |   inherit (lib.nvim.dag) entryAfter; | ||||||
|   cfg = config.vim.spellcheck; |   cfg = config.vim.spellcheck; | ||||||
| in { | in { | ||||||
|   config = mkIf cfg.vim-dirtytalk.enable { |   config = mkIf (cfg.enable && cfg.programmingWordlist.enable) { | ||||||
|     vim = { |     vim = { | ||||||
|       startPlugins = ["vim-dirtytalk"]; |       startPlugins = ["vim-dirtytalk"]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| {lib, ...}: let | {lib, ...}: let | ||||||
|   inherit (lib.options) mkEnableOption; |   inherit (lib.modules) mkAliasOptionModule; | ||||||
| in { | in { | ||||||
|   options.vim.spellcheck.vim-dirtytalk = { |   imports = [ | ||||||
|     enable = mkEnableOption "vim-dirtytalk, a wordlist for programmers, that includes programming words"; |     (mkAliasOptionModule ["vim" "spellcheck" "vim-dirtytalk" "enable"] ["vim" "spellcheck" "programmingWordlist" "enable"]) | ||||||
|   }; |   ]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
|   inherit (lib.generators) mkLuaInline; |   inherit (lib.generators) mkLuaInline; | ||||||
|   inherit (lib.nvim.types) dagOf; |   inherit (lib.nvim.types) dagOf; | ||||||
|   inherit (lib.nvim.dag) entryAnywhere entryAfter topoSort mkLuarcSection mkVimrcSection; |   inherit (lib.nvim.dag) entryAnywhere entryAfter topoSort mkLuarcSection mkVimrcSection; | ||||||
|   inherit (lib.nvim.lua) toLuaObject wrapLuaConfig; |   inherit (lib.nvim.lua) toLuaObject wrapLuaConfig listToLuaTable; | ||||||
|   inherit (lib.nvim.vim) valToVim; |   inherit (lib.nvim.vim) valToVim; | ||||||
|   inherit (lib.nvim.config) mkBool; |   inherit (lib.nvim.config) mkBool; | ||||||
| 
 | 
 | ||||||
|  | @ -207,12 +207,15 @@ in { | ||||||
| 
 | 
 | ||||||
|       luaConfigPre = mkOption { |       luaConfigPre = mkOption { | ||||||
|         type = str; |         type = str; | ||||||
|         default = let |         default = '' | ||||||
|           additionalRuntimePaths = concatStringsSep "," cfg.additionalRuntimePaths; |  | ||||||
|         in '' |  | ||||||
|           ${optionalString (cfg.additionalRuntimePaths != []) '' |           ${optionalString (cfg.additionalRuntimePaths != []) '' | ||||||
|             if not vim.o.runtimepath:find('${additionalRuntimePaths}', 1, true) then |             -- The following list is generated from `vim.additionalRuntimePaths` | ||||||
|                 vim.o.runtimepath = vim.o.runtimepath .. ',' .. '${additionalRuntimePaths}' |             -- and is used to append additional runtime paths to the | ||||||
|  |             -- `runtimepath` option. | ||||||
|  |             local additionalRuntimePaths = ${listToLuaTable cfg.additionalRuntimePaths}; | ||||||
|  | 
 | ||||||
|  |             for _, path in ipairs(additionalRuntimePaths) do | ||||||
|  |               vim.opt.runtimepath:append(path) | ||||||
|             end |             end | ||||||
|           ''} |           ''} | ||||||
| 
 | 
 | ||||||
|  | @ -226,6 +229,8 @@ in { | ||||||
|           if [vim.enableLuaLoader](#opt-vim.enableLuaLoader) is set to true. |           if [vim.enableLuaLoader](#opt-vim.enableLuaLoader) is set to true. | ||||||
|         ''; |         ''; | ||||||
| 
 | 
 | ||||||
|  |         example = literalExpression ''"$${builtins.readFile ./my-lua-config-pre.lua}"''; | ||||||
|  | 
 | ||||||
|         description = '' |         description = '' | ||||||
|           Verbatim lua code that will be inserted **before** |           Verbatim lua code that will be inserted **before** | ||||||
|           the result of `luaConfigRc` DAG has been resolved. |           the result of `luaConfigRc` DAG has been resolved. | ||||||
|  | @ -235,9 +240,11 @@ in { | ||||||
|           of lua configs after the DAG result. |           of lua configs after the DAG result. | ||||||
| 
 | 
 | ||||||
|           ::: {.warning} |           ::: {.warning} | ||||||
|           You do not want to override this option. It is used |           You do not want to override this option with mkForce | ||||||
|           internally to set certain options as early as possible |           It is used internally to set certain options as early | ||||||
|           and should be avoided unless you know what you're doing. |           as possible and should be avoided unless you know what | ||||||
|  |           you're doing. Passing a string to this option will | ||||||
|  |           merge it with the default contents. | ||||||
|           ::: |           ::: | ||||||
|         ''; |         ''; | ||||||
|       }; |       }; | ||||||
|  | @ -266,8 +273,9 @@ in { | ||||||
|       luaConfigPost = mkOption { |       luaConfigPost = mkOption { | ||||||
|         type = str; |         type = str; | ||||||
|         default = ""; |         default = ""; | ||||||
|  |         example = literalExpression ''"$${builtins.readFile ./my-lua-config-post.lua}"''; | ||||||
|         description = '' |         description = '' | ||||||
|           Verbatim lua code that will be inserted after |           Verbatim lua code that will be inserted **after** | ||||||
|           the result of the `luaConfigRc` DAG has been resolved |           the result of the `luaConfigRc` DAG has been resolved | ||||||
| 
 | 
 | ||||||
|           This option **does not** take a DAG set, but a string |           This option **does not** take a DAG set, but a string | ||||||
							
								
								
									
										106
									
								
								modules/wrapper/build/options.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								modules/wrapper/build/options.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,106 @@ | ||||||
|  | { | ||||||
|  |   pkgs, | ||||||
|  |   lib, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib.options) mkOption literalExpression; | ||||||
|  |   inherit (lib.types) package bool str listOf attrsOf; | ||||||
|  |   inherit (lib.nvim.types) pluginsOpt extraPluginType; | ||||||
|  | in { | ||||||
|  |   options.vim = { | ||||||
|  |     package = mkOption { | ||||||
|  |       type = package; | ||||||
|  |       default = pkgs.neovim-unwrapped; | ||||||
|  |       description = '' | ||||||
|  |         The neovim package to use. | ||||||
|  | 
 | ||||||
|  |         ::: {.warning} | ||||||
|  |         You will need to use an unwrapped package for this | ||||||
|  |         option to work as intended. | ||||||
|  |         ::: | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     viAlias = mkOption { | ||||||
|  |       type = bool; | ||||||
|  |       default = true; | ||||||
|  |       description = "Enable the `vi` alias for `nvim`"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     vimAlias = mkOption { | ||||||
|  |       type = bool; | ||||||
|  |       default = true; | ||||||
|  |       description = "Enable the `vim` alias for `nvim`"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     startPlugins = pluginsOpt { | ||||||
|  |       default = ["plenary-nvim"]; | ||||||
|  |       example = literalExpression '' | ||||||
|  |         [pkgs.vimPlugins.telescope-nvim] | ||||||
|  |       ''; | ||||||
|  | 
 | ||||||
|  |       description = '' | ||||||
|  |         List of plugins to load on startup. This is used | ||||||
|  |         internally to add plugins to Neovim's runtime. | ||||||
|  | 
 | ||||||
|  |         To add additional plugins to your configuration, consider | ||||||
|  |         using the [{option}`vim.extraPlugins`](#opt-vim.optPlugins) | ||||||
|  |         option. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     optPlugins = pluginsOpt { | ||||||
|  |       default = []; | ||||||
|  |       example = literalExpression '' | ||||||
|  |         [pkgs.vimPlugins.vim-ghost] | ||||||
|  |       ''; | ||||||
|  |       description = '' | ||||||
|  |         List of plugins to optionally load on startup. | ||||||
|  | 
 | ||||||
|  |         This option has the same type definition as {option}`vim.startPlugins` | ||||||
|  |         and plugins in this list are appended to {option}`vim.startPlugins` by | ||||||
|  |         the wrapper during the build process. | ||||||
|  | 
 | ||||||
|  |         To avoid overriding packages and dependencies provided by startPlugins, you | ||||||
|  |         are recommended to use this option or {option}`vim.extraPlugins` option. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     extraPlugins = mkOption { | ||||||
|  |       type = attrsOf extraPluginType; | ||||||
|  |       default = {}; | ||||||
|  |       description = '' | ||||||
|  |         A list of plugins and their configurations that will be | ||||||
|  |         set up after builtin plugins. | ||||||
|  | 
 | ||||||
|  |         This option takes a special type that allows you to order | ||||||
|  |         your custom plugins using neovim-flake's modified DAG | ||||||
|  |         library. | ||||||
|  |       ''; | ||||||
|  | 
 | ||||||
|  |       example = literalExpression '' | ||||||
|  |         with pkgs.vimPlugins; { | ||||||
|  |           aerial = { | ||||||
|  |             package = aerial-nvim; | ||||||
|  |             setup = "require('aerial').setup {}"; | ||||||
|  |           }; | ||||||
|  | 
 | ||||||
|  |           harpoon = { | ||||||
|  |             package = harpoon; | ||||||
|  |             setup = "require('harpoon').setup {}"; | ||||||
|  |             after = ["aerial"]; # place harpoon configuration after aerial | ||||||
|  |           }; | ||||||
|  |         } | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     luaPackages = mkOption { | ||||||
|  |       type = listOf str; | ||||||
|  |       default = []; | ||||||
|  |       example = literalExpression ''["magick" "serpent"]''; | ||||||
|  |       description = '' | ||||||
|  |         List of lua packages to install. | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 GitHub
					GitHub