···11+# Neovim {#neovim}
22+33+Install `neovim-unwrapped` to get a barebone neovim to configure imperatively.
44+Neovim can be configured to include your favorite plugins and additional libraries by installing `neovim` instead.
55+See the next section for more details.
66+77+## Custom configuration {#neovim-custom-configuration}
88+99+For Neovim the `configure` argument can be overridden to achieve the same:
1010+1111+```nix
1212+neovim.override {
1313+ configure = {
1414+ customRC = ''
1515+ # here your custom configuration goes!
1616+ '';
1717+ };
1818+}
1919+```
2020+2121+If you want to use `neovim-qt` as a graphical editor, you can configure it by overriding Neovim in an overlay
2222+or passing it an overridden Neovim:
2323+2424+```nix
2525+neovim-qt.override {
2626+ neovim = neovim.override {
2727+ configure = {
2828+ customRC = ''
2929+ # your custom configuration
3030+ '';
3131+ };
3232+ };
3333+}
3434+```
3535+3636+### Specificities for some plugins {#neovim-plugin-specificities}
3737+#### Treesitter {#neovim-plugin-treesitter}
3838+3939+By default `nvim-treesitter` encourages you to download, compile and install
4040+the required Treesitter grammars at run time with `:TSInstall`. This works
4141+poorly on NixOS. Instead, to install the `nvim-treesitter` plugins with a set
4242+of precompiled grammars, you can use the `nvim-treesitter.withPlugins` function:
4343+4444+```nix
4545+(pkgs.neovim.override {
4646+ configure = {
4747+ packages.myPlugins = with pkgs.vimPlugins; {
4848+ start = [
4949+ (nvim-treesitter.withPlugins (
5050+ plugins: with plugins; [
5151+ nix
5252+ python
5353+ ]
5454+ ))
5555+ ];
5656+ };
5757+ };
5858+})
5959+```
6060+6161+To enable all grammars packaged in nixpkgs, use `pkgs.vimPlugins.nvim-treesitter.withAllGrammars`.
6262+6363+6464+### Testing Neovim plugins {#testing-neovim-plugins}
6565+6666+#### neovimRequireCheck {#testing-neovim-plugins-neovim-require-check}
6767+`neovimRequireCheck` is a simple test which checks if Neovim can requires lua modules without errors. This is often enough to catch missing dependencies.
6868+6969+It accepts a single string for a module, or a list of module strings to test.
7070+- `nvimRequireCheck = MODULE;`
7171+- `nvimRequireCheck = [ MODULE1 MODULE2 ];`
7272+7373+When `nvimRequireCheck` is not specified, we will search the plugin's directory for lua modules to attempt loading. This quick smoke test can catch obvious dependency errors that might be missed.
7474+The check hook will fail the build if any modules cannot be loaded. This encourages inspecting the logs to identify potential issues.
7575+7676+To only check a specific module, add it manually to the plugin definition [overrides](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/overrides.nix).
7777+7878+```nix
7979+ gitsigns-nvim = super.gitsigns-nvim.overrideAttrs {
8080+ dependencies = [ self.plenary-nvim ];
8181+ nvimRequireCheck = "gitsigns";
8282+ };
8383+```
8484+Some plugins will have lua modules that require a user configuration to function properly or can contain optional lua modules that we dont want to test requiring.
8585+We can skip specific modules using `nvimSkipModule`. Similar to `nvimRequireCheck`, it accepts a single string or a list of strings.
8686+- `nvimSkipModule = MODULE;`
8787+- `nvimSkipModule = [ MODULE1 MODULE2 ];`
8888+8989+```nix
9090+ asyncrun-vim = super.asyncrun-vim.overrideAttrs {
9191+ nvimSkipModule = [
9292+ # vim plugin with optional toggleterm integration
9393+ "asyncrun.toggleterm"
9494+ "asyncrun.toggleterm2"
9595+ ];
9696+ };
9797+```
9898+9999+In rare cases, we might not want to actually test loading lua modules for a plugin. In those cases, we can disable `neovimRequireCheck` with `doCheck = false;`.
100100+101101+This can be manually added through plugin definition overrides in the [overrides.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/overrides.nix).
102102+```nix
103103+ vim-test = super.vim-test.overrideAttrs {
104104+ # Vim plugin with a test lua file
105105+ doCheck = false;
106106+ };
107107+```
+2-100
doc/languages-frameworks/vim.section.md
···11# Vim {#vim}
2233-Both Neovim and Vim can be configured to include your favorite plugins
44-and additional libraries.
33+Vim can be configured to include your favorite plugins and additional libraries.
5465Loading can be deferred; see examples.
76···1918and both the `vim` and `vim-full` packages can be customized as explained in the next section.
2019:::
21202222-## Custom configuration {#custom-configuration}
2121+## Custom configuration {#vim-custom-configuration}
23222423Adding custom .vimrc lines can be done using the following code:
2524···3938[definition of `vimUtils.makeCustomizable`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/vim-utils.nix#L408)
4039for all supported options.
41404242-For Neovim the `configure` argument can be overridden to achieve the same:
4343-4444-```nix
4545-neovim.override {
4646- configure = {
4747- customRC = ''
4848- # here your custom configuration goes!
4949- '';
5050- };
5151-}
5252-```
5353-5454-If you want to use `neovim-qt` as a graphical editor, you can configure it by overriding Neovim in an overlay
5555-or passing it an overridden Neovim:
5656-5757-```nix
5858-neovim-qt.override {
5959- neovim = neovim.override {
6060- configure = {
6161- customRC = ''
6262- # your custom configuration
6363- '';
6464- };
6565- };
6666-}
6767-```
68416942## Managing plugins with Vim packages {#managing-plugins-with-vim-packages}
7043···166139167140If your package requires building specific parts, use instead `pkgs.vimUtils.buildVimPlugin`.
168141169169-### Specificities for some plugins {#vim-plugin-specificities}
170170-#### Treesitter {#vim-plugin-treesitter}
171171-172172-By default `nvim-treesitter` encourages you to download, compile and install
173173-the required Treesitter grammars at run time with `:TSInstall`. This works
174174-poorly on NixOS. Instead, to install the `nvim-treesitter` plugins with a set
175175-of precompiled grammars, you can use `nvim-treesitter.withPlugins` function:
176176-177177-```nix
178178-(pkgs.neovim.override {
179179- configure = {
180180- packages.myPlugins = with pkgs.vimPlugins; {
181181- start = [
182182- (nvim-treesitter.withPlugins (
183183- plugins: with plugins; [
184184- nix
185185- python
186186- ]
187187- ))
188188- ];
189189- };
190190- };
191191-})
192192-```
193193-194194-To enable all grammars packaged in nixpkgs, use `pkgs.vimPlugins.nvim-treesitter.withAllGrammars`.
195195-196142## Managing plugins with vim-plug {#managing-plugins-with-vim-plug}
197143198144To use [vim-plug](https://github.com/junegunn/vim-plug) to manage your Vim
···232178233179Finally, there are some plugins that are also packaged in nodePackages because they have Javascript-related build steps, such as running webpack. Those plugins are not listed in `vim-plugin-names` or managed by `vimPluginsUpdater` at all, and are included separately in `overrides.nix`. Currently, all these plugins are related to the `coc.nvim` ecosystem of the Language Server Protocol integration with Vim/Neovim.
234180235235-### Testing Neovim plugins {#testing-neovim-plugins}
236236-237237-#### neovimRequireCheck {#testing-neovim-plugins-neovim-require-check}
238238-`neovimRequireCheck` is a simple test which checks if Neovim can requires lua modules without errors. This is often enough to catch missing dependencies.
239239-240240-It accepts a single string for a module, or a list of module strings to test.
241241-- `nvimRequireCheck = MODULE;`
242242-- `nvimRequireCheck = [ MODULE1 MODULE2 ];`
243243-244244-When `nvimRequireCheck` is not specified, we will search the plugin's directory for lua modules to attempt loading. This quick smoke test can catch obvious dependency errors that might be missed.
245245-The check hook will fail the build if any failures are detected to encourage inspecting the logs to identify potential issues.
246246-247247-If you would like to only check a specific module, this can be manually added through plugin definition overrides in the [overrides.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/overrides.nix).
248248-249249-```nix
250250- gitsigns-nvim = super.gitsigns-nvim.overrideAttrs {
251251- dependencies = [ self.plenary-nvim ];
252252- nvimRequireCheck = "gitsigns";
253253- };
254254-```
255255-Some plugins will have lua modules that require a user configuration to function properly or can contain optional lua modules that we dont want to test requiring.
256256-We can skip specific modules using `nvimSkipModule`. Similar to `nvimRequireCheck`, it accepts a single string or a list of strings.
257257-- `nvimSkipModule = MODULE;`
258258-- `nvimSkipModule = [ MODULE1 MODULE2 ];`
259259-260260-```nix
261261- asyncrun-vim = super.asyncrun-vim.overrideAttrs {
262262- nvimSkipModule = [
263263- # vim plugin with optional toggleterm integration
264264- "asyncrun.toggleterm"
265265- "asyncrun.toggleterm2"
266266- ];
267267- };
268268-```
269269-270270-In rare cases, we might not want to actually test loading lua modules for a plugin. In those cases, we can disable `neovimRequireCheck` with `doCheck = false;`.
271271-272272-This can be manually added through plugin definition overrides in the [overrides.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/overrides.nix).
273273-```nix
274274- vim-test = super.vim-test.overrideAttrs {
275275- # Vim plugin with a test lua file
276276- doCheck = false;
277277- };
278278-```
279181280182### Plugin optional configuration {#vim-plugin-required-snippet}
281183
···49495050- [Zenoh](https://zenoh.io/), a pub/sub/query protocol with low overhead. The Zenoh router daemon is available as [services.zenohd](options.html#opt-services.zenohd.enable)
51515252+- [ytdl-sub](https://github.com/jmbannon/ytdl-sub), a tool that downloads media via yt-dlp and prepares it for your favorite media player, including Kodi, Jellyfin, Plex, Emby, and modern music players. Available as [services.ytdl-sub](options.html#opt-services.ytdl-sub.instances).
5353+5254- [MaryTTS](https://github.com/marytts/marytts), an open-source, multilingual text-to-speech synthesis system written in pure Java. Available as [services.marytts](options.html#opt-services.marytts).
53555456- [networking.modemmanager](options.html#opt-networking.modemmanager) has been split out of [networking.networkmanager](options.html#opt-networking.networkmanager). NetworkManager still enables ModemManager by default, but options exist now to run NetworkManager without ModemManager.
···171173- `nodePackages.webpack-dev-server` has been removed, as it should be installed in projects that use it instead.
172174173175- `nodePackages.copy-webpack-plugin` has been removed, as it should be installed in projects that use it instead.
176176+177177+- `himalaya` has been updated from `v1.0.0-beta.4` to `v1.1.0`, which introduces breaking changes. Check out the [release notes](https://github.com/pimalaya/himalaya/releases) for details.
174178175179- `linuxPackages.nvidiaPackages.dc_520` has been removed since it is marked broken and there are better newer alternatives.
176180
···66}:
77let
88 pname = "lmstudio";
99- version = "0.3.5";
1010- rev = "2";
99+ version = "0.3.6";
1010+ rev = "8";
1111 meta = {
1212 description = "LM Studio is an easy to use desktop app for experimenting with local and open-source Large Language Models (LLMs)";
1313 homepage = "https://lmstudio.ai/";
···11-{
22- lib,
33- buildPythonPackage,
44- fetchPypi,
55- pytestCheckHook,
66- docopt,
77- six,
88- wcwidth,
99- pygments,
1010-}:
1111-1212-buildPythonPackage rec {
1313- pname = "prompt-toolkit";
1414- version = "1.0.18";
1515-1616- src = fetchPypi {
1717- pname = "prompt_toolkit";
1818- inherit version;
1919- sha256 = "dd4fca02c8069497ad931a2d09914c6b0d1b50151ce876bc15bde4c747090126";
2020- };
2121-2222- propagatedBuildInputs = [
2323- docopt
2424- six
2525- wcwidth
2626- pygments
2727- ];
2828-2929- nativeCheckInputs = [ pytestCheckHook ];
3030-3131- disabledTests = [ "test_pathcompleter_can_expanduser" ];
3232-3333- meta = with lib; {
3434- description = "Python library for building powerful interactive command lines";
3535- longDescription = ''
3636- prompt_toolkit could be a replacement for readline, but it can be
3737- much more than that. It is cross-platform, everything that you build
3838- with it should run fine on both Unix and Windows systems. Also ships
3939- with a nice interactive Python shell (called ptpython) built on top.
4040- '';
4141- homepage = "https://github.com/jonathanslenders/python-prompt-toolkit";
4242- maintainers = [ ];
4343- license = licenses.bsd3;
4444- };
4545-}