mirror of
https://github.com/NotAShelf/nvf.git
synced 2024-11-26 15:06:45 +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,
|
||||
check ? true,
|
||||
extraSpecialArgs ? {},
|
||||
extraModules ? [],
|
||||
...
|
||||
}:
|
||||
modulesWithInputs {
|
||||
inherit pkgs lib check extraSpecialArgs;
|
||||
inherit pkgs lib check extraSpecialArgs extraModules;
|
||||
configuration.imports = modules;
|
||||
};
|
||||
|
||||
|
@ -23,11 +25,14 @@ inputs: let
|
|||
vimAlias = true;
|
||||
debugMode = {
|
||||
enable = false;
|
||||
level = 20;
|
||||
level = 16;
|
||||
logFile = "/tmp/nvim.log";
|
||||
};
|
||||
|
||||
spellcheck.vim-dirtytalk.enable = true;
|
||||
spellcheck = {
|
||||
enable = isMaximal;
|
||||
programmingWordlist.enable = isMaximal;
|
||||
};
|
||||
|
||||
lsp = {
|
||||
formatOnSave = true;
|
||||
|
|
|
@ -127,10 +127,12 @@
|
|||
|
||||
nixos-render-docs -j $NIX_BUILD_CORES options manpage \
|
||||
--revision ${revision} \
|
||||
--header ${./man/header.5} \
|
||||
--footer ${./man/footer.5} \
|
||||
${nvimModuleDocs.optionsJSON}/share/doc/nixos/options.json \
|
||||
$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
|
||||
|
|
|
@ -9,6 +9,5 @@
|
|||
neovim-flake configuration specification
|
||||
.SH "OPTIONS"
|
||||
.PP
|
||||
You can use the following options in
|
||||
home\-configuration\&.nix:
|
||||
You can use the following options to configure neovim-flake:
|
||||
.PP
|
|
@ -9,13 +9,17 @@
|
|||
.cflags 4 /
|
||||
.Sh NAME
|
||||
.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
|
||||
.Pp
|
||||
Please report any bugs on the
|
||||
Please report any bugs that you might encounter on the
|
||||
\m[blue]\fBproject issue tracker\fR\m[]\&.
|
||||
|
||||
.Sh SEE ALSO
|
||||
.Pp
|
||||
\fBneovim-flake\fR(5)
|
||||
|
||||
.Sh AUTHOR
|
||||
.Pp
|
||||
\fBneovim-flake contributors\fR
|
||||
|
@ -25,5 +29,5 @@ Author.
|
|||
|
||||
.Sh COPYRIGHT
|
||||
.br
|
||||
Copyright \(co 2017\(en2022 neovim-flake contributors
|
||||
Copyright \(co 2023\(en2024 neovim-flake contributors
|
||||
.br
|
|
@ -59,6 +59,10 @@ vim.api.nvim_set_keymap('n', '<leader>a', ':lua camelToSnake()<CR>', { noremap =
|
|||
|
||||
- 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):
|
||||
|
||||
- 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.
|
||||
|
||||
- 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`
|
||||
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
|
||||
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.autocomplete.alwaysComplete`. Allows users to have the autocomplete window popup only when manually activated.
|
||||
- Added [`vim.spellChecking.ignoredFiletypes`](vim.spellChecking.ignoredFiletypes)
|
||||
and [`vim.spellChecking.programmingWordlist.enable`](vim.spellChecking.programmingWordlist.enable) for ignoring certain filetypes
|
||||
in spellchecking and enabling `vim-dirtytalk` respectively. The previously used `vim.spellcheck.vim-dirtytalk` aliases to the latter
|
||||
option.
|
||||
|
|
120
flake.lock
120
flake.lock
|
@ -131,11 +131,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1712791164,
|
||||
"narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=",
|
||||
"lastModified": 1713537308,
|
||||
"narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5",
|
||||
"rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -262,11 +262,11 @@
|
|||
"plugin-catppuccin": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1713033163,
|
||||
"narHash": "sha256-hmWp/+qFEJ0zZBjR6kz+EuyHswI0T+DhmUneSPZVhkM=",
|
||||
"lastModified": 1713105352,
|
||||
"narHash": "sha256-yTVou/WArEWygBBs2NFPI9Dm9iSGfwVftKFbOAGl8tk=",
|
||||
"owner": "catppuccin",
|
||||
"repo": "nvim",
|
||||
"rev": "fc98570d85ae772e56dc42cf8d7d6a497a909bdb",
|
||||
"rev": "a1439ad7c584efb3d0ce14ccb835967f030450fe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -502,11 +502,11 @@
|
|||
"plugin-dashboard-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1712210522,
|
||||
"narHash": "sha256-i/kKj69yeij/aUP3RpIL1opN5tUiy6C1vehSSLYHbgw=",
|
||||
"lastModified": 1713420371,
|
||||
"narHash": "sha256-zcWBgDM409n6rmb06FqVXbC+HU9HJN0+ADoTJDWHvbA=",
|
||||
"owner": "glepnir",
|
||||
"repo": "dashboard-nvim",
|
||||
"rev": "681300934baf36f6184ca41f0b26aed22056d4ee",
|
||||
"rev": "6d06924b562de6f0bb136edf1bf549afbf6b7d00",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -566,11 +566,11 @@
|
|||
"plugin-elixir-ls": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1711286188,
|
||||
"narHash": "sha256-OIB5f+FBOPsTWKGWyoU+/NQDMsJXBdj1v7UclbTP5ZY=",
|
||||
"lastModified": 1713432893,
|
||||
"narHash": "sha256-4xIX5j920uKYHvwH+Ftid4UixMa274a/37CZIw6dg6M=",
|
||||
"owner": "elixir-lsp",
|
||||
"repo": "elixir-ls",
|
||||
"rev": "3e71900e0d0891f9f95e35d9a52b16c6a773a259",
|
||||
"rev": "df03608f11700ece5c8f8202ccd4d7f296df54df",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -582,11 +582,11 @@
|
|||
"plugin-elixir-tools": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1710172806,
|
||||
"narHash": "sha256-pVDeS9oCFzA9t9J/JfYG/RfdMoSmaaERd5nUgL9KHyM=",
|
||||
"lastModified": 1713617654,
|
||||
"narHash": "sha256-pJgtW51FLs+Yr+tlQckRmGkRnSUQNI3fEROn3D51mMs=",
|
||||
"owner": "elixir-tools",
|
||||
"repo": "elixir-tools.nvim",
|
||||
"rev": "4d003f4b41ab9b4f8b569104fa7818f048ed4e25",
|
||||
"rev": "3c4f8344a341818417b3d75c04eb96d894cb4640",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -614,11 +614,11 @@
|
|||
"plugin-flutter-tools": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1711622317,
|
||||
"narHash": "sha256-TQRz2MHg6qnzZGUDVFUoaZJiTBwQ3Hjqvc8AAeVS93Y=",
|
||||
"lastModified": 1713525182,
|
||||
"narHash": "sha256-krcaaDPJsftkrcEov1QdKQUQBH6+PgjNwFamWpmNFkU=",
|
||||
"owner": "akinsho",
|
||||
"repo": "flutter-tools.nvim",
|
||||
"rev": "4f18033c3b78aa5450e538d81dfbbb3e67aeadec",
|
||||
"rev": "f04131d6b2c82c2a7624a8843642d6269b50b437",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -646,11 +646,11 @@
|
|||
"plugin-gitsigns-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1712937200,
|
||||
"narHash": "sha256-8pAy6mICiXpUO36ctWXbmRVB7cDSSDIArh9Nq59az9I=",
|
||||
"lastModified": 1713620636,
|
||||
"narHash": "sha256-UK3DyvrQ0kLm9wrMQ6tLDoDunoThbY/Yfjn+eCZpuMw=",
|
||||
"owner": "lewis6991",
|
||||
"repo": "gitsigns.nvim",
|
||||
"rev": "d96ef3bbff0bdbc3916a220f5c74a04c4db033f2",
|
||||
"rev": "035da036e68e509ed158414416c827d022d914bd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -742,11 +742,11 @@
|
|||
"plugin-image-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1712327429,
|
||||
"narHash": "sha256-usDtW+WnaeTdxx1ALCiZu/gnx2so7QneOjWoEXiChoQ=",
|
||||
"lastModified": 1713467683,
|
||||
"narHash": "sha256-qSGtiBl94RJMffoxXEV74fNcmrYcKtfPc3Aw65tzuDM=",
|
||||
"owner": "3rd",
|
||||
"repo": "image.nvim",
|
||||
"rev": "9be5ede323756d7ee2bbef2bc157767b3972cce6",
|
||||
"rev": "301de7919b2c0378cb7a782663f67abbcb198b17",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1015,11 +1015,11 @@
|
|||
"plugin-nvim-bufferline-lua": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1709805539,
|
||||
"narHash": "sha256-drvgwupiyRAoShL2enXEYUumkYJnG+QtIkBIVqVZK+U=",
|
||||
"lastModified": 1713525468,
|
||||
"narHash": "sha256-28ZkN2o6xumhvXGbxRl3/eODhMOgJfOig/+svi/uAZk=",
|
||||
"owner": "akinsho",
|
||||
"repo": "nvim-bufferline.lua",
|
||||
"rev": "64e2c5def50dfd6b6f14d96a45fa3d815a4a1eef",
|
||||
"rev": "f6f00d9ac1a51483ac78418f9e63126119a70709",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1095,11 +1095,11 @@
|
|||
"plugin-nvim-dap": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1711382674,
|
||||
"narHash": "sha256-HoLnYeA18TpHM1SJ3NOY53ZAyBo2y2EoUbAIr7TqtQI=",
|
||||
"lastModified": 1713432622,
|
||||
"narHash": "sha256-kEn2INrNMQSLHY3gpSVV+cTx9f1nFeUCM6by9WGn5Sg=",
|
||||
"owner": "mfussenegger",
|
||||
"repo": "nvim-dap",
|
||||
"rev": "405df1dcc2e395ab5173a9c3d00e03942c023074",
|
||||
"rev": "6ae8a14828b0f3bff1721a35a1dfd604b6a933bb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1159,11 +1159,11 @@
|
|||
"plugin-nvim-lspconfig": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1713075103,
|
||||
"narHash": "sha256-3GS1udfgzbghho1xtwZ5N1MZgWXWrJnW36Gnl/SAzIQ=",
|
||||
"lastModified": 1713507075,
|
||||
"narHash": "sha256-/SqLT0PG2RUWyknYpcXlcU/aUyKWZMBs35s1sPRkEmc=",
|
||||
"owner": "neovim",
|
||||
"repo": "nvim-lspconfig",
|
||||
"rev": "76b1bbaecbe7215498983356d50a16b46c20d6b0",
|
||||
"rev": "ed8b8a15acc441aec669f97d75f2c1f2ac8c8aa5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1303,11 +1303,11 @@
|
|||
"plugin-nvim-treesitter-context": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1713029046,
|
||||
"narHash": "sha256-9r8UjGPAbLFHR3eYReLOR7SmBI+H6l6BeUrzaocq3YU=",
|
||||
"lastModified": 1713520917,
|
||||
"narHash": "sha256-AT49dDlwPaV41O+rcUCzzdra8moIg4iDAIhZJb6j0zE=",
|
||||
"owner": "nvim-treesitter",
|
||||
"repo": "nvim-treesitter-context",
|
||||
"rev": "ba05c6b753130d96b284d3e8ba8f54c28c0fb6d1",
|
||||
"rev": "ba4289ad345ececd335a9cdd7b9616fd0bb6be92",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1335,11 +1335,11 @@
|
|||
"plugin-nvim-web-devicons": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1712684166,
|
||||
"narHash": "sha256-v+dhVbAN2OKLdS5YbSLmZsLijO4meSUBG26R+Ivm/BM=",
|
||||
"lastModified": 1713596748,
|
||||
"narHash": "sha256-yxsKBCP0ICMiH23tcLoTfZJ3VqNMhgkjOzynjPSRb8Q=",
|
||||
"owner": "nvim-tree",
|
||||
"repo": "nvim-web-devicons",
|
||||
"rev": "6e355632387a085f15a66ad68cf681c1d7374a04",
|
||||
"rev": "31ba3c489e56a7f20881cee013cea1269b6b2f2d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1351,11 +1351,11 @@
|
|||
"plugin-obsidian-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1712778222,
|
||||
"narHash": "sha256-jjsDXGdFMgdalgkw8HSY3+EfiTkYotsNA6txk1/09VY=",
|
||||
"lastModified": 1713538455,
|
||||
"narHash": "sha256-nIAaQa0DBYBQyfTEJi3Lzqs7QJqyw0Cemq6Hm704K60=",
|
||||
"owner": "epwalsh",
|
||||
"repo": "obsidian.nvim",
|
||||
"rev": "1265a1fbfca5979f629ecedb2552f743c70f458f",
|
||||
"rev": "ec0f44e1921d2701bd99a542031d280f1e3930b5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1383,11 +1383,11 @@
|
|||
"plugin-orgmode-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1712982802,
|
||||
"narHash": "sha256-zfw3eHBnJPPhsNr8aG8kn3pAchxklvk5aiFm2rys7PQ=",
|
||||
"lastModified": 1713539113,
|
||||
"narHash": "sha256-0Ayu2kVpnsxu/ER0nx+t7nyU9oNN8URLrGQtAKKb7Ls=",
|
||||
"owner": "nvim-orgmode",
|
||||
"repo": "orgmode",
|
||||
"rev": "5875037fa9c7c8e0abf29cd69510150355d248a0",
|
||||
"rev": "389e91f6f935aa845bc0cd13dd80f75431c34751",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1464,11 +1464,11 @@
|
|||
"plugin-rose-pine": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1712685632,
|
||||
"narHash": "sha256-A9C5BJiOdT/F6JzWxJw/La77nxCoX3/bND15DM9st6k=",
|
||||
"lastModified": 1713451685,
|
||||
"narHash": "sha256-AdPSz5+nCOnLWexBasHuxRxEKbL4WVg+uV78//W5nLs=",
|
||||
"owner": "rose-pine",
|
||||
"repo": "neovim",
|
||||
"rev": "9cd7d8aad3606a95d733a45d16275eb7a5a836a3",
|
||||
"rev": "17b466e79479758b332a3cac12544a3ad2be6241",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1560,11 +1560,11 @@
|
|||
"plugin-telescope": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1713022073,
|
||||
"narHash": "sha256-ZktFx77Ukuk1/Qhmf1wUEe0+wODM7f2H+PlXsDDTjcA=",
|
||||
"lastModified": 1713586895,
|
||||
"narHash": "sha256-3mrcol36HmY31pMAadirDdZqJtD0f+m8V0Lz8FnBx0M=",
|
||||
"owner": "nvim-telescope",
|
||||
"repo": "telescope.nvim",
|
||||
"rev": "4d4ade7f2b8f403e8816ca50c05ed16e259b21fb",
|
||||
"rev": "a4432dfb9b0b960c4cbc8765a42dc4fe2e029e8f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1592,11 +1592,11 @@
|
|||
"plugin-toggleterm-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1707733615,
|
||||
"narHash": "sha256-FJyDxQm2vs9R4WkqAbh6ryCvEABfrLSKRrAGo/qI5jM=",
|
||||
"lastModified": 1713526392,
|
||||
"narHash": "sha256-liy+AE8a+jll1fhROBKpJaTE9YZHQvYosOW4euGZNYc=",
|
||||
"owner": "akinsho",
|
||||
"repo": "toggleterm.nvim",
|
||||
"rev": "193786e0371e3286d3bc9aa0079da1cd41beaa62",
|
||||
"rev": "dca1c80fb8ec41c97e7c3ef308719d8143fbbb05",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1672,11 +1672,11 @@
|
|||
"plugin-vim-illuminate": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1707016059,
|
||||
"narHash": "sha256-KNIu4cNyZddZSRS8KZ0U0T8uSSLJu8iqNLQN8e+Bv94=",
|
||||
"lastModified": 1713467568,
|
||||
"narHash": "sha256-o0D1edrsHkaljrzBFZXjdxiK/5ziCGJxM/kYNJgBI1E=",
|
||||
"owner": "RRethy",
|
||||
"repo": "vim-illuminate",
|
||||
"rev": "305bf07b919ac526deb5193280379e2f8b599926",
|
||||
"rev": "e522e0dd742a83506db0a72e1ced68c9c130f185",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -2095,11 +2095,11 @@
|
|||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1713070736,
|
||||
"narHash": "sha256-FatD7AHSoZGfn2JCOkDt9v04YkJG3PLfC7U7pU6r+bM=",
|
||||
"lastModified": 1713572548,
|
||||
"narHash": "sha256-bYNsY9HwrV8+eJGRYvfLEP6/Sgf2Kr9qNbnB91OYMMM=",
|
||||
"owner": "mitchellh",
|
||||
"repo": "zig-overlay",
|
||||
"rev": "1c04fe593ef5124fd84e3d8726d481cba8b527b8",
|
||||
"rev": "76bccd85db6a182dfcbf8a5f4b540953f029a12c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -7,8 +7,9 @@ packages: inputs: {
|
|||
}: let
|
||||
inherit (lib) maintainers;
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.lists) optional;
|
||||
inherit (lib.options) mkOption mkEnableOption literalExpression;
|
||||
inherit (lib.types) attrsOf anything;
|
||||
inherit (lib.types) attrsOf anything bool;
|
||||
|
||||
cfg = config.programs.neovim-flake;
|
||||
inherit (import ../../configuration.nix inputs) neovimConfiguration;
|
||||
|
@ -21,7 +22,24 @@ in {
|
|||
meta.maintainers = with maintainers; [NotAShelf];
|
||||
|
||||
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 {
|
||||
type = anything;
|
||||
|
@ -57,8 +75,13 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = [cfg.finalPackage];
|
||||
|
||||
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: {
|
||||
config,
|
||||
pkgs,
|
||||
|
@ -6,9 +6,10 @@ packages: inputs: {
|
|||
...
|
||||
}: let
|
||||
inherit (lib) maintainers;
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.modules) mkIf mkOverride;
|
||||
inherit (lib.lists) optional;
|
||||
inherit (lib.options) mkOption mkEnableOption literalExpression;
|
||||
inherit (lib.types) attrsOf anything;
|
||||
inherit (lib.types) attrsOf anything bool;
|
||||
|
||||
cfg = config.programs.neovim-flake;
|
||||
inherit (import ../../configuration.nix inputs) neovimConfiguration;
|
||||
|
@ -21,7 +22,24 @@ in {
|
|||
meta.maintainers = with maintainers; [NotAShelf];
|
||||
|
||||
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 {
|
||||
type = anything;
|
||||
|
@ -57,8 +75,13 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [cfg.finalPackage];
|
||||
|
||||
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 = {
|
||||
description,
|
||||
example,
|
||||
default ? [],
|
||||
}:
|
||||
mkOption {
|
||||
inherit description default;
|
||||
inherit example description default;
|
||||
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,
|
||||
check ? true,
|
||||
extraSpecialArgs ? {},
|
||||
extraModules ? [],
|
||||
}: let
|
||||
inherit (builtins) map filter isString toString getAttr;
|
||||
inherit (pkgs) wrapNeovimUnstable vimPlugins;
|
||||
inherit (pkgs.vimUtils) buildVimPlugin;
|
||||
inherit (pkgs.neovimUtils) makeNeovimConfig;
|
||||
inherit (lib.lists) concatLists;
|
||||
inherit (lib.attrsets) recursiveUpdate;
|
||||
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;
|
||||
|
||||
# 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 {
|
||||
inherit check pkgs;
|
||||
lib = extendedLib;
|
||||
};
|
||||
|
||||
# evaluate the extended library with the modules
|
||||
# optionally with any additional modules passed by the user
|
||||
module = extendedLib.evalModules {
|
||||
modules = [configuration] ++ nvimModules;
|
||||
specialArgs = recursiveUpdate {modulesPath = toString ./.;} extraSpecialArgs;
|
||||
modules = concatLists [[configuration] nvimModules extraModules];
|
||||
};
|
||||
|
||||
# alias to the internal configuration
|
||||
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:
|
||||
assert assertMsg (pname != "nvim-treesitter") "Use buildTreesitterPlug for building nvim-treesitter.";
|
||||
buildVimPlugin (args
|
||||
|
@ -60,24 +73,36 @@ inputs: {
|
|||
(f: f != null)
|
||||
plugins);
|
||||
|
||||
plugins =
|
||||
(buildConfigPlugins vimOptions.startPlugins)
|
||||
++ (map (package: {
|
||||
plugin = package;
|
||||
optional = false;
|
||||
})
|
||||
(buildConfigPlugins
|
||||
vimOptions.optPlugins));
|
||||
# built (or "normalized") plugins that are modified
|
||||
builtStartPlugins = buildConfigPlugins vimOptions.startPlugins;
|
||||
builtOptPlugins = map (package: {
|
||||
plugin = package;
|
||||
optional = false;
|
||||
}) (buildConfigPlugins vimOptions.optPlugins);
|
||||
|
||||
neovim = wrapNeovimUnstable vimOptions.package (makeNeovimConfig {
|
||||
inherit (vimOptions) viAlias;
|
||||
inherit (vimOptions) vimAlias;
|
||||
inherit extraLuaPackages;
|
||||
inherit plugins;
|
||||
plugins = builtStartPlugins ++ builtOptPlugins;
|
||||
|
||||
extraLuaPackages = ps: map (x: ps.${x}) vimOptions.luaPackages;
|
||||
|
||||
# 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;
|
||||
});
|
||||
in {
|
||||
inherit (module) options config;
|
||||
inherit (module._module.args) pkgs;
|
||||
inherit neovim;
|
||||
|
||||
# expose wrapped neovim-package
|
||||
neovim = neovim-wrapped;
|
||||
}
|
||||
|
|
|
@ -6,16 +6,17 @@
|
|||
inherit (lib.modules) mkDefault;
|
||||
inherit (lib.lists) concatLists;
|
||||
|
||||
core = map (p: ./core + "/${p}") [
|
||||
"build"
|
||||
"warnings"
|
||||
];
|
||||
|
||||
# The core neovim modules.
|
||||
# Contains configuration for core neovim features
|
||||
# such as spellchecking, mappings, and the init script (init.vim).
|
||||
neovim = map (p: ./neovim + "/${p}") [
|
||||
"basic"
|
||||
"init"
|
||||
"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}") [
|
||||
"assistant"
|
||||
"autopairs"
|
||||
|
@ -44,7 +45,14 @@
|
|||
"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, ...}: {
|
||||
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 = [
|
||||
./basic
|
||||
./init
|
||||
./mappings
|
||||
|
||||
./config.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -145,6 +145,7 @@ in {
|
|||
default = true;
|
||||
description = "New splits will open to the right";
|
||||
};
|
||||
|
||||
enableEditorconfig = mkOption {
|
||||
type = bool;
|
||||
default = true;
|
||||
|
@ -167,25 +168,19 @@ in {
|
|||
config.vim.configRC.basic = entryAfter ["globalsScript"] ''
|
||||
" Settings that are set for everything
|
||||
set encoding=utf-8
|
||||
set hidden
|
||||
set shortmess+=c
|
||||
set expandtab
|
||||
set mouse=${cfg.mouseSupport}
|
||||
set tabstop=${toString cfg.tabWidth}
|
||||
set shiftwidth=${toString cfg.tabWidth}
|
||||
set softtabstop=${toString cfg.tabWidth}
|
||||
set expandtab
|
||||
set cmdheight=${toString cfg.cmdHeight}
|
||||
set updatetime=${toString cfg.updateTime}
|
||||
set shortmess+=c
|
||||
set tm=${toString cfg.mapTimeout}
|
||||
set hidden
|
||||
set cursorlineopt=${toString cfg.cursorlineOpt}
|
||||
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 ''
|
||||
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 = [
|
||||
./configrc.nix
|
||||
./basic.nix
|
||||
./debug.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,17 +7,42 @@
|
|||
|
||||
cfg = config.vim;
|
||||
in {
|
||||
vim.maps = {
|
||||
normal =
|
||||
mkIf cfg.disableArrows {
|
||||
config = {
|
||||
vim.maps = {
|
||||
normal =
|
||||
mkIf cfg.disableArrows {
|
||||
"<up>" = {
|
||||
action = "<nop>";
|
||||
|
||||
noremap = false;
|
||||
};
|
||||
"<down>" = {
|
||||
action = "<nop>";
|
||||
|
||||
noremap = false;
|
||||
};
|
||||
"<left>" = {
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
};
|
||||
"<right>" = {
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
};
|
||||
}
|
||||
// mkIf cfg.mapLeaderSpace {
|
||||
"<space>" = {
|
||||
action = "<nop>";
|
||||
};
|
||||
};
|
||||
|
||||
insert = mkIf cfg.disableArrows {
|
||||
"<up>" = {
|
||||
action = "<nop>";
|
||||
|
||||
noremap = false;
|
||||
};
|
||||
"<down>" = {
|
||||
action = "<nop>";
|
||||
|
||||
noremap = false;
|
||||
};
|
||||
"<left>" = {
|
||||
|
@ -28,29 +53,6 @@ in {
|
|||
action = "<nop>";
|
||||
noremap = false;
|
||||
};
|
||||
}
|
||||
// mkIf cfg.mapLeaderSpace {
|
||||
"<space>" = {
|
||||
action = "<nop>";
|
||||
};
|
||||
};
|
||||
|
||||
insert = mkIf cfg.disableArrows {
|
||||
"<up>" = {
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
};
|
||||
"<down>" = {
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
};
|
||||
"<left>" = {
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
};
|
||||
"<right>" = {
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
inherit (lib.nvim.dag) entryAfter;
|
||||
cfg = config.vim.spellcheck;
|
||||
in {
|
||||
config = mkIf cfg.vim-dirtytalk.enable {
|
||||
config = mkIf (cfg.enable && cfg.programmingWordlist.enable) {
|
||||
vim = {
|
||||
startPlugins = ["vim-dirtytalk"];
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{lib, ...}: let
|
||||
inherit (lib.options) mkEnableOption;
|
||||
inherit (lib.modules) mkAliasOptionModule;
|
||||
in {
|
||||
options.vim.spellcheck.vim-dirtytalk = {
|
||||
enable = mkEnableOption "vim-dirtytalk, a wordlist for programmers, that includes programming words";
|
||||
};
|
||||
imports = [
|
||||
(mkAliasOptionModule ["vim" "spellcheck" "vim-dirtytalk" "enable"] ["vim" "spellcheck" "programmingWordlist" "enable"])
|
||||
];
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
inherit (lib.generators) mkLuaInline;
|
||||
inherit (lib.nvim.types) dagOf;
|
||||
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.config) mkBool;
|
||||
|
||||
|
@ -207,12 +207,15 @@ in {
|
|||
|
||||
luaConfigPre = mkOption {
|
||||
type = str;
|
||||
default = let
|
||||
additionalRuntimePaths = concatStringsSep "," cfg.additionalRuntimePaths;
|
||||
in ''
|
||||
default = ''
|
||||
${optionalString (cfg.additionalRuntimePaths != []) ''
|
||||
if not vim.o.runtimepath:find('${additionalRuntimePaths}', 1, true) then
|
||||
vim.o.runtimepath = vim.o.runtimepath .. ',' .. '${additionalRuntimePaths}'
|
||||
-- The following list is generated from `vim.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
|
||||
''}
|
||||
|
||||
|
@ -226,6 +229,8 @@ in {
|
|||
if [vim.enableLuaLoader](#opt-vim.enableLuaLoader) is set to true.
|
||||
'';
|
||||
|
||||
example = literalExpression ''"$${builtins.readFile ./my-lua-config-pre.lua}"'';
|
||||
|
||||
description = ''
|
||||
Verbatim lua code that will be inserted **before**
|
||||
the result of `luaConfigRc` DAG has been resolved.
|
||||
|
@ -235,9 +240,11 @@ in {
|
|||
of lua configs after the DAG result.
|
||||
|
||||
::: {.warning}
|
||||
You do not want to override this option. It is used
|
||||
internally to set certain options as early as possible
|
||||
and should be avoided unless you know what you're doing.
|
||||
You do not want to override this option with mkForce
|
||||
It is used internally to set certain options as early
|
||||
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 {
|
||||
type = str;
|
||||
default = "";
|
||||
example = literalExpression ''"$${builtins.readFile ./my-lua-config-post.lua}"'';
|
||||
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
|
||||
|
||||
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…
Reference in a new issue