mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-02-22 19:38:00 +00:00
Merge branch 'main' into telescope-ext
This commit is contained in:
commit
f2531e456c
105 changed files with 3657 additions and 4148 deletions
|
@ -14,7 +14,7 @@ indent_style = space
|
|||
indent_size = 2
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.{js,nix,yml,yaml}]
|
||||
[*.{js,json,nix,yml,yaml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
tab_width = 2
|
||||
|
@ -26,3 +26,6 @@ trim_trailing_whitespace = unset
|
|||
|
||||
[*.lock]
|
||||
indent_size = unset
|
||||
|
||||
[npins/sources.json]
|
||||
insert_final_newline = unset
|
||||
|
|
|
@ -7,14 +7,17 @@ or dependency in this section.
|
|||
If your pull request aims to fix an open issue or a please bug, please also link the relevant issue
|
||||
below this line. You may attach an issue to your pull request with `Fixes #<issue number>` outside
|
||||
this comment, and it will be closed when your pull request is merged.
|
||||
|
||||
A developer package template is provided in flake/develop.nix. If working on a module, you may use
|
||||
it to test your changes with minimal dependency changes.
|
||||
-->
|
||||
|
||||
## Sanity Checking
|
||||
|
||||
<!--
|
||||
Please check all that apply. As before, this section is not a hard requirement but checklists with more checked
|
||||
items are likely to be merged faster. You may save some time in maintainer review by performing self-reviews here
|
||||
before submitting your pull request.
|
||||
items are likely to be merged faster. You may save some time in maintainer reviews by performing self-reviews
|
||||
here before submitting your pull request.
|
||||
|
||||
If your pull request includes any change or unexpected behaviour not covered below, please do make sure to include
|
||||
it above in your description.
|
||||
|
@ -22,9 +25,11 @@ it above in your description.
|
|||
|
||||
[editorconfig]: https://editorconfig.org
|
||||
[changelog]: https://github.com/NotAShelf/nvf/tree/main/docs/release-notes
|
||||
[hacking nvf]: https://notashelf.github.io/nvf/index.xhtml#sec-guidelines
|
||||
|
||||
- [ ] I have updated the [changelog] as per my changes
|
||||
- [ ] I have tested, and self-reviewed my code
|
||||
- [ ] My changes fit guidelines found in [hacking nvf]
|
||||
- Style and consistency
|
||||
- [ ] I ran **Alejandra** to format my code (`nix fmt`)
|
||||
- [ ] My code conforms to the [editorconfig] configuration of the project
|
||||
|
@ -34,9 +39,10 @@ it above in your description.
|
|||
- [ ] I have added a section in the manual
|
||||
- [ ] _(For breaking changes)_ I have included a migration guide
|
||||
- Package(s) built:
|
||||
- [ ] `.#nix` (default package)
|
||||
- [ ] `.#nix` _(default package)_
|
||||
- [ ] `.#maximal`
|
||||
- [ ] `.#docs-html` (manual, must build)
|
||||
- [ ] `.#docs-html` _(manual, must build)_
|
||||
- [ ] `.#docs-linkcheck` _(optional, please build if adding links)_
|
||||
- Tested on platform(s)
|
||||
- [ ] `x86_64-linux`
|
||||
- [ ] `aarch64-linux`
|
||||
|
@ -46,7 +52,8 @@ it above in your description.
|
|||
<!--
|
||||
If your changes touch upon a portion of the codebase that you do not understand well, please make sure to consult
|
||||
the maintainers on your changes. In most cases, making an issue before creating your PR will help you avoid duplicate
|
||||
efforts in the long run.
|
||||
efforts in the long run. `git blame` might help you find out who is the "author" or the "maintainer" of a current
|
||||
module by showing who worked on it the most.
|
||||
-->
|
||||
|
||||
---
|
||||
|
|
72
.github/README.md
vendored
72
.github/README.md
vendored
|
@ -50,6 +50,7 @@
|
|||
[Contribute]: #contributing
|
||||
[FAQ]: #frequently-asked-questions
|
||||
[Credits]: #credits
|
||||
[License]: #license
|
||||
|
||||
**[<kbd><br> Features <br></kbd>][Features]**
|
||||
**[<kbd><br> Get Started <br></kbd>][Get Started]**
|
||||
|
@ -67,6 +68,10 @@
|
|||
[standalone]: https://notashelf.github.io/nvf/index.xhtml#ch-standalone-installation
|
||||
[NixOS module]: https://notashelf.github.io/nvf/index.xhtml#ch-standalone-nixos
|
||||
[Home-Manager module]: https://notashelf.github.io/nvf/index.xhtml#ch-standalone-hm
|
||||
[release notes]: https://notashelf.github.io/nvf/release-notes.html
|
||||
[discussions tab]: https://github.com/notashelf/nvf/discussions
|
||||
[FAQ section]: #frequently-asked-questions
|
||||
[DAG]: https://en.wikipedia.org/wiki/Directed_acyclic_graph
|
||||
|
||||
- **Simple**: One language to rule them all! Use Nix to configure everything,
|
||||
with optional Lua support for robust configurability!
|
||||
|
@ -79,11 +84,31 @@
|
|||
customizable through the Nix module system.
|
||||
- Not comfortable with a full-nix config or want to bring your Lua config? You
|
||||
can do just that, no unnecessary restrictions.
|
||||
- Lazyloading? We got it! Lazyload both internal and external plugins at will.
|
||||
- Lazyloading 💤? We got it! Lazyload both internal and external plugins at
|
||||
will.
|
||||
- nvf allows _ordering configuration bits_ using [DAG] (_Directed acyclic
|
||||
graph_)s. It has never been easier to construct an editor configuration
|
||||
deterministically!
|
||||
- nvf exposes everything you need to avoid a vendor lock-in. Which means you
|
||||
can add new modules, plugins and so on without relying on us adding a module
|
||||
for them! Though, of course, feel free to request them.
|
||||
- Use plugins from anywhere. Inputs, npins, nixpkgs... You name it.
|
||||
- Add your own modules, with ease. It's all built-in!
|
||||
- **Well-documented**: Documentation is priority. You will _never_ face
|
||||
undocumented, obscure behaviour.
|
||||
- Changes, breaking or otherwise, will be communicated in the [release notes]
|
||||
- Refer to the [FAQ section] for answers to common questions.
|
||||
- Your question not there? Head to the to the [discussions tab]!
|
||||
- **Idiomatic**: nvf does things ✨ _the right way_ ✨ - the codebase is, and
|
||||
will, remain maintainable for myself and any contributors.
|
||||
- **Community-Led**: we would like nvf to be fully capable of accomplishing what
|
||||
you really want it to do. If you have a use case that is not made possible by
|
||||
nvf, please open an issue (or a pull request!)
|
||||
- Your feedback is more than welcome! Feedback is what _drives_ nvf forward.
|
||||
If you have anything to say, or ask, please let us know.
|
||||
- Pull requests are _always_ welcome. If you think the project can benefit
|
||||
from something you did locally, but are not quite sure how to upstream,
|
||||
please feel free to contact us! We'll help you get it done.
|
||||
|
||||
## Get Started
|
||||
|
||||
|
@ -173,36 +198,49 @@ fix.
|
|||
[list of open pull requests]: https://github.com/NotAShelf/nvf/pulls
|
||||
|
||||
**Q**: What platforms are supported?
|
||||
<br/> **A**: nvf actively supports **Linux and Darwin** platforms using
|
||||
standalone Nix, NixOS or Home-Manager. Please take a look at the [nvf manual]
|
||||
for available installation instructions.
|
||||
|
||||
**A**: nvf actively supports **Linux and Darwin** platforms using standalone
|
||||
Nix, NixOS or Home-Manager. Please take a look at the [nvf manual] for available
|
||||
installation instructions.
|
||||
|
||||
**Q**: Can you add _X_?
|
||||
<br/> **A**: Maybe! It is not one of our goals to support each and every Neovim
|
||||
|
||||
**A**: Maybe! It is not one of our goals to support each and every Neovim
|
||||
plugin, however, I am always open to new modules and plugin setup additions to
|
||||
**nvf**. Use the appropriate [issue template] and I will consider a module
|
||||
addition. As mentioned before, pull requests to add new features are also
|
||||
welcome.
|
||||
|
||||
**Q**: A plugin I need is not available in **nvf**. What to do?
|
||||
<br/> **A**: **nvf** exposes several APIs for you to be able to add your own
|
||||
plugin configurations! Please see the documentation on how you may do this.
|
||||
|
||||
**A**: **nvf** exposes several APIs for you to be able to add your own plugin
|
||||
configurations! Please see the documentation on how you may do this.
|
||||
|
||||
**Q**: Main branch is awfully silent, is the project dead?
|
||||
<br/> **A**: No! Sometimes we branch out (e.g. `v0.6`) to avoid breaking
|
||||
userspace and work in a separate branch until we make sure the new additions are
|
||||
implemented in the most comfortable way possible for the end user. If you have
|
||||
not noticed any activity on the main branch, consider taking a look at the
|
||||
|
||||
**A**: No! Sometimes we branch out (e.g. `v0.6`) to avoid breaking userspace and
|
||||
work in a separate branch until we make sure the new additions are implemented
|
||||
in the most comfortable way possible for the end user. If you have not noticed
|
||||
any activity on the main branch, consider taking a look at the
|
||||
[list of branches] or the [list of open pull requests]. You may also consider
|
||||
_testing_ those release branches to get access to new features ahead of time and
|
||||
better prepare to breaking changes.
|
||||
|
||||
**Q**: Will you support non-flake installations?
|
||||
<br/> **A**: Quite possibly. **nvf** started as "neovim-flake", which does mean
|
||||
it is and will remain flakes-first but we might consider non-flakes
|
||||
compatibility. Though keep in mind that **nvf** under non-flake environments
|
||||
would lose customizability of plugin inputs, which is one of our primary
|
||||
features.
|
||||
|
||||
**A**: Quite possibly. **nvf** started as "neovim-flake", which does mean it is
|
||||
and will remain flakes-first but we might consider non-flakes compatibility.
|
||||
Though keep in mind that **nvf** under non-flake environments would lose
|
||||
customizability of plugin inputs, which is one of our primary features.
|
||||
|
||||
**Q**: I prefer working with Lua, can I use nvf as a plugin manager while I use
|
||||
an imperative path (e.g., `~/.config/nvim`) for my Neovim configuration instead
|
||||
of a configuration generated from Nix?
|
||||
|
||||
**A**: Yes! Add `"~/.config.nvim"` to `vim.additionalRuntimePaths = [ ... ]` and
|
||||
any plugins you want to load to `vim.startPlugins`. This will load your
|
||||
configuration from `~/.config/nvim`. You may still use `vim.*` to modify
|
||||
Neovim's behaviour with Nix.
|
||||
|
||||
## Credits
|
||||
|
||||
|
@ -245,7 +283,7 @@ and everyone who has submitted issues or pull requests!
|
|||
|
||||
### Inspiration
|
||||
|
||||
This configuration borrows from and is based on a few other configurations,
|
||||
This configuration borrows from, and is based on a few other configurations,
|
||||
including:
|
||||
|
||||
- [@jordanisaacs's](https://github.com/jordanisaacs)
|
||||
|
|
3
.github/typos.toml
vendored
3
.github/typos.toml
vendored
|
@ -1,2 +1,5 @@
|
|||
|
||||
default.extend-ignore-words-re = ["(?i)(noice)", "befores", "annote", "viw"]
|
||||
files.extend-exclude = [
|
||||
"npins/sources.json"
|
||||
]
|
||||
|
|
1
.github/workflows/cachix.yml
vendored
1
.github/workflows/cachix.yml
vendored
|
@ -35,7 +35,6 @@ jobs:
|
|||
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||
|
||||
- uses: cachix/cachix-action@v15
|
||||
with:
|
||||
|
|
3
.github/workflows/check-docs.yml
vendored
3
.github/workflows/check-docs.yml
vendored
|
@ -21,7 +21,6 @@ jobs:
|
|||
steps:
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
@ -42,13 +41,13 @@ jobs:
|
|||
with:
|
||||
name: "${{ matrix.package }}"
|
||||
path: result/share/doc/nvf
|
||||
|
||||
flake-docs-linkcheck:
|
||||
name: Validate hyperlinks in documentation sources
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
|
2
.github/workflows/check.yml
vendored
2
.github/workflows/check.yml
vendored
|
@ -19,7 +19,6 @@ jobs:
|
|||
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||
|
||||
- name: Check Flake
|
||||
run: nix flake check
|
||||
|
@ -33,6 +32,5 @@ jobs:
|
|||
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||
|
||||
- run: nix run nixpkgs#alejandra -- -c .
|
||||
|
|
1
.github/workflows/docs-preview.yml
vendored
1
.github/workflows/docs-preview.yml
vendored
|
@ -26,7 +26,6 @@ jobs:
|
|||
steps:
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
|
1
.github/workflows/editorconfig.yml
vendored
1
.github/workflows/editorconfig.yml
vendored
|
@ -30,7 +30,6 @@ jobs:
|
|||
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||
|
||||
- name: Checking EditorConfig
|
||||
shell: bash
|
||||
|
|
1
.github/workflows/manual.yml
vendored
1
.github/workflows/manual.yml
vendored
|
@ -45,7 +45,6 @@ jobs:
|
|||
steps:
|
||||
- uses: actions/checkout@v4.1.7
|
||||
- uses: DeterminateSystems/nix-installer-action@main
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@main
|
||||
- run: |
|
||||
nix build .#docs -Lv
|
||||
cp -r result/share/doc/nvf public
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# This is the sample configuration for nvf, aiming to give you a feel of the default options
|
||||
# while certain plugins are enabled. While it may act as one, this is not an overview of nvf's
|
||||
# module options. To find a complete overview of nvf's options and examples, visit the manual.
|
||||
# while certain plugins are enabled. While it may partially act as one, this is *not* quite
|
||||
# an overview of nvf's module options. To find a complete and curated list of nvf module
|
||||
# options, examples, instruction tutorials and more; please visit the online manual.
|
||||
# https://notashelf.github.io/nvf/options.html
|
||||
isMaximal: {
|
||||
config.vim = {
|
||||
|
@ -175,6 +176,8 @@ isMaximal: {
|
|||
icon-picker.enable = isMaximal;
|
||||
surround.enable = isMaximal;
|
||||
diffview-nvim.enable = true;
|
||||
yanky-nvim.enable = false;
|
||||
leetcode-nvim.enable = isMaximal;
|
||||
motion = {
|
||||
hop.enable = true;
|
||||
leap.enable = true;
|
||||
|
|
|
@ -102,7 +102,7 @@ in
|
|||
--script script/anchor-use.js \
|
||||
--script script/anchor-min.js \
|
||||
--script script/search.js \
|
||||
--toc-depth 2 \
|
||||
--toc-depth 1 \
|
||||
--section-toc-depth 1 \
|
||||
manual.md \
|
||||
"$dest/index.xhtml"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
```{=include=} chapters
|
||||
configuring/custom-package.md
|
||||
configuring/custom-plugins.md
|
||||
configuring/custom-inputs.md
|
||||
configuring/overriding-plugins.md
|
||||
configuring/languages.md
|
||||
configuring/dags.md
|
||||
configuring/dag-entries.md
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
# Custom Inputs {#ch-custom-inputs}
|
||||
|
||||
One of the greatest strengths of **nvf** is its ability to get plugins from
|
||||
flake inputs and build them locally from any given source. For plugins that do
|
||||
not require any kind of additional building step, this is a powerful method of
|
||||
adding plugins to your configuration that are not packaged in nixpkgs, or those
|
||||
you want to track from source without relying on nixpkgs.
|
||||
|
||||
The [additional plugins section](#sec-additional-plugins) details the addition
|
||||
of new plugins to nvf under regular circumstances, i.e. while making a pull
|
||||
request to the project. You may _override_ those plugin inputs in your own
|
||||
`flake.nix` to change source versions, e.g., to use newer versions of plugins
|
||||
that are not yet updated in **nvf**.
|
||||
|
||||
```nix
|
||||
{
|
||||
|
||||
inputs = {
|
||||
# ...
|
||||
|
||||
# The name here is arbitrary, you can name it whatever.
|
||||
# This will add a plugin input called "your-neodev-input"
|
||||
# that you can reference in a `follows` line.
|
||||
your-neodev-input = {
|
||||
url = "github:folke/neodev.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
nvf = {
|
||||
url = "github:notashelf/nvf";
|
||||
|
||||
# The name of the input must match for the follows line
|
||||
# plugin-neodev-nvim is what the input is called inside nvf
|
||||
# so you must match the exact name here.
|
||||
inputs.plugin-neodev-nvim.follows = "your-neodev-input";
|
||||
};
|
||||
# ...
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
This will override the source for the `neodev.nvim` plugin that is used in nvf
|
||||
with your own input. You can update your new input via `nix flake update` or
|
||||
more specifically `nix flake update <name of your input>` to keep it up to date.
|
||||
|
||||
::: {.warning}
|
||||
|
||||
While updating plugin inputs, make sure that any configuration that has been
|
||||
deprecated in newer versions is changed in the plugin's `setupOpts`. If you
|
||||
depend on a new version, requesting a version bump in the issues section is a
|
||||
more reliable option.
|
||||
|
||||
:::
|
35
docs/manual/configuring/overriding-plugins.md
Normal file
35
docs/manual/configuring/overriding-plugins.md
Normal file
|
@ -0,0 +1,35 @@
|
|||
# Overriding plugins {#ch-overriding-plugins}
|
||||
|
||||
The [additional plugins section](#sec-additional-plugins) details the addition
|
||||
of new plugins to nvf under regular circumstances, i.e. while making a pull
|
||||
request to the project. You may _override_ those plugins in your config
|
||||
to change source versions, e.g., to use newer versions of plugins
|
||||
that are not yet updated in **nvf**.
|
||||
|
||||
```nix
|
||||
vim.pluginOverrides = {
|
||||
lazydev-nvim = pkgs.fetchFromGitHub {
|
||||
owner = "folke";
|
||||
repo = "lazydev.nvim";
|
||||
rev = "";
|
||||
hash = "";
|
||||
};
|
||||
# It's also possible to use a flake input
|
||||
lazydev-nvim = inputs.lazydev-nvim;
|
||||
# Or a local path
|
||||
lazydev-nvim = ./lazydev;
|
||||
# Or a npins pin... etc
|
||||
};
|
||||
```
|
||||
|
||||
This will override the source for the `neodev.nvim` plugin that is used in nvf
|
||||
with your own plugin.
|
||||
|
||||
::: {.warning}
|
||||
|
||||
While updating plugin inputs, make sure that any configuration that has been
|
||||
deprecated in newer versions is changed in the plugin's `setupOpts`. If you
|
||||
depend on a new version, requesting a version bump in the issues section is a
|
||||
more reliable option.
|
||||
|
||||
:::
|
|
@ -1,36 +1,25 @@
|
|||
# Adding Plugins {#sec-additional-plugins}
|
||||
|
||||
To add a new Neovim plugin, first add the source url in the inputs section of
|
||||
`flake.nix` with the prefix `plugin-`
|
||||
To add a new Neovim plugin, use `npins`
|
||||
|
||||
Use:
|
||||
|
||||
`nix-shell -p npins` or `nix shell nixpkgs#npins`
|
||||
|
||||
Then run:
|
||||
|
||||
`npins add --name <plugin name> github <owner> <repo> -b <branch>`
|
||||
|
||||
Be sure to replace any non-alphanumeric characters with `-` for `--name`
|
||||
|
||||
For example
|
||||
|
||||
`npins add --name lazydev-nvim github folke lazydev.nvim -b main`
|
||||
|
||||
You can now reference this plugin as a **string**.
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
# ...
|
||||
plugin-neodev-nvim = {
|
||||
url = "github:folke/neodev.nvim";
|
||||
flake = false;
|
||||
};
|
||||
# ...
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
Prepending `plugin-` to the name of the input will allow nvf to automatically
|
||||
discover inputs that are marked as plugins, and make them available in
|
||||
`vim.startPlugins` or other areas that require a very specific plugin type as it
|
||||
is defined in `@NVF_REPO@/lib/types/plugins.nix`
|
||||
|
||||
The addition of the `plugin-` prefix will allow **nvf** to autodiscover the
|
||||
input from the flake inputs automatically, allowing you to refer to it in areas
|
||||
that require a very specific plugin type as defined in `lib/types/plugins.nix`
|
||||
|
||||
You can now reference this plugin using its string name, the plugin will be
|
||||
built with the name and source URL from the flake input, allowing you to refer
|
||||
to it as a **string**.
|
||||
|
||||
```nix
|
||||
config.vim.startPlugins = ["neodev-nvim"];
|
||||
config.vim.startPlugins = ["lazydev-nvim"];
|
||||
```
|
||||
|
||||
## Modular setup options {#sec-modular-setup-options}
|
||||
|
|
|
@ -23,15 +23,17 @@ An example flake that exposes your custom Neovim configuration might look like
|
|||
nvf.url = "github:notashelf/nvf";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
...
|
||||
} @ inputs: {
|
||||
packages."x86_64-linux" = let
|
||||
neovimConfigured = (inputs.nvf.lib.neovimConfiguration {
|
||||
inherit (nixpkgs.legacyPackages."x86_64-linux") pkgs;
|
||||
modules = [{
|
||||
outputs = {nixpkgs, ...} @ inputs: {
|
||||
packages.x86_64-linux = {
|
||||
# Set the default package to the wrapped instance of Neovim.
|
||||
# This will allow running your Neovim configuration with
|
||||
# `nix run` and in addition, sharing your configuration with
|
||||
# other users in case your repository is public.
|
||||
default =
|
||||
(inputs.nvf.lib.neovimConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
modules = [
|
||||
{
|
||||
config.vim = {
|
||||
# Enable custom theming options
|
||||
theme.enable = true;
|
||||
|
@ -43,14 +45,10 @@ An example flake that exposes your custom Neovim configuration might look like
|
|||
# reference in Appendix B of the nvf manual.
|
||||
# ...
|
||||
};
|
||||
}];
|
||||
});
|
||||
in {
|
||||
# Set the default package to the wrapped instance of Neovim.
|
||||
# This will allow running your Neovim configuration with
|
||||
# `nix run` and in addition, sharing your configuration with
|
||||
# other users in case your repository is public.
|
||||
default = neovimConfigured.neovim;
|
||||
}
|
||||
];
|
||||
})
|
||||
.neovim;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -49,13 +49,10 @@ Followed by importing the home-manager module somewhere in your configuration.
|
|||
nvf.url = "github:notashelf/nvf";
|
||||
};
|
||||
|
||||
outputs = { nixpkgs, home-manager, nvf, ... }: let
|
||||
system = "x86_64-linux";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in {
|
||||
outputs = { nixpkgs, home-manager, nvf, ... }: {
|
||||
# ↓ this is your home output in the flake schema, expected by home-manager
|
||||
"your-username@your-hostname" = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
modules = [
|
||||
nvf.homeManagerModules.default # <- this imports the home-manager module that provides the options
|
||||
./home.nix # <- your home entrypoint, `programs.nvf.*` may be defined here
|
||||
|
|
|
@ -16,26 +16,32 @@ the default theme enabled. You may use other options inside `config.vim` in
|
|||
nvf.url = "github:notashelf/nvf";
|
||||
};
|
||||
|
||||
outputs = {nixpkgs, nvf, ...}: let
|
||||
system = "x86_64-linux";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
configModule = {
|
||||
# Add any custom options (and do feel free to upstream them!)
|
||||
# options = { ... };
|
||||
|
||||
config.vim = {
|
||||
theme.enable = true;
|
||||
# and more options as you see fit...
|
||||
};
|
||||
};
|
||||
|
||||
customNeovim = nvf.lib.neovimConfiguration {
|
||||
inherit pkgs;
|
||||
modules = [configModule];
|
||||
};
|
||||
in {
|
||||
outputs = {
|
||||
nixpkgs,
|
||||
nvf,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
# This will make the package available as a flake output under 'packages'
|
||||
packages.${system}.my-neovim = customNeovim.neovim;
|
||||
packages.x86_64-linux.my-neovim =
|
||||
(nvf.lib.neovimConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
modules = [
|
||||
# Or move this to a separate file and add it's path here instead
|
||||
# IE: ./nvf_module.nix
|
||||
(
|
||||
{pkgs, ...}: {
|
||||
# Add any custom options (and do feel free to upstream them!)
|
||||
# options = { ... };
|
||||
config.vim = {
|
||||
theme.enable = true;
|
||||
# and more options as you see fit...
|
||||
};
|
||||
}
|
||||
)
|
||||
];
|
||||
})
|
||||
.neovim;
|
||||
|
||||
# Example nixosConfiguration using the configured Neovim package
|
||||
nixosConfigurations = {
|
||||
|
@ -43,11 +49,13 @@ the default theme enabled. You may use other options inside `config.vim` in
|
|||
# ...
|
||||
modules = [
|
||||
# This will make wrapped neovim available in your system packages
|
||||
{environment.systemPackages = [customNeovim.neovim];}
|
||||
# Can also move this to another config file if you pass inputs/self around with specialArgs
|
||||
({pkgs, ...}: {
|
||||
environment.systemPackages = [self.packages.${pkgs.stdenv.system}.neovim];
|
||||
})
|
||||
];
|
||||
# ...
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
}```
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
# Neovim Flake Configuration Options {#ch-options}
|
||||
# nvf Configuration Options {#ch-options}
|
||||
|
||||
Below are the module options provided by nvf, in no particular order. Most
|
||||
options will include useful comments, warnings or setup tips on how a module
|
||||
option is meant to be used as well as examples in complex cases.
|
||||
|
||||
An offline version of this page is bundled with nvf as a part of the manpages
|
||||
which you can access with `man 5 nvf`. Please us know if you believe any of the
|
||||
options below are missing useful examples.
|
||||
|
||||
<!--
|
||||
In the manual, individual options may be referenced in Hyperlinks as follows:
|
||||
[](#opt-vim.*) If changing the prefix here, do keep in mind the #opt- suffix will have
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Helpful Tips {#ch-helpful-tips}
|
||||
|
||||
```{=include=} chapters
|
||||
tips/pure-lua-config.md
|
||||
tips/debugging-nvf.md
|
||||
tips/offline-docs.md
|
||||
```
|
||||
|
|
|
@ -17,3 +17,9 @@ nvf-print-config | bat --language=lua
|
|||
```
|
||||
|
||||
Alternatively, `cat` or `less` may also be used.
|
||||
|
||||
## Accessing `neovimConfig` {#sec-accessing-config}
|
||||
|
||||
It is also possible to access the configuration for the wrapped package. The
|
||||
_built_ Neovim package will contain a `neovimConfig` attribute in its
|
||||
`passthru`.
|
||||
|
|
117
docs/manual/tips/pure-lua-config.md
Normal file
117
docs/manual/tips/pure-lua-config.md
Normal file
|
@ -0,0 +1,117 @@
|
|||
# Pure Lua Configuration {#sec-pure-lua-config}
|
||||
|
||||
We recognize that you might not always want to configure your setup purely in
|
||||
Nix, sometimes doing things in Lua is simply the "superior" option. In such a
|
||||
case you might want to configure your Neovim instance using Lua, and nothing but
|
||||
Lua. It is also possible to mix Lua and Nix configurations.
|
||||
|
||||
Pure Lua or hybrid Lua/Nix configurations can be achieved in two different ways.
|
||||
_Purely_, by modifying Neovim's runtime directory or _impurely_ by placing Lua
|
||||
configuration in a directory found in `$HOME`. For your convenience, this
|
||||
section will document both methods as they can be used.
|
||||
|
||||
## Pure Runtime Directory {#sec-pure-nvf-runtime}
|
||||
|
||||
As of 0.6, nvf allows you to modify Neovim's runtime path to suit your needs.
|
||||
One of the ways the new runtime option is to add a configuration **located
|
||||
relative to your `flake.nix`**, which must be version controlled in pure flakes
|
||||
manner.
|
||||
|
||||
```nix
|
||||
{
|
||||
# Let us assume we are in the repository root, i.e., the same directory as the
|
||||
# flake.nix. For the sake of the argument, we will assume that the Neovim lua
|
||||
# configuration is in a nvim/ directory relative to flake.nix.
|
||||
vim = {
|
||||
additionalRuntimeDirectories = [
|
||||
# This will be added to Neovim's runtime paths. Conceptually, this behaves
|
||||
# very similarly to ~/.config/nvim but you may not place a top-level
|
||||
# init.lua to be able to require it directly.
|
||||
./nvim
|
||||
];
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
This will add the `nvim` directory, or rather, the _store path_ that will be
|
||||
realised after your flake gets copied to the Nix store, to Neovim's runtime
|
||||
directory. You may now create a `lua/myconfig` directory within this nvim
|
||||
directory, and call it with [](#opt-vim.luaConfigRC).
|
||||
|
||||
```nix
|
||||
{pkgs, ...}: {
|
||||
vim = {
|
||||
additionalRuntimeDirectories = [
|
||||
# You can list more than one file here.
|
||||
./nvim-custom-1
|
||||
|
||||
# To make sure list items are ordered, use lib.mkBefore or lib.mkAfter
|
||||
# Simply placing list items in a given order will **not** ensure that
|
||||
# this list will be deterministic.
|
||||
./nvim-custom-2
|
||||
];
|
||||
|
||||
startPlugins = [pkgs.vimPlugins.gitsigns];
|
||||
|
||||
# Neovim supports in-line syntax highlighting for multi-line strings.
|
||||
# Simply place the filetype in a /* comment */ before the line.
|
||||
luaConfigRC.myconfig = /* lua */ ''
|
||||
-- Call the Lua module from ./nvim/lua/myconfig
|
||||
require("myconfig")
|
||||
|
||||
-- Any additional Lua configuration that you might want *after* your own
|
||||
-- configuration. For example, a plugin setup call.
|
||||
require('gitsigns').setup({})
|
||||
'';
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
## Impure Absolute Directory {#sec-impure-absolute-dir}
|
||||
|
||||
[Neovim 0.9]: https://github.com/neovim/neovim/pull/22128
|
||||
|
||||
As of [Neovim 0.9], {var}`$NVIM_APPNAME` is a variable expected by Neovim to
|
||||
decide on the configuration directory. nvf sets this variable as `"nvf"`,
|
||||
meaning `~/.config/nvf` will be regarded as _the_ configuration directory by
|
||||
Neovim, similar to how `~/.config/nvim` behaves in regular installations. This
|
||||
allows some degree of Lua configuration, backed by our low-level wrapper
|
||||
[mnw](https://github.com/Gerg-L/mnw). Creating a `lua/` directory located in
|
||||
`$NVIM_APPNAME` ("nvf" by default) and placing your configuration in, e.g.,
|
||||
`~/.config/nvf/lua/myconfig` will allow you to `require` it as a part of the Lua
|
||||
module system through nvf's module system.
|
||||
|
||||
Let's assume your `~/.config/nvf/lua/myconfig/init.lua` consists of the
|
||||
following:
|
||||
|
||||
```lua
|
||||
-- init.lua
|
||||
vim.keymap.set("n", " ", "<Nop>", { silent = true, remap = false })
|
||||
vim.g.mapleader = " "
|
||||
```
|
||||
|
||||
The following Nix configuration via [](#opt-vim.luaConfigRC) will allow loading
|
||||
this
|
||||
|
||||
```nix
|
||||
{
|
||||
# The attribute name "myconfig-dir" here is arbitrary. It is required to be
|
||||
# a *named* attribute by the DAG system, but the name is entirely up to you.
|
||||
vim.luaConfigRC.myconfig-dir = ''
|
||||
require("myconfig")
|
||||
|
||||
-- Any additional Lua
|
||||
'';
|
||||
}
|
||||
```
|
||||
|
||||
[DAG system]: https://notashelf.github.io/nvf/index.xhtml#ch-using-dags
|
||||
|
||||
After you load your custom configuration, you may use an `init.lua` located in
|
||||
your custom configuration directory to configure Neovim exactly as you would
|
||||
without a wrapper like nvf. If you want to place your `require` call in a
|
||||
specific position (i.e., before or after options you set in nvf) the
|
||||
[DAG system] will let you place your configuration in a location of your
|
||||
choosing.
|
||||
|
||||
[top-level DAG system]: https://notashelf.github.io/nvf/index.xhtml#ch-vim-luaconfigrc
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
[typst-preview.nvim]: https://github.com/chomosuke/typst-preview.nvim
|
||||
[render-markdown.nvim]: https://github.com/MeanderingProgrammer/render-markdown.nvim
|
||||
[yanky.nvim]: https://github.com/gbprod/yanky.nvim
|
||||
|
||||
- Add [typst-preview.nvim] under
|
||||
`languages.typst.extensions.typst-preview-nvim`.
|
||||
|
@ -33,16 +34,25 @@
|
|||
|
||||
- Add [](#opt-vim.lsp.lightbulb.autocmd.enable) for manually managing the
|
||||
previously managed lightbulb autocommand.
|
||||
|
||||
- A warning will occur if [](#opt-vim.lsp.lightbulb.autocmd.enable) and
|
||||
`vim.lsp.lightbulb.setupOpts.autocmd.enabled` are both set at the same time.
|
||||
Pick only one.
|
||||
|
||||
- Add [yanky.nvim] to available plugins, under `vim.utility.yanky-nvim`.
|
||||
|
||||
[amadaluzia](https://github.com/amadaluzia):
|
||||
|
||||
[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
|
||||
|
||||
- Add Haskell support under `vim.languages.haskell` using [haskell-tools.nvim].
|
||||
|
||||
[horriblename](https://github.com/horriblename):
|
||||
|
||||
[blink.cmp]: https://github.com/saghen/blink.cmp
|
||||
|
||||
- Add [blink.cmp] support
|
||||
|
||||
[diniamo](https://github.com/diniamo):
|
||||
|
||||
- Add Odin support under `vim.languages.odin`.
|
||||
|
@ -133,5 +143,30 @@
|
|||
|
||||
[ARCIII](https://github.com/ArmandoCIII):
|
||||
|
||||
[leetcode.nvim]: https://github.com/kawre/leetcode.nvim
|
||||
|
||||
- Add `vim.languages.zig.dap` support through pkgs.lldb dap adapter. Code
|
||||
Inspiration from `vim.languages.clang.dap` implementation.
|
||||
- Add [leetcode.nvim] plugin under `vim.utility.leetcode-nvim`.
|
||||
|
||||
|
||||
[nezia1](https://github.com/nezia1)
|
||||
|
||||
- Add support for [nixd](https://github.com/nix-community/nixd) language server.
|
||||
|
||||
[folospior](https://github.com/folospior)
|
||||
|
||||
- Fix plugin name for lsp/lspkind.
|
||||
|
||||
[iynaix](https://github.com/iynaix)
|
||||
|
||||
- Add lsp options support for [nixd](https://github.com/nix-community/nixd)
|
||||
language server.
|
||||
|
||||
[Mr-Helpful](https://github.com/Mr-Helpful)
|
||||
|
||||
- Corrects pin names used for nvim themes
|
||||
|
||||
[Libadoxon](https://github.com/Libadoxon)
|
||||
|
||||
- Add [git-conflict](https://github.com/akinsho/git-conflict.nvim) plugin for resolving git conflicts
|
||||
|
|
2807
flake.lock
generated
2807
flake.lock
generated
File diff suppressed because it is too large
Load diff
876
flake.nix
876
flake.nix
|
@ -7,7 +7,7 @@
|
|||
} @ inputs: let
|
||||
# call the extended library with `inputs`
|
||||
# inputs is used to get the original standard library, and to pass inputs to the plugin autodiscovery function
|
||||
lib = import ./lib/stdlib-extended.nix inputs;
|
||||
lib = import ./lib/stdlib-extended.nix {inherit inputs self;};
|
||||
in
|
||||
flake-parts.lib.mkFlake {
|
||||
inherit inputs;
|
||||
|
@ -17,6 +17,8 @@
|
|||
# «https://github.com/nix-systems/nix-systems»
|
||||
systems = import inputs.systems;
|
||||
imports = [
|
||||
./flake/templates
|
||||
|
||||
./flake/apps.nix
|
||||
./flake/legacyPackages.nix
|
||||
./flake/overlays.nix
|
||||
|
@ -31,7 +33,7 @@
|
|||
};
|
||||
|
||||
homeManagerModules = {
|
||||
nvf = import ./flake/modules/home-manager.nix {inherit lib self;};
|
||||
nvf = import ./flake/modules/home-manager.nix {inherit lib inputs;};
|
||||
default = self.homeManagerModules.nvf;
|
||||
neovim-flake =
|
||||
lib.warn ''
|
||||
|
@ -42,7 +44,7 @@
|
|||
};
|
||||
|
||||
nixosModules = {
|
||||
nvf = import ./flake/modules/nixos.nix {inherit lib self;};
|
||||
nvf = import ./flake/modules/nixos.nix {inherit lib inputs;};
|
||||
default = self.nixosModules.nvf;
|
||||
neovim-flake =
|
||||
lib.warn ''
|
||||
|
@ -51,6 +53,8 @@
|
|||
''
|
||||
self.nixosModules.nvf;
|
||||
};
|
||||
|
||||
inherit (lib.importJSON ./npins/sources.json) pins;
|
||||
};
|
||||
|
||||
perSystem = {pkgs, ...}: {
|
||||
|
@ -94,871 +98,5 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.flake-utils.follows = "flake-utils";
|
||||
};
|
||||
|
||||
## Plugins
|
||||
# Lazy loading
|
||||
plugin-lz-n = {
|
||||
url = "github:nvim-neorocks/lz.n";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-lzn-auto-require = {
|
||||
url = "github:horriblename/lzn-auto-require/require-rewrite";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-rtp-nvim = {
|
||||
url = "github:nvim-neorocks/rtp.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# LSP plugins
|
||||
plugin-nvim-lspconfig = {
|
||||
url = "github:neovim/nvim-lspconfig";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-lspsaga = {
|
||||
url = "github:tami5/lspsaga.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-lspkind = {
|
||||
url = "github:onsails/lspkind-nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-trouble = {
|
||||
url = "github:folke/trouble.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-treesitter-context = {
|
||||
url = "github:nvim-treesitter/nvim-treesitter-context";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-lightbulb = {
|
||||
url = "github:kosayoda/nvim-lightbulb";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-fastaction-nvim = {
|
||||
url = "github:Chaitanyabsprip/fastaction.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-lsp-signature = {
|
||||
url = "github:ray-x/lsp_signature.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-lsp-lines = {
|
||||
url = "sourcehut:~whynothugo/lsp_lines.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-none-ls = {
|
||||
# https://github.com/nvimtools/none-ls.nvim/issues/58
|
||||
url = "github:nvimtools/none-ls.nvim/bb680d752cec37949faca7a1f509e2fe67ab418a";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-docs-view = {
|
||||
url = "github:amrbashir/nvim-docs-view";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-otter-nvim = {
|
||||
url = "github:jmbuhr/otter.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Language support
|
||||
plugin-sqls-nvim = {
|
||||
url = "github:nanotee/sqls.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-rustaceanvim = {
|
||||
url = "github:mrcjkb/rustaceanvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-flutter-tools = {
|
||||
url = "github:akinsho/flutter-tools.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-neodev-nvim = {
|
||||
url = "github:folke/neodev.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-elixir-tools = {
|
||||
url = "github:elixir-tools/elixir-tools.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-ts-error-translator = {
|
||||
url = "github:dmmulroy/ts-error-translator.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-typst-preview-nvim = {
|
||||
url = "github:chomosuke/typst-preview.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-metals = {
|
||||
url = "github:scalameta/nvim-metals";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-omnisharp-extended = {
|
||||
url = "github:Hoffs/omnisharp-extended-lsp.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-csharpls-extended = {
|
||||
url = "github:Decodetalkers/csharpls-extended-lsp.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Copying/Registers
|
||||
plugin-registers = {
|
||||
url = "github:tversteeg/registers.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-neoclip = {
|
||||
url = "github:AckslD/nvim-neoclip.lua";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Pickers
|
||||
plugin-telescope = {
|
||||
url = "github:nvim-telescope/telescope.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-fzf-lua = {
|
||||
url = "github:ibhagwan/fzf-lua";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Runners
|
||||
plugin-run-nvim = {
|
||||
url = "github:diniamo/run.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Debuggers
|
||||
plugin-nvim-dap = {
|
||||
url = "github:mfussenegger/nvim-dap";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-dap-ui = {
|
||||
url = "github:rcarriga/nvim-dap-ui";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-dap-go = {
|
||||
url = "github:leoluz/nvim-dap-go";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Filetrees
|
||||
plugin-nvim-tree-lua = {
|
||||
url = "github:nvim-tree/nvim-tree.lua";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-neo-tree-nvim = {
|
||||
url = "github:nvim-neo-tree/neo-tree.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Tablines
|
||||
plugin-nvim-bufferline-lua = {
|
||||
url = "github:akinsho/nvim-bufferline.lua";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Statuslines
|
||||
plugin-lualine = {
|
||||
url = "github:hoob3rt/lualine.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-cmp = {
|
||||
url = "github:hrsh7th/nvim-cmp";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-cmp-buffer = {
|
||||
url = "github:hrsh7th/cmp-buffer";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-cmp-nvim-lsp = {
|
||||
url = "github:hrsh7th/cmp-nvim-lsp";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-cmp-path = {
|
||||
url = "github:hrsh7th/cmp-path";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-cmp-treesitter = {
|
||||
url = "github:ray-x/cmp-treesitter";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-cmp-luasnip = {
|
||||
url = "github:saadparwaiz1/cmp_luasnip";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# snippets
|
||||
plugin-luasnip = {
|
||||
url = "github:L3MON4D3/LuaSnip";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-friendly-snippets = {
|
||||
url = "github:rafamadriz/friendly-snippets";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Presence
|
||||
plugin-neocord = {
|
||||
url = "github:IogaMaster/neocord";
|
||||
flake = false; # uses flake-utils, avoid the flake
|
||||
};
|
||||
|
||||
# Autopairs
|
||||
plugin-nvim-autopairs = {
|
||||
url = "github:windwp/nvim-autopairs";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-ts-autotag = {
|
||||
url = "github:windwp/nvim-ts-autotag";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Commenting
|
||||
plugin-comment-nvim = {
|
||||
url = "github:numToStr/Comment.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-todo-comments = {
|
||||
url = "github:folke/todo-comments.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Buffer tools
|
||||
plugin-bufdelete-nvim = {
|
||||
url = "github:famiu/bufdelete.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Dashboard Utilities
|
||||
plugin-dashboard-nvim = {
|
||||
url = "github:glepnir/dashboard-nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-alpha-nvim = {
|
||||
url = "github:goolord/alpha-nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-vim-startify = {
|
||||
url = "github:mhinz/vim-startify";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Themes
|
||||
plugin-base16 = {
|
||||
url = "github:rrethy/base16-nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-tokyonight = {
|
||||
url = "github:folke/tokyonight.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-onedark = {
|
||||
url = "github:navarasu/onedark.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-catppuccin = {
|
||||
url = "github:catppuccin/nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-dracula = {
|
||||
url = "github:Mofiqul/dracula.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-oxocarbon = {
|
||||
url = "github:nyoom-engineering/oxocarbon.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-gruvbox = {
|
||||
url = "github:ellisonleao/gruvbox.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-rose-pine = {
|
||||
url = "github:rose-pine/neovim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nord = {
|
||||
url = "github:gbprod/nord.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Rust crates
|
||||
plugin-crates-nvim = {
|
||||
url = "github:Saecki/crates.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Project Management
|
||||
plugin-project-nvim = {
|
||||
url = "github:ahmedkhalf/project.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Visuals
|
||||
plugin-nvim-cursorline = {
|
||||
url = "github:yamatsum/nvim-cursorline";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-scrollbar = {
|
||||
url = "github:petertriho/nvim-scrollbar";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-cinnamon-nvim = {
|
||||
url = "github:declancm/cinnamon.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-cellular-automaton = {
|
||||
url = "github:Eandrju/cellular-automaton.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-indent-blankline = {
|
||||
url = "github:lukas-reineke/indent-blankline.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-web-devicons = {
|
||||
url = "github:nvim-tree/nvim-web-devicons";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-tiny-devicons-auto-colors = {
|
||||
url = "github:rachartier/tiny-devicons-auto-colors.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-gitsigns-nvim = {
|
||||
url = "github:lewis6991/gitsigns.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-vim-fugitive = {
|
||||
url = "github:tpope/vim-fugitive";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-fidget-nvim = {
|
||||
url = "github:j-hui/fidget.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-highlight-undo = {
|
||||
url = "github:tzachar/highlight-undo.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-render-markdown-nvim = {
|
||||
url = "github:MeanderingProgrammer/render-markdown.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-rainbow-delimiters = {
|
||||
url = "github:HiPhish/rainbow-delimiters.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Minimap
|
||||
plugin-minimap-vim = {
|
||||
url = "github:wfxr/minimap.vim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-codewindow-nvim = {
|
||||
url = "github:gorbit99/codewindow.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Notifications
|
||||
plugin-nvim-notify = {
|
||||
url = "github:rcarriga/nvim-notify";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Utilities
|
||||
plugin-ccc = {
|
||||
url = "github:uga-rosa/ccc.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-diffview-nvim = {
|
||||
url = "github:sindrets/diffview.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-icon-picker-nvim = {
|
||||
url = "github:ziontee113/icon-picker.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-which-key = {
|
||||
url = "github:folke/which-key.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-cheatsheet-nvim = {
|
||||
url = "github:sudormrfbin/cheatsheet.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-gesture-nvim = {
|
||||
url = "github:notomo/gesture.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-hop-nvim = {
|
||||
url = "github:phaazon/hop.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-leap-nvim = {
|
||||
url = "github:ggandor/leap.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-smartcolumn = {
|
||||
url = "github:m4xshen/smartcolumn.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-surround = {
|
||||
url = "github:kylechui/nvim-surround";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-glow-nvim = {
|
||||
url = "github:ellisonleao/glow.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-image-nvim = {
|
||||
url = "github:3rd/image.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-precognition-nvim = {
|
||||
url = "github:tris203/precognition.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Note-taking
|
||||
plugin-obsidian-nvim = {
|
||||
url = "github:epwalsh/obsidian.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-orgmode-nvim = {
|
||||
url = "github:nvim-orgmode/orgmode";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mind-nvim = {
|
||||
url = "github:phaazon/mind.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Spellchecking
|
||||
plugin-vim-dirtytalk = {
|
||||
url = "github:psliwka/vim-dirtytalk";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Terminal
|
||||
plugin-toggleterm-nvim = {
|
||||
url = "github:akinsho/toggleterm.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# UI
|
||||
plugin-nvim-navbuddy = {
|
||||
url = "github:SmiteshP/nvim-navbuddy";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-navic = {
|
||||
url = "github:SmiteshP/nvim-navic";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-noice-nvim = {
|
||||
url = "github:folke/noice.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-modes-nvim = {
|
||||
url = "github:mvllow/modes.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-colorizer-lua = {
|
||||
url = "github:NvChad/nvim-colorizer.lua";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-vim-illuminate = {
|
||||
url = "github:RRethy/vim-illuminate";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Assistant
|
||||
plugin-chatgpt = {
|
||||
url = "github:jackMort/ChatGPT.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-copilot-lua = {
|
||||
url = "github:zbirenbaum/copilot.lua";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-copilot-cmp = {
|
||||
url = "github:zbirenbaum/copilot-cmp";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Session management
|
||||
plugin-nvim-session-manager = {
|
||||
url = "github:Shatur/neovim-session-manager";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Dependencies
|
||||
plugin-plenary-nvim = {
|
||||
# (required by crates-nvim)
|
||||
url = "github:nvim-lua/plenary.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-dressing-nvim = {
|
||||
# (required by icon-picker-nvim)
|
||||
url = "github:stevearc/dressing.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-vim-markdown = {
|
||||
# (required by obsidian-nvim)
|
||||
url = "github:preservim/vim-markdown";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-tabular = {
|
||||
# (required by vim-markdown)
|
||||
url = "github:godlygeek/tabular";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-lua-utils-nvim = {
|
||||
url = "github:nvim-neorg/lua-utils.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-pathlib-nvim = {
|
||||
url = "github:pysan3/pathlib.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-neorg = {
|
||||
url = "github:nvim-neorg/neorg";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-neorg-telescope = {
|
||||
url = "github:nvim-neorg/neorg-telescope";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nui-nvim = {
|
||||
# (required by noice.nvim)
|
||||
url = "github:MunifTanjim/nui.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-vim-repeat = {
|
||||
# (required by leap.nvim)
|
||||
url = "github:tpope/vim-repeat";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-nio = {
|
||||
# (required by nvim-dap-ui)
|
||||
url = "github:nvim-neotest/nvim-nio";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-promise-async = {
|
||||
url = "github:kevinhwang91/promise-async";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-nvim-ufo = {
|
||||
url = "github:kevinhwang91/nvim-ufo";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-new-file-template-nvim = {
|
||||
# (required by new-file-template.nvim)
|
||||
url = "github:otavioschwanck/new-file-template.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-haskell-tools-nvim = {
|
||||
url = "github:mrcjkb/haskell-tools.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-aerial-nvim = {
|
||||
url = "github:stevearc/aerial.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# Mini.nvim
|
||||
plugin-mini-ai = {
|
||||
url = "github:echasnovski/mini.ai";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-align = {
|
||||
url = "github:echasnovski/mini.align";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-animate = {
|
||||
url = "github:echasnovski/mini.animate";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-base16 = {
|
||||
url = "github:echasnovski/mini.base16";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-basics = {
|
||||
url = "github:echasnovski/mini.basics";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-bracketed = {
|
||||
url = "github:echasnovski/mini.bracketed";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-bufremove = {
|
||||
url = "github:echasnovski/mini.bufremove";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-clue = {
|
||||
url = "github:echasnovski/mini.clue";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-colors = {
|
||||
url = "github:echasnovski/mini.colors";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-comment = {
|
||||
url = "github:echasnovski/mini.comment";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-completion = {
|
||||
url = "github:echasnovski/mini.completion";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-diff = {
|
||||
url = "github:echasnovski/mini.diff";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-doc = {
|
||||
url = "github:echasnovski/mini.doc";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-extra = {
|
||||
url = "github:echasnovski/mini.extra";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-files = {
|
||||
url = "github:echasnovski/mini.files";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-fuzzy = {
|
||||
url = "github:echasnovski/mini.fuzzy";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-git = {
|
||||
url = "github:echasnovski/mini-git";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-hipatterns = {
|
||||
url = "github:echasnovski/mini.hipatterns";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-hues = {
|
||||
url = "github:echasnovski/mini.hues";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-icons = {
|
||||
url = "github:echasnovski/mini.icons";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-indentscope = {
|
||||
url = "github:echasnovski/mini.indentscope";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-jump = {
|
||||
url = "github:echasnovski/mini.jump";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-jump2d = {
|
||||
url = "github:echasnovski/mini.jump2d";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-map = {
|
||||
url = "github:echasnovski/mini.map";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-misc = {
|
||||
url = "github:echasnovski/mini.misc";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-move = {
|
||||
url = "github:echasnovski/mini.move";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-notify = {
|
||||
url = "github:echasnovski/mini.notify";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-operators = {
|
||||
url = "github:echasnovski/mini.operators";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-pairs = {
|
||||
url = "github:echasnovski/mini.pairs";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-pick = {
|
||||
url = "github:echasnovski/mini.pick";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-sessions = {
|
||||
url = "github:echasnovski/mini.sessions";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-snippets = {
|
||||
url = "github:echasnovski/mini.snippets";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-splitjoin = {
|
||||
url = "github:echasnovski/mini.splitjoin";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-starter = {
|
||||
url = "github:echasnovski/mini.starter";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-statusline = {
|
||||
url = "github:echasnovski/mini.statusline";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-surround = {
|
||||
url = "github:echasnovski/mini.surround";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-tabline = {
|
||||
url = "github:echasnovski/mini.tabline";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-test = {
|
||||
url = "github:echasnovski/mini.test";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-trailspace = {
|
||||
url = "github:echasnovski/mini.trailspace";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
plugin-mini-visits = {
|
||||
url = "github:echasnovski/mini.visits";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
default = self'.devShells.lsp;
|
||||
nvim-nix = pkgs.mkShellNoCC {packages = [config.packages.nix];};
|
||||
lsp = pkgs.mkShellNoCC {
|
||||
packages = with pkgs; [nil statix deadnix alejandra];
|
||||
packages = with pkgs; [nil statix deadnix alejandra npins];
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
{inputs, ...}: {
|
||||
{
|
||||
inputs,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
perSystem = {
|
||||
system,
|
||||
inputs',
|
||||
|
@ -9,10 +13,21 @@
|
|||
overlays = [
|
||||
inputs.self.overlays.default
|
||||
|
||||
(_: _: {
|
||||
(final: prev: {
|
||||
# Build nil from source to get most recent
|
||||
# features as they are added.
|
||||
nil = inputs'.nil.packages.default;
|
||||
blink-cmp = let
|
||||
pin = self.pins.blink-cmp;
|
||||
in
|
||||
final.callPackage ./legacyPackages/blink-cmp.nix {
|
||||
inherit (pin) version;
|
||||
src = prev.fetchFromGitHub {
|
||||
inherit (pin.repository) owner repo;
|
||||
rev = pin.revision;
|
||||
sha256 = pin.hash;
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
|
|
38
flake/legacyPackages/blink-cmp.nix
Normal file
38
flake/legacyPackages/blink-cmp.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
rustPlatform,
|
||||
hostPlatform,
|
||||
vimUtils,
|
||||
git,
|
||||
src,
|
||||
version,
|
||||
}: let
|
||||
blink-fuzzy-lib = rustPlatform.buildRustPackage {
|
||||
pname = "blink-fuzzy-lib";
|
||||
inherit version src;
|
||||
|
||||
# TODO: remove this if plugin stops using nightly rust
|
||||
env.RUSTC_BOOTSTRAP = true;
|
||||
|
||||
nativeBuildInputs = [git];
|
||||
cargoLock = {
|
||||
lockFile = "${src}/Cargo.lock";
|
||||
allowBuiltinFetchGit = true;
|
||||
};
|
||||
};
|
||||
|
||||
libExt =
|
||||
if hostPlatform.isDarwin
|
||||
then "dylib"
|
||||
else "so";
|
||||
in
|
||||
vimUtils.buildVimPlugin {
|
||||
pname = "blink-cmp";
|
||||
inherit version src;
|
||||
|
||||
# blink references a repro.lua which is placed outside the lua/ directory
|
||||
doCheck = false;
|
||||
preInstall = ''
|
||||
mkdir -p target/release
|
||||
ln -s ${blink-fuzzy-lib}/lib/libblink_cmp_fuzzy.${libExt} target/release/libblink_cmp_fuzzy.${libExt}
|
||||
'';
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
# Home Manager module
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
lib,
|
||||
}: {
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (self) packages inputs;
|
||||
inherit (inputs.self) packages;
|
||||
inherit (lib) maintainers;
|
||||
inherit (lib.modules) mkIf mkAliasOptionModule;
|
||||
inherit (lib.lists) optional;
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
# NixOS module
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
lib,
|
||||
}: {
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (self) inputs packages;
|
||||
inherit (inputs.self) packages;
|
||||
inherit (lib) maintainers;
|
||||
inherit (lib.modules) mkIf mkOverride mkAliasOptionModule;
|
||||
inherit (lib.lists) optional;
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
nixConfig = import ../configuration.nix false;
|
||||
maximalConfig = import ../configuration.nix true;
|
||||
in {
|
||||
flake.overlays.default = _final: prev: {
|
||||
flake.overlays.default = final: _prev: {
|
||||
inherit neovimConfiguration;
|
||||
neovim-nix = buildPkg prev [nixConfig];
|
||||
neovim-maximal = buildPkg prev [maximalConfig];
|
||||
neovim-nix = buildPkg final [nixConfig];
|
||||
neovim-maximal = buildPkg final [maximalConfig];
|
||||
devPkg = buildPkg pkgs [nixConfig {config.vim.languages.html.enable = pkgs.lib.mkForce true;}];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -19,9 +19,11 @@
|
|||
in
|
||||
pkgs.testers.lycheeLinkCheck {
|
||||
inherit site;
|
||||
|
||||
remap = {
|
||||
"https://notashelf.github.io/nvf/" = site;
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
exclude = [];
|
||||
include_mail = true;
|
||||
|
@ -29,43 +31,39 @@
|
|||
};
|
||||
};
|
||||
|
||||
# Build and open the built manual in your system browser
|
||||
docs-html-wrapped = pkgs.writeScriptBin "docs-html-wrapped" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
# use xdg-open to open the docs in the browser
|
||||
${pkgs.xdg-utils}/bin/xdg-open ${docs.manual.html}
|
||||
'';
|
||||
# Helper utility for building the HTML manual and opening it in the
|
||||
# browser with $BROWSER or using xdg-open as a fallback tool.
|
||||
# Adapted from Home-Manager, available under the MIT license.
|
||||
docs-html-wrapped = let
|
||||
xdg-open = lib.getExe' pkgs.xdg-utils "xdg-open";
|
||||
docs-html = docs.manual.html + /share/doc/nvf;
|
||||
in
|
||||
pkgs.writeShellScriptBin "docs-html-wrapped" ''
|
||||
set -euo pipefail
|
||||
|
||||
if [[ ! -v BROWSER || -z $BROWSER ]]; then
|
||||
for candidate in xdg-open open w3m; do
|
||||
BROWSER="$(type -P $candidate || true)"
|
||||
if [[ -x $BROWSER ]]; then
|
||||
break;
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ ! -v BROWSER || -z $BROWSER ]]; then
|
||||
echo "$0: unable to start a web browser; please set \$BROWSER"
|
||||
echo "$0: Trying xdg-open as a fallback"
|
||||
${xdg-open} ${docs-html}/index.xhtml
|
||||
else
|
||||
echo "\$BROWSER is set. Attempting to open manual"
|
||||
exec "$BROWSER" "${docs-html}/index.xhtml"
|
||||
fi
|
||||
'';
|
||||
|
||||
# Exposed neovim configurations
|
||||
nix = config.legacyPackages.neovim-nix;
|
||||
maximal = config.legacyPackages.neovim-maximal;
|
||||
default = config.legacyPackages.neovim-nix;
|
||||
|
||||
# Published docker images
|
||||
docker-nix = let
|
||||
inherit (pkgs) bash gitFull buildEnv;
|
||||
inherit (config.legacyPackages) neovim-nix;
|
||||
in
|
||||
pkgs.dockerTools.buildImage {
|
||||
name = "nvf";
|
||||
tag = "latest";
|
||||
|
||||
copyToRoot = buildEnv {
|
||||
name = "neovim-root";
|
||||
pathsToLink = ["/bin"];
|
||||
paths = [
|
||||
neovim-nix
|
||||
gitFull
|
||||
bash
|
||||
];
|
||||
};
|
||||
|
||||
config = {
|
||||
Cmd = ["${neovim-nix}/bin/nvim"];
|
||||
WorkingDir = "/home/neovim/demo";
|
||||
Volumes = {"/home/neovim/demo" = {};};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
17
flake/templates/default.nix
Normal file
17
flake/templates/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
flake.templates = {
|
||||
standalone = {
|
||||
path = ./standalone;
|
||||
description = "Standalone flake template for nvf";
|
||||
welcomeText = ''
|
||||
Template flake.nix has been created in flake.nix!
|
||||
|
||||
Note that this is a very basic example to bootstrap nvf for you. Please edit your
|
||||
configuration as described in the nvf manual before using this template. The
|
||||
configured packages will be ran with 'nix run .' or 'nix run .#neovimConfigured'
|
||||
|
||||
Happy editing!
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
64
flake/templates/standalone/flake.nix
Normal file
64
flake/templates/standalone/flake.nix
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
nvf.url = "github:notashelf/nvf";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
...
|
||||
} @ inputs: let
|
||||
# An abstraction over systems to easily provide the same package
|
||||
# for multiple systems. This is preferable to abstraction libraries.
|
||||
forEachSystem = nixpkgs.lib.genAttrs ["x86_64-linux"];
|
||||
in {
|
||||
packages = forEachSystem (system: let
|
||||
pkgs = inputs.nixpkgs.legacyPackages.${system};
|
||||
|
||||
# A module to be evaluated via lib.evalModules inside nvf's module system.
|
||||
# All options supported by nvf will go under config.vim to create the final
|
||||
# wrapped package. You may also add some new *options* under options.* to
|
||||
# expand the module system.
|
||||
configModule = {
|
||||
# You may browse available options for nvf on the online manual. Please see
|
||||
# <https://notashelf.github.io/nvf/options.html>
|
||||
config.vim = {
|
||||
theme.enable = true;
|
||||
|
||||
# Language support and automatic configuration of companion plugins.
|
||||
# Note that enabling, e.g., languages.<lang>.diagnostics will automatically
|
||||
# enable top-level options such as enableLSP or enableExtraDiagnostics as
|
||||
# they are needed.
|
||||
languages = {
|
||||
enableLSP = true;
|
||||
enableFormat = true;
|
||||
enableTreesitter = true;
|
||||
enableExtraDiagnostics = true;
|
||||
|
||||
# Nix language and diagnostics.
|
||||
nix.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Evaluate any and all modules to create the wrapped Neovim package.
|
||||
neovimConfigured = inputs.nvf.lib.neovimConfiguration {
|
||||
inherit pkgs;
|
||||
|
||||
modules = [
|
||||
# Configuration module to be imported. You may define multiple modules
|
||||
# or even import them from other files (e.g., ./modules/lsp.nix) to
|
||||
# better modularize your configuration.
|
||||
configModule
|
||||
];
|
||||
};
|
||||
in {
|
||||
# Packages to be exposed under packages.<system>. Those can accessed
|
||||
# directly from package outputs in other flakes if this flake is added
|
||||
# as an input. You may run those packages with 'nix run .#<package>'
|
||||
default = self.packages.${system}.neovim;
|
||||
neovimConfigured = neovimConfigured.neovim;
|
||||
});
|
||||
};
|
||||
}
|
28
lib/dag.nix
28
lib/dag.nix
|
@ -24,7 +24,7 @@ in {
|
|||
entryAfter, and entryBefore to a topologically sorted list of
|
||||
entries.
|
||||
|
||||
Internally this function uses the `toposort` function in
|
||||
Internally this function uses the `topoSort` function in
|
||||
`<nixpkgs/lib/lists.nix>` and its value is accordingly.
|
||||
|
||||
Specifically, the result on success is
|
||||
|
@ -136,16 +136,26 @@ in {
|
|||
entriesAfter = tag: entriesBetween tag [];
|
||||
entriesBefore = tag: before: entriesBetween tag before [];
|
||||
|
||||
# mkLuarcSection and mkVimrcSection take a section DAG
|
||||
# and return a string containing a comment to identify
|
||||
# mkLuarcSection takes a section DAG, containing 'name' and 'data' fields
|
||||
# then returns a string containing a comment to identify the section, and
|
||||
# the data contained within the section.
|
||||
# the section, and the data contained within the section
|
||||
#
|
||||
# all operations are done without any modifications
|
||||
# to the inputted section data
|
||||
mkLuarcSection = section: ''
|
||||
-- SECTION: ${section.name}
|
||||
${section.data}
|
||||
'';
|
||||
# All operations are done without any modifications to the inputted section
|
||||
# data, but if a non-string is passed to name or data, then it will try to
|
||||
# coerce it into a string, which may fail. Setting data to "" or null will
|
||||
# return an empty string.
|
||||
#
|
||||
# section.data should never be null, though taking 'null' as a value that
|
||||
# can "clear" the DAG might come in handy for filtering sections more easily.
|
||||
# Or perhaps simply unsetting them from an user perspective.
|
||||
mkLuarcSection = section:
|
||||
if section.data == "" || section.data == null
|
||||
then ""
|
||||
else ''
|
||||
-- SECTION: ${section.name}
|
||||
${section.data}
|
||||
'';
|
||||
|
||||
resolveDag = {
|
||||
name,
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
self,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
types = import ./types {inherit inputs lib;};
|
||||
|
||||
types = import ./types {inherit lib;};
|
||||
config = import ./config.nix {inherit lib;};
|
||||
binds = import ./binds.nix {inherit lib;};
|
||||
dag = import ./dag.nix {inherit lib;};
|
||||
|
@ -12,5 +12,5 @@
|
|||
lists = import ./lists.nix {inherit lib;};
|
||||
attrsets = import ./attrsets.nix {inherit lib;};
|
||||
lua = import ./lua.nix {inherit lib;};
|
||||
neovimConfiguration = import ../modules {inherit inputs lib;};
|
||||
neovimConfiguration = import ../modules {inherit self inputs lib;};
|
||||
}
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
# Convenience function that returns the given Nixpkgs standard library
|
||||
# extended with our functions using `lib.extend`.
|
||||
inputs:
|
||||
{
|
||||
inputs,
|
||||
self,
|
||||
...
|
||||
} @ args:
|
||||
inputs.nixpkgs.lib.extend (self: super: {
|
||||
# WARNING: New functions should not be added here, but to files
|
||||
# imported by `./default.nix` under their own categories. If your
|
||||
|
@ -12,7 +16,7 @@ inputs.nixpkgs.lib.extend (self: super: {
|
|||
# E.g. for an input called `nvf`, `inputs.nvf.lib.nvim` will return the set
|
||||
# below.
|
||||
nvim = import ./. {
|
||||
inherit inputs;
|
||||
inherit (args) inputs self;
|
||||
lib = self;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
{
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
{lib}: let
|
||||
typesDag = import ./dag.nix {inherit lib;};
|
||||
typesPlugin = import ./plugins.nix {inherit inputs lib;};
|
||||
typesPlugin = import ./plugins.nix {inherit lib;};
|
||||
typesLanguage = import ./languages.nix {inherit lib;};
|
||||
customTypes = import ./custom.nix {inherit lib;};
|
||||
in {
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
{
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
{lib}: let
|
||||
inherit (lib.options) mkOption;
|
||||
inherit (lib.attrsets) attrNames mapAttrs' filterAttrs nameValuePair;
|
||||
inherit (lib.strings) hasPrefix removePrefix;
|
||||
inherit (lib.types) submodule either package enum str lines attrsOf anything listOf nullOr;
|
||||
inherit (lib.types) submodule either package enum str lines anything listOf nullOr;
|
||||
|
||||
# Get the names of all flake inputs that start with the given prefix.
|
||||
fromInputs = {
|
||||
|
@ -15,11 +11,8 @@
|
|||
}:
|
||||
mapAttrs' (n: v: nameValuePair (removePrefix prefix n) {src = v;}) (filterAttrs (n: _: hasPrefix prefix n) inputs);
|
||||
|
||||
# Get the names of all flake inputs that start with the given prefix.
|
||||
pluginInputNames = attrNames (fromInputs {
|
||||
inherit inputs;
|
||||
prefix = "plugin-";
|
||||
});
|
||||
# Get the names of all npins
|
||||
pluginInputNames = attrNames (lib.importJSON ../../npins/sources.json).pins;
|
||||
|
||||
# You can either use the name of the plugin or a package.
|
||||
pluginType = nullOr (
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
self,
|
||||
inputs,
|
||||
lib,
|
||||
}: {
|
||||
|
@ -23,7 +24,7 @@
|
|||
specialArgs =
|
||||
extraSpecialArgs
|
||||
// {
|
||||
inherit inputs;
|
||||
inherit self inputs;
|
||||
modulesPath = toString ./.;
|
||||
};
|
||||
modules = concatLists [
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
inherit (lib.nvim.config) batchRenameOptions;
|
||||
|
||||
renamedVimOpts = batchRenameOptions ["vim"] ["vim" "options"] {
|
||||
# 2024-12-01
|
||||
colourTerm = "termguicolors";
|
||||
mouseSupport = "mouse";
|
||||
cmdHeight = "cmdheight";
|
||||
|
@ -15,6 +16,9 @@
|
|||
autoIndent = "autoindent";
|
||||
wordWrap = "wrap";
|
||||
showSignColumn = "signcolumn";
|
||||
|
||||
# 2025-02-07
|
||||
scrollOff = "scrolloff";
|
||||
};
|
||||
in {
|
||||
imports = concatLists [
|
||||
|
@ -93,9 +97,15 @@ in {
|
|||
|
||||
# 2024-12-02
|
||||
(mkRenamedOptionModule ["vim" "enableEditorconfig"] ["vim" "globals" "editorconfig"])
|
||||
|
||||
# 2025-02-06
|
||||
(mkRemovedOptionModule ["vim" "disableArrows"] ''
|
||||
Top-level convenience options are now in the process of being removed from nvf as
|
||||
their behaviour was abstract, and confusing. Please use 'vim.options' or 'vim.luaConfigRC'
|
||||
to replicate previous behaviour.
|
||||
'')
|
||||
]
|
||||
|
||||
# 2024-12-01
|
||||
# Migrated via batchRenameOptions. Further batch renames must be below this line.
|
||||
renamedVimOpts
|
||||
];
|
||||
|
|
|
@ -23,7 +23,9 @@
|
|||
"completion"
|
||||
"dashboard"
|
||||
"debugger"
|
||||
"diagnostics"
|
||||
"filetree"
|
||||
"formatter"
|
||||
"git"
|
||||
"languages"
|
||||
"lsp"
|
||||
|
|
|
@ -16,12 +16,6 @@
|
|||
cfg = config.vim;
|
||||
in {
|
||||
options.vim = {
|
||||
disableArrows = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
description = "Set to prevent arrow keys from moving cursor";
|
||||
};
|
||||
|
||||
hideSearchHighlight = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
|
|
|
@ -26,34 +26,6 @@
|
|||
in {
|
||||
config = {
|
||||
vim.keymaps = mkMerge [
|
||||
(
|
||||
mkIf cfg.disableArrows [
|
||||
{
|
||||
key = "<up>";
|
||||
mode = ["n" "i"];
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
}
|
||||
{
|
||||
key = "<down>";
|
||||
mode = ["n" "i"];
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
}
|
||||
{
|
||||
key = "<left>";
|
||||
mode = ["n" "i"];
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
}
|
||||
{
|
||||
key = "<right>";
|
||||
mode = ["n" "i"];
|
||||
action = "<nop>";
|
||||
noremap = false;
|
||||
}
|
||||
]
|
||||
)
|
||||
(
|
||||
pipe cfg.maps
|
||||
[
|
||||
|
|
|
@ -30,17 +30,19 @@
|
|||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = [
|
||||
"chatgpt"
|
||||
];
|
||||
startPlugins = ["chatgpt-nvim"];
|
||||
|
||||
pluginRC.chagpt = entryAnywhere ''
|
||||
require("chatgpt").setup(${toLuaObject cfg.setupOpts})
|
||||
'';
|
||||
maps.normal = mkMerge [
|
||||
(mkSetBinding mappings.chatGpt "<cmd>ChatGPT<CR>")
|
||||
maps
|
||||
];
|
||||
maps.visual = maps;
|
||||
|
||||
maps = {
|
||||
visual = maps;
|
||||
normal = mkMerge [
|
||||
(mkSetBinding mappings.chatGpt "<cmd>ChatGPT<CR>")
|
||||
maps
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
120
modules/plugins/completion/blink-cmp/blink-cmp.nix
Normal file
120
modules/plugins/completion/blink-cmp/blink-cmp.nix
Normal file
|
@ -0,0 +1,120 @@
|
|||
{lib, ...}: let
|
||||
inherit (lib.options) mkEnableOption mkOption literalMD;
|
||||
inherit (lib.types) listOf str either attrsOf submodule enum anything int nullOr;
|
||||
inherit (lib.generators) mkLuaInline;
|
||||
inherit (lib.nvim.types) mkPluginSetupOption luaInline;
|
||||
inherit (lib.nvim.binds) mkMappingOption;
|
||||
inherit (lib.nvim.config) mkBool;
|
||||
|
||||
keymapType = submodule {
|
||||
freeformType = attrsOf (listOf (either str luaInline));
|
||||
options = {
|
||||
preset = mkOption {
|
||||
type = enum ["default" "none" "super-tab" "enter"];
|
||||
default = "none";
|
||||
description = "keymap presets";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
providerType = submodule {
|
||||
freeformType = anything;
|
||||
options = {
|
||||
module = mkOption {
|
||||
type = str;
|
||||
description = "module of the provider";
|
||||
};
|
||||
};
|
||||
};
|
||||
in {
|
||||
options.vim.autocomplete.blink-cmp = {
|
||||
enable = mkEnableOption "blink.cmp";
|
||||
setupOpts = mkPluginSetupOption "blink.cmp" {
|
||||
sources = {
|
||||
default = mkOption {
|
||||
type = listOf str;
|
||||
default = ["lsp" "path" "snippets" "buffer"];
|
||||
description = "Default list of sources to enable for completion.";
|
||||
};
|
||||
|
||||
cmdline = mkOption {
|
||||
type = nullOr (listOf str);
|
||||
default = [];
|
||||
description = "List of sources to enable for cmdline. Null means use default source list.";
|
||||
};
|
||||
|
||||
providers = mkOption {
|
||||
type = attrsOf providerType;
|
||||
default = {};
|
||||
description = "Settings for completion providers";
|
||||
};
|
||||
|
||||
transform_items = mkOption {
|
||||
type = nullOr luaInline;
|
||||
default = mkLuaInline "function(_, items) return items end";
|
||||
defaultText = ''
|
||||
Our default does nothing. If you want blink.cmp's default, which
|
||||
lowers the score for snippets, set this option to null.
|
||||
'';
|
||||
description = ''
|
||||
Function to use when transforming the items before they're returned
|
||||
for all providers.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
completion = {
|
||||
documentation = {
|
||||
auto_show = mkBool true "Show documentation whenever an item is selected";
|
||||
auto_show_delay_ms = mkOption {
|
||||
type = int;
|
||||
default = 200;
|
||||
description = "Delay before auto show triggers";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
keymap = mkOption {
|
||||
type = keymapType;
|
||||
default = {};
|
||||
description = "blink.cmp keymap";
|
||||
example = literalMD ''
|
||||
```nix
|
||||
vim.autocomplete.blink-cmp.setupOpts.keymap = {
|
||||
preset = "none";
|
||||
|
||||
"<Up>" = ["select_prev" "fallback"];
|
||||
"<C-n>" = [
|
||||
(lib.generators.mkLuaInline ''''
|
||||
function(cmp)
|
||||
if some_condition then return end -- runs the next command
|
||||
return true -- doesn't run the next command
|
||||
end,
|
||||
'''')
|
||||
"select_next"
|
||||
];
|
||||
};
|
||||
```
|
||||
'';
|
||||
};
|
||||
|
||||
fuzzy = {
|
||||
prebuilt_binaries = {
|
||||
download = mkBool false ''
|
||||
Auto-downloads prebuilt binaries. Do not enable, it doesn't work on nix
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mappings = {
|
||||
complete = mkMappingOption "Complete [blink.cmp]" "<C-Space>";
|
||||
confirm = mkMappingOption "Confirm [blink.cmp]" "<CR>";
|
||||
next = mkMappingOption "Next item [blink.cmp]" "<Tab>";
|
||||
previous = mkMappingOption "Previous item [blink.cmp]" "<S-Tab>";
|
||||
close = mkMappingOption "Close [blink.cmp]" "<C-e>";
|
||||
scrollDocsUp = mkMappingOption "Scroll docs up [blink.cmp]" "<C-d>";
|
||||
scrollDocsDown = mkMappingOption "Scroll docs down [blink.cmp]" "<C-f>";
|
||||
};
|
||||
};
|
||||
}
|
91
modules/plugins/completion/blink-cmp/config.nix
Normal file
91
modules/plugins/completion/blink-cmp/config.nix
Normal file
|
@ -0,0 +1,91 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.strings) optionalString;
|
||||
inherit (lib.generators) mkLuaInline;
|
||||
inherit (lib.nvim.lua) toLuaObject;
|
||||
inherit (builtins) concatStringsSep typeOf tryEval attrNames mapAttrs;
|
||||
|
||||
cfg = config.vim.autocomplete.blink-cmp;
|
||||
cmpCfg = config.vim.autocomplete.nvim-cmp;
|
||||
inherit (cfg) mappings;
|
||||
|
||||
getPluginName = plugin:
|
||||
if typeOf plugin == "string"
|
||||
then plugin
|
||||
else if (plugin ? pname && (tryEval plugin.pname).success)
|
||||
then plugin.pname
|
||||
else plugin.name;
|
||||
in {
|
||||
vim = mkIf cfg.enable {
|
||||
startPlugins = ["blink-compat"];
|
||||
lazy.plugins = {
|
||||
blink-cmp = {
|
||||
package = "blink-cmp";
|
||||
setupModule = "blink.cmp";
|
||||
inherit (cfg) setupOpts;
|
||||
|
||||
# TODO: lazy disabled until lspconfig is lazy loaded
|
||||
#
|
||||
# event = ["InsertEnter" "CmdlineEnter"];
|
||||
|
||||
after = ''
|
||||
${optionalString config.vim.lazy.enable
|
||||
(concatStringsSep "\n" (map
|
||||
(package: "require('lz.n').trigger_load(${toLuaObject (getPluginName package)})")
|
||||
cmpCfg.sourcePlugins))}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
autocomplete = {
|
||||
enableSharedCmpSources = true;
|
||||
blink-cmp.setupOpts = {
|
||||
sources = {
|
||||
default = ["lsp" "path" "snippets" "buffer"] ++ (attrNames cmpCfg.sources);
|
||||
providers =
|
||||
mapAttrs (name: _: {
|
||||
inherit name;
|
||||
module = "blink.compat.source";
|
||||
})
|
||||
cmpCfg.sources;
|
||||
};
|
||||
snippets = mkIf config.vim.snippets.luasnip.enable {
|
||||
preset = "luasnip";
|
||||
};
|
||||
|
||||
keymap = {
|
||||
${mappings.complete} = ["show" "fallback"];
|
||||
${mappings.close} = ["hide" "fallback"];
|
||||
${mappings.scrollDocsUp} = ["scroll_documentation_up" "fallback"];
|
||||
${mappings.scrollDocsDown} = ["scroll_documentation_down" "fallback"];
|
||||
${mappings.confirm} = ["accept" "fallback"];
|
||||
|
||||
${mappings.next} = [
|
||||
"select_next"
|
||||
"snippet_forward"
|
||||
(mkLuaInline ''
|
||||
function(cmp)
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
has_words_before = col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
|
||||
if has_words_before then
|
||||
return cmp.show()
|
||||
end
|
||||
end
|
||||
'')
|
||||
"fallback"
|
||||
];
|
||||
${mappings.previous} = [
|
||||
"select_prev"
|
||||
"snippet_backward"
|
||||
"fallback"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
6
modules/plugins/completion/blink-cmp/default.nix
Normal file
6
modules/plugins/completion/blink-cmp/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./blink-cmp.nix
|
||||
./config.nix
|
||||
];
|
||||
}
|
34
modules/plugins/completion/config.nix
Normal file
34
modules/plugins/completion/config.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||
inherit (builtins) typeOf tryEval;
|
||||
|
||||
cfg = config.vim.autocomplete;
|
||||
getPluginName = plugin:
|
||||
if typeOf plugin == "string"
|
||||
then plugin
|
||||
else if (plugin ? pname && (tryEval plugin.pname).success)
|
||||
then plugin.pname
|
||||
else plugin.name;
|
||||
in {
|
||||
config.vim = mkIf cfg.enableSharedCmpSources {
|
||||
startPlugins = ["rtp-nvim"];
|
||||
lazy.plugins =
|
||||
mapListToAttrs (package: {
|
||||
name = getPluginName package;
|
||||
value = {
|
||||
inherit package;
|
||||
lazy = true;
|
||||
after = ''
|
||||
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/${getPluginName package}')
|
||||
require("rtp_nvim").source_after_plugin_dir(path)
|
||||
'';
|
||||
};
|
||||
})
|
||||
cfg.nvim-cmp.sourcePlugins;
|
||||
};
|
||||
}
|
|
@ -1,5 +1,9 @@
|
|||
{
|
||||
imports = [
|
||||
./module.nix
|
||||
./config.nix
|
||||
|
||||
./nvim-cmp
|
||||
./blink-cmp
|
||||
];
|
||||
}
|
||||
|
|
7
modules/plugins/completion/module.nix
Normal file
7
modules/plugins/completion/module.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{lib, ...}: let
|
||||
inherit (lib.options) mkEnableOption;
|
||||
in {
|
||||
options.vim.autocomplete = {
|
||||
enableSharedCmpSources = mkEnableOption "sources shared by blink.cmp and nvim-cmp";
|
||||
};
|
||||
}
|
|
@ -24,114 +24,103 @@
|
|||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["rtp-nvim"];
|
||||
lazy.plugins = mkMerge [
|
||||
(mapListToAttrs (package: {
|
||||
name = getPluginName package;
|
||||
value = {
|
||||
inherit package;
|
||||
lazy = true;
|
||||
after = ''
|
||||
local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/${getPluginName package}')
|
||||
require("rtp_nvim").source_after_plugin_dir(path)
|
||||
lazy.plugins = {
|
||||
nvim-cmp = {
|
||||
package = "nvim-cmp";
|
||||
after = ''
|
||||
${optionalString luasnipEnable "local luasnip = require('luasnip')"}
|
||||
local cmp = require("cmp")
|
||||
|
||||
local kinds = require("cmp.types").lsp.CompletionItemKind
|
||||
local deprio = function(kind)
|
||||
return function(e1, e2)
|
||||
if e1:get_kind() == kind then
|
||||
return false
|
||||
end
|
||||
if e2:get_kind() == kind then
|
||||
return true
|
||||
end
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
cmp.setup(${toLuaObject cfg.setupOpts})
|
||||
|
||||
${optionalString config.vim.lazy.enable
|
||||
(concatStringsSep "\n" (map
|
||||
(package: "require('lz.n').trigger_load(${toLuaObject (getPluginName package)})")
|
||||
cfg.sourcePlugins))}
|
||||
'';
|
||||
|
||||
event = ["InsertEnter" "CmdlineEnter"];
|
||||
};
|
||||
};
|
||||
|
||||
autocomplete = {
|
||||
enableSharedCmpSources = true;
|
||||
|
||||
nvim-cmp = {
|
||||
sources = {
|
||||
nvim-cmp = null;
|
||||
buffer = "[Buffer]";
|
||||
path = "[Path]";
|
||||
};
|
||||
|
||||
sourcePlugins = ["cmp-buffer" "cmp-path"];
|
||||
|
||||
setupOpts = {
|
||||
sources = map (s: {name = s;}) (attrNames cfg.sources);
|
||||
|
||||
window = mkIf borders.enable {
|
||||
completion.border = borders.style;
|
||||
documentation.border = borders.style;
|
||||
};
|
||||
|
||||
formatting.format = cfg.format;
|
||||
|
||||
# `cmp` and `luasnip` are defined above, in the `nvim-cmp` section
|
||||
mapping = {
|
||||
${mappings.complete} = mkLuaInline "cmp.mapping.complete()";
|
||||
${mappings.close} = mkLuaInline "cmp.mapping.abort()";
|
||||
${mappings.scrollDocsUp} = mkLuaInline "cmp.mapping.scroll_docs(-4)";
|
||||
${mappings.scrollDocsDown} = mkLuaInline "cmp.mapping.scroll_docs(4)";
|
||||
${mappings.confirm} = mkLuaInline "cmp.mapping.confirm({ select = true })";
|
||||
|
||||
${mappings.next} = mkLuaInline ''
|
||||
cmp.mapping(function(fallback)
|
||||
local has_words_before = function()
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
${optionalString luasnipEnable ''
|
||||
elseif luasnip.locally_jumpable(1) then
|
||||
luasnip.jump(1)
|
||||
''}
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end)
|
||||
'';
|
||||
|
||||
${mappings.previous} = mkLuaInline ''
|
||||
cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
${optionalString luasnipEnable ''
|
||||
elseif luasnip.locally_jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
''}
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end)
|
||||
'';
|
||||
};
|
||||
})
|
||||
cfg.sourcePlugins)
|
||||
{
|
||||
nvim-cmp = {
|
||||
package = "nvim-cmp";
|
||||
after = ''
|
||||
${optionalString luasnipEnable "local luasnip = require('luasnip')"}
|
||||
local cmp = require("cmp")
|
||||
|
||||
local kinds = require("cmp.types").lsp.CompletionItemKind
|
||||
local deprio = function(kind)
|
||||
return function(e1, e2)
|
||||
if e1:get_kind() == kind then
|
||||
return false
|
||||
end
|
||||
if e2:get_kind() == kind then
|
||||
return true
|
||||
end
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
cmp.setup(${toLuaObject cfg.setupOpts})
|
||||
|
||||
${optionalString config.vim.lazy.enable
|
||||
(concatStringsSep "\n" (map
|
||||
(package: "require('lz.n').trigger_load(${toLuaObject (getPluginName package)})")
|
||||
cfg.sourcePlugins))}
|
||||
'';
|
||||
|
||||
event = ["InsertEnter" "CmdlineEnter"];
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
autocomplete.nvim-cmp = {
|
||||
sources = {
|
||||
nvim-cmp = null;
|
||||
buffer = "[Buffer]";
|
||||
path = "[Path]";
|
||||
};
|
||||
|
||||
sourcePlugins = ["cmp-buffer" "cmp-path"];
|
||||
|
||||
setupOpts = {
|
||||
sources = map (s: {name = s;}) (attrNames cfg.sources);
|
||||
|
||||
window = mkIf borders.enable {
|
||||
completion.border = borders.style;
|
||||
documentation.border = borders.style;
|
||||
};
|
||||
|
||||
formatting.format = cfg.format;
|
||||
|
||||
# `cmp` and `luasnip` are defined above, in the `nvim-cmp` section
|
||||
mapping = {
|
||||
${mappings.complete} = mkLuaInline "cmp.mapping.complete()";
|
||||
${mappings.close} = mkLuaInline "cmp.mapping.abort()";
|
||||
${mappings.scrollDocsUp} = mkLuaInline "cmp.mapping.scroll_docs(-4)";
|
||||
${mappings.scrollDocsDown} = mkLuaInline "cmp.mapping.scroll_docs(4)";
|
||||
${mappings.confirm} = mkLuaInline "cmp.mapping.confirm({ select = true })";
|
||||
|
||||
${mappings.next} = mkLuaInline ''
|
||||
cmp.mapping(function(fallback)
|
||||
local has_words_before = function()
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
${optionalString luasnipEnable ''
|
||||
elseif luasnip.locally_jumpable(1) then
|
||||
luasnip.jump(1)
|
||||
''}
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end)
|
||||
'';
|
||||
|
||||
${mappings.previous} = mkLuaInline ''
|
||||
cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
${optionalString luasnipEnable ''
|
||||
elseif luasnip.locally_jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
''}
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end)
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
3
modules/plugins/diagnostics/default.nix
Normal file
3
modules/plugins/diagnostics/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
imports = [./nvim-lint];
|
||||
}
|
20
modules/plugins/diagnostics/nvim-lint/config.nix
Normal file
20
modules/plugins/diagnostics/nvim-lint/config.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.nvim.dag) entryAnywhere;
|
||||
inherit (lib.nvim.lua) toLuaObject;
|
||||
|
||||
cfg = config.vim.diagnostics.nvim-lint;
|
||||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["nvim-lint"];
|
||||
pluginRC.nvim-lint = entryAnywhere ''
|
||||
require("lint").setup(${toLuaObject cfg.setupOpts})
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
6
modules/plugins/diagnostics/nvim-lint/default.nix
Normal file
6
modules/plugins/diagnostics/nvim-lint/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./nvim-lint.nix
|
||||
./config.nix
|
||||
];
|
||||
}
|
27
modules/plugins/diagnostics/nvim-lint/nvim-lint.nix
Normal file
27
modules/plugins/diagnostics/nvim-lint/nvim-lint.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{lib, ...}: let
|
||||
inherit (lib.options) mkOption mkEnableOption;
|
||||
inherit (lib.types) attrsOf listOf str;
|
||||
inherit (lib.nvim.types) mkPluginSetupOption;
|
||||
in {
|
||||
options.vim.diagnostics.nvim-lint = {
|
||||
enable = mkEnableOption "asynchronous linter plugin for Neovim [nvim-lint]";
|
||||
setupOpts = mkPluginSetupOption "nvim-lint" {
|
||||
linters_by_ft = mkOption {
|
||||
type = attrsOf (listOf str);
|
||||
default = {};
|
||||
example = {
|
||||
text = ["vale"];
|
||||
markdown = ["vale"];
|
||||
};
|
||||
|
||||
description = ''
|
||||
Map of filetype to formatters. This option takes a set of
|
||||
`key = value` format where the `value` will be converted
|
||||
to its Lua equivalent. You are responsible for passing the
|
||||
correct Nix data types to generate a correct Lua value that
|
||||
conform is able to accept.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
20
modules/plugins/formatter/conform-nvim/config.nix
Normal file
20
modules/plugins/formatter/conform-nvim/config.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.nvim.dag) entryAnywhere;
|
||||
inherit (lib.nvim.lua) toLuaObject;
|
||||
|
||||
cfg = config.vim.formatter.conform-nvim;
|
||||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["conform-nvim"];
|
||||
pluginRC.conform-nvim = entryAnywhere ''
|
||||
require("conform").setup(${toLuaObject cfg.setupOpts})
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
56
modules/plugins/formatter/conform-nvim/conform-nvim.nix
Normal file
56
modules/plugins/formatter/conform-nvim/conform-nvim.nix
Normal file
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.options) mkOption mkEnableOption literalExpression;
|
||||
inherit (lib.types) attrs enum;
|
||||
inherit (lib.nvim.types) mkPluginSetupOption;
|
||||
inherit (lib.nvim.lua) mkLuaInline;
|
||||
in {
|
||||
options.vim.formatter.conform-nvim = {
|
||||
enable = mkEnableOption "lightweight yet powerful formatter plugin for Neovim [conform-nvim]";
|
||||
setupOpts = mkPluginSetupOption "conform.nvim" {
|
||||
formatters_by_ft = mkOption {
|
||||
type = attrs;
|
||||
default = {};
|
||||
example = {lua = ["stylua"];};
|
||||
description = ''
|
||||
Map of filetype to formatters. This option takes a set of
|
||||
`key = value` format where the `value will` be converted
|
||||
to its Lua equivalent. You are responsible for passing the
|
||||
correct Nix data types to generate a correct Lua value that
|
||||
conform is able to accept.
|
||||
'';
|
||||
};
|
||||
|
||||
default_format_opts = mkOption {
|
||||
type = attrs;
|
||||
default = {lsp_format = "fallback";};
|
||||
description = "Default values when calling `conform.format()`";
|
||||
};
|
||||
|
||||
format_on_save = mkOption {
|
||||
type = attrs;
|
||||
default = {
|
||||
lsp_format = "fallback";
|
||||
timeout_ms = 500;
|
||||
};
|
||||
description = ''
|
||||
Table that will be passed to `conform.format()`. If this
|
||||
is set, Conform will run the formatter on save.
|
||||
'';
|
||||
};
|
||||
|
||||
format_after_save = mkOption {
|
||||
type = attrs;
|
||||
default = {lsp_format = "fallback";};
|
||||
description = ''
|
||||
Table that will be passed to `conform.format()`. If this
|
||||
is set, Conform will run the formatter asynchronously after
|
||||
save.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
6
modules/plugins/formatter/conform-nvim/default.nix
Normal file
6
modules/plugins/formatter/conform-nvim/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./conform-nvim.nix
|
||||
./config.nix
|
||||
];
|
||||
}
|
3
modules/plugins/formatter/default.nix
Normal file
3
modules/plugins/formatter/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
imports = [./conform-nvim];
|
||||
}
|
|
@ -4,6 +4,7 @@ in {
|
|||
imports = [
|
||||
./gitsigns
|
||||
./vim-fugitive
|
||||
./git-conflict
|
||||
];
|
||||
|
||||
options.vim.git = {
|
||||
|
@ -13,6 +14,7 @@ in {
|
|||
Enabling this option will enable the following plugins:
|
||||
* gitsigns
|
||||
* vim-fugitive
|
||||
* git-conflict
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
40
modules/plugins/git/git-conflict/config.nix
Normal file
40
modules/plugins/git/git-conflict/config.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf mkMerge;
|
||||
inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding;
|
||||
inherit (lib.nvim.dag) entryAnywhere;
|
||||
inherit (lib.nvim.lua) toLuaObject;
|
||||
|
||||
cfg = config.vim.git.git-conflict;
|
||||
|
||||
self = import ./git-conflict.nix {inherit lib config;};
|
||||
gcMappingDefinitions = self.options.vim.git.git-conflict.mappings;
|
||||
|
||||
gcMappings = addDescriptionsToMappings cfg.mappings gcMappingDefinitions;
|
||||
in {
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
{
|
||||
vim = {
|
||||
startPlugins = ["git-conflict-nvim"];
|
||||
|
||||
maps = {
|
||||
normal = mkMerge [
|
||||
(mkSetBinding gcMappings.ours "<Plug>(git-conflict-ours)")
|
||||
(mkSetBinding gcMappings.theirs "<Plug>(git-conflict-theirs)")
|
||||
(mkSetBinding gcMappings.both "<Plug>(git-conflict-both)")
|
||||
(mkSetBinding gcMappings.none "<Plug>(git-conflict-none)")
|
||||
(mkSetBinding gcMappings.prevConflict "<Plug>(git-conflict-prev-conflict)")
|
||||
(mkSetBinding gcMappings.nextConflict "<Plug>(git-conflict-next-conflict)")
|
||||
];
|
||||
};
|
||||
|
||||
pluginRC.git-conflict = entryAnywhere ''
|
||||
require('git-conflict').setup(${toLuaObject ({default_mappings = false;} // cfg.setupOpts)})
|
||||
'';
|
||||
};
|
||||
}
|
||||
]);
|
||||
}
|
6
modules/plugins/git/git-conflict/default.nix
Normal file
6
modules/plugins/git/git-conflict/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./config.nix
|
||||
./git-conflict.nix
|
||||
];
|
||||
}
|
23
modules/plugins/git/git-conflict/git-conflict.nix
Normal file
23
modules/plugins/git/git-conflict/git-conflict.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.options) mkEnableOption;
|
||||
inherit (lib.nvim.binds) mkMappingOption;
|
||||
inherit (lib.nvim.types) mkPluginSetupOption;
|
||||
in {
|
||||
options.vim.git.git-conflict = {
|
||||
enable = mkEnableOption "git-conflict" // {default = config.vim.git.enable;};
|
||||
setupOpts = mkPluginSetupOption "git-conflict" {};
|
||||
|
||||
mappings = {
|
||||
ours = mkMappingOption "Choose Ours [Git-Conflict]" "co";
|
||||
theirs = mkMappingOption "Choose Theirs [Git-Conflict]" "ct";
|
||||
both = mkMappingOption "Choose Both [Git-Conflict]" "cb";
|
||||
none = mkMappingOption "Choose None [Git-Conflict]" "c0";
|
||||
prevConflict = mkMappingOption "Go to the previous Conflict [Git-Conflict]" "]x";
|
||||
nextConflict = mkMappingOption "Go to the next Conflict [Git-Conflict]" "[x";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -75,8 +75,8 @@
|
|||
};
|
||||
|
||||
extraServerPlugins = {
|
||||
omnisharp = ["omnisharp-extended"];
|
||||
csharp_ls = ["csharpls-extended"];
|
||||
omnisharp = ["omnisharp-extended-lsp-nvim"];
|
||||
csharp_ls = ["csharpls-extended-lsp-nvim"];
|
||||
};
|
||||
|
||||
cfg = config.vim.languages.csharp;
|
||||
|
|
|
@ -137,7 +137,7 @@ in {
|
|||
vim.startPlugins =
|
||||
if ftcfg.enableNoResolvePatch
|
||||
then ["flutter-tools-patched"]
|
||||
else ["flutter-tools"];
|
||||
else ["flutter-tools-nvim"];
|
||||
|
||||
vim.pluginRC.flutter-tools = entryAnywhere ''
|
||||
require('flutter-tools').setup {
|
||||
|
|
|
@ -112,7 +112,7 @@ in {
|
|||
})
|
||||
|
||||
(mkIf cfg.elixir-tools.enable {
|
||||
vim.startPlugins = ["elixir-tools"];
|
||||
vim.startPlugins = ["elixir-tools-nvim"];
|
||||
vim.pluginRC.elixir-tools = entryAnywhere ''
|
||||
local elixir = require("elixir")
|
||||
local elixirls = require("elixir.elixirls")
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
inherit (lib.modules) mkIf mkMerge;
|
||||
inherit (lib.meta) getExe;
|
||||
inherit (lib.lists) isList;
|
||||
inherit (lib.strings) optionalString;
|
||||
inherit (lib.types) either listOf package str;
|
||||
inherit (lib.nvim.types) mkGrammarOption;
|
||||
inherit (lib.nvim.lua) expToLua;
|
||||
|
@ -16,6 +15,12 @@
|
|||
|
||||
cfg = config.vim.languages.lua;
|
||||
in {
|
||||
imports = [
|
||||
(lib.mkRemovedOptionModule ["vim" "languages" "lua" "lsp" "neodev"] ''
|
||||
neodev has been replaced by lazydev
|
||||
'')
|
||||
];
|
||||
|
||||
options.vim.languages.lua = {
|
||||
enable = mkEnableOption "Lua language support";
|
||||
treesitter = {
|
||||
|
@ -32,7 +37,7 @@ in {
|
|||
default = pkgs.lua-language-server;
|
||||
};
|
||||
|
||||
neodev.enable = mkEnableOption "neodev.nvim integration, useful for neovim plugin developers";
|
||||
lazydev.enable = mkEnableOption "lazydev.nvim integration, useful for neovim plugin developers";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -49,7 +54,6 @@ in {
|
|||
lspconfig.lua_ls.setup {
|
||||
capabilities = capabilities;
|
||||
on_attach = default_on_attach;
|
||||
${optionalString cfg.lsp.neodev.enable "before_init = require('neodev.lsp').before_init;"}
|
||||
cmd = ${
|
||||
if isList cfg.lsp.package
|
||||
then expToLua cfg.lsp.package
|
||||
|
@ -59,10 +63,15 @@ in {
|
|||
'';
|
||||
})
|
||||
|
||||
(mkIf cfg.lsp.neodev.enable {
|
||||
vim.startPlugins = ["neodev-nvim"];
|
||||
vim.pluginRC.neodev = entryBefore ["lua-lsp"] ''
|
||||
require("neodev").setup({})
|
||||
(mkIf cfg.lsp.lazydev.enable {
|
||||
vim.startPlugins = ["lazydev-nvim"];
|
||||
vim.pluginRC.lazydev = entryBefore ["lua-lsp"] ''
|
||||
require("lazydev").setup({
|
||||
enabled = function(root_dir)
|
||||
return not vim.uv.fs_stat(root_dir .. "/.luarc.json")
|
||||
end,
|
||||
library = { { path = "''${3rd}/luv/library", words = { "vim%.uv" } } },
|
||||
})
|
||||
'';
|
||||
})
|
||||
]))
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
inherit (lib.modules) mkIf mkMerge;
|
||||
inherit (lib.lists) isList;
|
||||
inherit (lib.strings) optionalString;
|
||||
inherit (lib.types) enum either listOf package str;
|
||||
inherit (lib.types) anything attrsOf enum either listOf nullOr package str;
|
||||
inherit (lib.nvim.types) mkGrammarOption diagnostics;
|
||||
inherit (lib.nvim.lua) expToLua;
|
||||
inherit (lib.nvim.lua) expToLua toLuaObject;
|
||||
inherit (lib.nvim.languages) diagnosticsToLua;
|
||||
|
||||
cfg = config.vim.languages.nix;
|
||||
|
@ -59,6 +59,41 @@
|
|||
}
|
||||
'';
|
||||
};
|
||||
|
||||
nixd = {
|
||||
package = pkgs.nixd;
|
||||
internalFormatter = true;
|
||||
lspConfig = ''
|
||||
lspconfig.nixd.setup{
|
||||
capabilities = capabilities,
|
||||
${
|
||||
if cfg.format.enable
|
||||
then useFormat
|
||||
else noFormat
|
||||
},
|
||||
cmd = ${packageToCmd cfg.lsp.package "nixd"},
|
||||
${optionalString cfg.format.enable ''
|
||||
settings = {
|
||||
nixd = {
|
||||
${optionalString (cfg.format.type == "alejandra")
|
||||
''
|
||||
formatting = {
|
||||
command = {"${cfg.format.package}/bin/alejandra", "--quiet"},
|
||||
},
|
||||
''}
|
||||
${optionalString (cfg.format.type == "nixfmt")
|
||||
''
|
||||
formatting = {
|
||||
command = {"${cfg.format.package}/bin/nixfmt"},
|
||||
},
|
||||
''}
|
||||
options = ${toLuaObject cfg.lsp.options},
|
||||
},
|
||||
},
|
||||
''}
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
defaultFormat = "alejandra";
|
||||
|
@ -139,6 +174,12 @@ in {
|
|||
type = either package (listOf str);
|
||||
default = servers.${cfg.lsp.server}.package;
|
||||
};
|
||||
|
||||
options = mkOption {
|
||||
type = nullOr (attrsOf anything);
|
||||
default = null;
|
||||
description = "Options to pass to nixd LSP server";
|
||||
};
|
||||
};
|
||||
|
||||
format = {
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
ls_sources,
|
||||
null_ls.builtins.formatting.prettier.with({
|
||||
command = "${cfg.format.package}/bin/prettier",
|
||||
filetypes = { "typescript" },
|
||||
filetypes = { "typescript", "javascript" },
|
||||
})
|
||||
)
|
||||
'';
|
||||
|
@ -230,7 +230,7 @@ in {
|
|||
|
||||
# Extensions
|
||||
(mkIf cfg.extensions."ts-error-translator".enable {
|
||||
vim.startPlugins = ["ts-error-translator"];
|
||||
vim.startPlugins = ["ts-error-translator-nvim"];
|
||||
vim.pluginRC.ts-error-translator = entryAnywhere ''
|
||||
require("ts-error-translator").setup(${toLuaObject cfg.extensions.ts-error-translator.setupOpts})
|
||||
'';
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
cfg = config.vim.lsp;
|
||||
usingNvimCmp = config.vim.autocomplete.nvim-cmp.enable;
|
||||
usingBlinkCmp = config.vim.autocomplete.blink-cmp.enable;
|
||||
self = import ./module.nix {inherit config lib pkgs;};
|
||||
|
||||
mappingDefinitions = self.options.vim.lsp.mappings;
|
||||
|
@ -22,7 +23,7 @@
|
|||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
autocomplete.nvim-cmp = {
|
||||
autocomplete.nvim-cmp = mkIf usingNvimCmp {
|
||||
sources = {nvim_lsp = "[LSP]";};
|
||||
sourcePlugins = ["cmp-nvim-lsp"];
|
||||
};
|
||||
|
@ -170,6 +171,10 @@ in {
|
|||
},
|
||||
}
|
||||
''}
|
||||
|
||||
${optionalString usingBlinkCmp ''
|
||||
capabilities = require('blink.cmp').get_lsp_capabilities()
|
||||
''}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
|
|
@ -10,9 +10,19 @@
|
|||
cfg = config.vim.lsp;
|
||||
in {
|
||||
config = mkIf (cfg.enable && cfg.lspSignature.enable) {
|
||||
assertions = [
|
||||
{
|
||||
assertion = !config.vim.autocomplete.blink-cmp.enable;
|
||||
message = ''
|
||||
lsp-signature does not work with blink.cmp. Please use blink.cmp's builtin signature feature:
|
||||
|
||||
vim.autocomplete.blink-cmp.setupOpts.signature.enabled = true;
|
||||
'';
|
||||
}
|
||||
];
|
||||
vim = {
|
||||
startPlugins = [
|
||||
"lsp-signature"
|
||||
"lsp-signature-nvim"
|
||||
];
|
||||
|
||||
lsp.lspSignature.setupOpts = {
|
||||
|
|
|
@ -8,27 +8,39 @@
|
|||
inherit (lib.nvim.lua) toLuaObject;
|
||||
|
||||
cfg = config.vim.lsp.lspkind;
|
||||
usingCmp = config.vim.autocomplete.nvim-cmp.enable;
|
||||
usingBlink = config.vim.autocomplete.blink-cmp.enable;
|
||||
in {
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = config.vim.autocomplete.nvim-cmp.enable;
|
||||
assertion = usingCmp || usingBlink;
|
||||
message = ''
|
||||
While lspkind supports Neovim's native lsp upstream, using that over
|
||||
nvim-cmp isn't recommended, nor supported by nvf.
|
||||
nvim-cmp/blink.cmp isn't recommended, nor supported by nvf.
|
||||
|
||||
Please migrate to nvim-cmp if you want to use lspkind.
|
||||
Please migrate to nvim-cmp/blink.cmp if you want to use lspkind.
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
vim = {
|
||||
startPlugins = ["lspkind"];
|
||||
startPlugins = ["lspkind-nvim"];
|
||||
|
||||
lsp.lspkind.setupOpts.before = config.vim.autocomplete.nvim-cmp.format;
|
||||
autocomplete.nvim-cmp.setupOpts.formatting.format = mkForce (mkLuaInline ''
|
||||
require("lspkind").cmp_format(${toLuaObject cfg.setupOpts})
|
||||
'');
|
||||
autocomplete = {
|
||||
nvim-cmp = mkIf usingCmp {
|
||||
setupOpts.formatting.format = mkForce (mkLuaInline ''
|
||||
require("lspkind").cmp_format(${toLuaObject cfg.setupOpts})
|
||||
'');
|
||||
};
|
||||
|
||||
blink-cmp = mkIf usingBlink {
|
||||
setupOpts.appearance.kind_icons = mkLuaInline ''
|
||||
require("lspkind").symbol_map
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
in {
|
||||
config = mkIf (cfg.enable && cfg.lspsaga.enable) {
|
||||
vim = {
|
||||
startPlugins = ["lspsaga"];
|
||||
startPlugins = ["lspsaga-nvim"];
|
||||
|
||||
maps = {
|
||||
visual = mkSetLuaBinding mappings.codeAction "require('lspsaga.codeaction').range_code_action";
|
||||
|
|
|
@ -14,7 +14,7 @@ in {
|
|||
{
|
||||
vim = {
|
||||
startPlugins = [
|
||||
"none-ls"
|
||||
"none-ls-nvim"
|
||||
"plenary-nvim"
|
||||
];
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
inherit (lib.types) bool str nullOr;
|
||||
inherit (lib.modules) mkRenamedOptionModule;
|
||||
inherit (lib.nvim.types) mkPluginSetupOption;
|
||||
|
||||
autocompleteCfg = config.vim.autocomplete;
|
||||
in {
|
||||
imports = let
|
||||
renamedSetupOption = oldPath: newPath:
|
||||
|
@ -42,7 +44,7 @@ in {
|
|||
# If using nvim-cmp, otherwise set to false
|
||||
type = bool;
|
||||
description = "If using nvim-cmp, otherwise set to false";
|
||||
default = config.vim.autocomplete.nvim-cmp.enable;
|
||||
default = autocompleteCfg.nvim-cmp.enable || autocompleteCfg.blink-cmp.enable;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -13,9 +13,7 @@ in {
|
|||
config = mkIf cfg.enable (mkMerge [
|
||||
{
|
||||
vim = {
|
||||
startPlugins = [
|
||||
"orgmode-nvim"
|
||||
];
|
||||
startPlugins = ["orgmode"];
|
||||
|
||||
binds.whichKey.register = pushDownDefault {
|
||||
"<leader>o" = "+Notes";
|
||||
|
|
|
@ -15,7 +15,7 @@ in {
|
|||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = [
|
||||
"todo-comments"
|
||||
"todo-comments-nvim"
|
||||
];
|
||||
|
||||
maps.normal = mkMerge [
|
||||
|
|
|
@ -15,7 +15,7 @@ in {
|
|||
vim = {
|
||||
startPlugins =
|
||||
[
|
||||
"nvim-session-manager"
|
||||
"neovim-session-manager"
|
||||
"plenary-nvim"
|
||||
]
|
||||
++ optionals cfg.usePicker ["dressing-nvim"];
|
||||
|
|
|
@ -20,7 +20,7 @@ in {
|
|||
after = cfg.loaders;
|
||||
};
|
||||
startPlugins = cfg.providers;
|
||||
autocomplete.nvim-cmp = {
|
||||
autocomplete.nvim-cmp = mkIf config.vim.autocomplete.nvim-cmp.enable {
|
||||
sources = {luasnip = "[LuaSnip]";};
|
||||
sourcePlugins = ["cmp-luasnip"];
|
||||
};
|
||||
|
|
|
@ -34,7 +34,7 @@ in {
|
|||
})
|
||||
(mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["lualine"];
|
||||
startPlugins = ["lualine-nvim"];
|
||||
pluginRC.lualine = entryAnywhere ''
|
||||
local lualine = require('lualine')
|
||||
lualine.setup ${toLuaObject cfg.setupOpts}
|
||||
|
|
|
@ -20,7 +20,8 @@ in {
|
|||
vim = {
|
||||
startPlugins = ["nvim-treesitter"];
|
||||
|
||||
autocomplete.nvim-cmp = {
|
||||
# cmp-treesitter doesn't work on blink.cmp
|
||||
autocomplete.nvim-cmp = mkIf config.vim.autocomplete.nvim-cmp.enable {
|
||||
sources = {treesitter = "[Treesitter]";};
|
||||
sourcePlugins = ["cmp-treesitter"];
|
||||
};
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["smartcolumn"];
|
||||
startPlugins = ["smartcolumn-nvim"];
|
||||
|
||||
pluginRC.smartcolumn = entryAnywhere ''
|
||||
require("smartcolumn").setup(${toLuaObject cfg.setupOpts})
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["which-key"];
|
||||
startPlugins = ["which-key-nvim"];
|
||||
|
||||
pluginRC.whichkey = entryAnywhere ''
|
||||
local wk = require("which-key")
|
||||
|
|
|
@ -9,9 +9,7 @@
|
|||
cfg = config.vim.utility.ccc;
|
||||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim.startPlugins = [
|
||||
"ccc"
|
||||
];
|
||||
vim.startPlugins = ["ccc-nvim"];
|
||||
|
||||
vim.pluginRC.ccc = entryAnywhere ''
|
||||
local ccc = require("ccc")
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
./binds
|
||||
./ccc
|
||||
./diffview
|
||||
./fzf-lua
|
||||
./gestures
|
||||
./icon-picker
|
||||
./images
|
||||
|
@ -13,8 +14,7 @@
|
|||
./surround
|
||||
./telescope
|
||||
./wakatime
|
||||
./surround
|
||||
./preview
|
||||
./fzf-lua
|
||||
./yanky-nvim
|
||||
./leetcode-nvim
|
||||
];
|
||||
}
|
||||
|
|
26
modules/plugins/utility/leetcode-nvim/config.nix
Normal file
26
modules/plugins/utility/leetcode-nvim/config.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
|
||||
cfg = config.vim.utility.leetcode-nvim;
|
||||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = [
|
||||
"leetcode-nvim"
|
||||
"plenary-nvim"
|
||||
"fzf-lua"
|
||||
"nui-nvim"
|
||||
];
|
||||
|
||||
lazy.plugins.leetcode-nvim = {
|
||||
package = "leetcode-nvim";
|
||||
setupModule = "leetcode";
|
||||
inherit (cfg) setupOpts;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
6
modules/plugins/utility/leetcode-nvim/default.nix
Normal file
6
modules/plugins/utility/leetcode-nvim/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./leetcode-nvim.nix
|
||||
./config.nix
|
||||
];
|
||||
}
|
74
modules/plugins/utility/leetcode-nvim/leetcode-nvim.nix
Normal file
74
modules/plugins/utility/leetcode-nvim/leetcode-nvim.nix
Normal file
|
@ -0,0 +1,74 @@
|
|||
{lib, ...}: let
|
||||
inherit (lib.options) mkOption mkEnableOption;
|
||||
inherit (lib.types) enum str bool;
|
||||
inherit (lib.generators) mkLuaInline;
|
||||
inherit (lib.nvim.types) mkPluginSetupOption luaInline;
|
||||
in {
|
||||
options.vim.utility = {
|
||||
leetcode-nvim = {
|
||||
enable = mkEnableOption "complementary neovim plugin for leetcode.nvim";
|
||||
|
||||
setupOpts = mkPluginSetupOption "leetcode-nvim" {
|
||||
logging = mkEnableOption "logging for leetcode.nvim status notifications." // {default = true;};
|
||||
image_support = mkEnableOption "question description images using image.nvim (image-nvim must be enabled).";
|
||||
|
||||
lang = mkOption {
|
||||
type = enum [
|
||||
"cpp"
|
||||
"java"
|
||||
"python"
|
||||
"python3"
|
||||
"c"
|
||||
"csharp"
|
||||
"javascript"
|
||||
"typescript"
|
||||
"php"
|
||||
"swift"
|
||||
"kotlin"
|
||||
"dart"
|
||||
"golang"
|
||||
"ruby"
|
||||
"scala"
|
||||
"rust"
|
||||
"racket"
|
||||
"erlang"
|
||||
"elixir"
|
||||
"bash"
|
||||
];
|
||||
default = "python3";
|
||||
description = "Language to start your session with";
|
||||
};
|
||||
|
||||
arg = mkOption {
|
||||
type = str;
|
||||
default = "leetcode.nvim";
|
||||
description = "Argument for Neovim";
|
||||
};
|
||||
|
||||
cn = {
|
||||
enabled = mkEnableOption "leetcode.cn instead of leetcode.com";
|
||||
translator = mkEnableOption "translator" // {default = true;};
|
||||
translate_problems = mkEnableOption "translation for problem questions" // {default = true;};
|
||||
};
|
||||
|
||||
storage = {
|
||||
home = mkOption {
|
||||
type = luaInline;
|
||||
default = mkLuaInline "vim.fn.stdpath(\"data\") .. \"/leetcode\"";
|
||||
description = "Home storage directory";
|
||||
};
|
||||
|
||||
cache = mkOption {
|
||||
type = luaInline;
|
||||
default = mkLuaInline "vim.fn.stdpath(\"cache\") .. \"/leetcode\"";
|
||||
description = "Cache storage directory";
|
||||
};
|
||||
};
|
||||
|
||||
plugins = {
|
||||
non_standalone = mkEnableOption "leetcode.nvim in a non-standalone mode";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -38,7 +38,7 @@ in {
|
|||
default = false;
|
||||
description = ''
|
||||
nvim-surround: add/change/delete surrounding delimiter pairs with ease.
|
||||
Note that the default mappings deviate from upstreeam to avoid conflicts
|
||||
Note that the default mappings deviate from upstream to avoid conflicts
|
||||
with nvim-leap.
|
||||
'';
|
||||
};
|
||||
|
|
|
@ -99,12 +99,6 @@
|
|||
type = float;
|
||||
default = 0.55;
|
||||
};
|
||||
|
||||
results_width = mkOption {
|
||||
description = "";
|
||||
type = float;
|
||||
default = 0.8;
|
||||
};
|
||||
};
|
||||
|
||||
vertical = {
|
||||
|
|
32
modules/plugins/utility/yanky-nvim/config.nix
Normal file
32
modules/plugins/utility/yanky-nvim/config.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.modules) mkIf;
|
||||
inherit (lib.lists) optionals concatLists;
|
||||
inherit (lib.nvim.lua) toLuaObject;
|
||||
inherit (lib.nvim.dag) entryAnywhere;
|
||||
|
||||
cfg = config.vim.utility.yanky-nvim;
|
||||
usingSqlite = cfg.setupOpts.ring.storage == "sqlite";
|
||||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
# TODO: this could probably be lazyloaded. I'm not yet sure which event is
|
||||
# ideal, so it's loaded normally for now.
|
||||
startPlugins = concatLists [
|
||||
["yanky-nvim"]
|
||||
|
||||
# If using the sqlite backend, sqlite-lua must be loaded
|
||||
# alongside yanky.
|
||||
(optionals usingSqlite [pkgs.vimPlugins.sqlite-lua])
|
||||
];
|
||||
|
||||
pluginRC.yanky-nvim = entryAnywhere ''
|
||||
require("yanky").setup(${toLuaObject cfg.setupOpts});
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
6
modules/plugins/utility/yanky-nvim/default.nix
Normal file
6
modules/plugins/utility/yanky-nvim/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./config.nix
|
||||
./yanky-nvim.nix
|
||||
];
|
||||
}
|
28
modules/plugins/utility/yanky-nvim/yanky-nvim.nix
Normal file
28
modules/plugins/utility/yanky-nvim/yanky-nvim.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{lib, ...}: let
|
||||
inherit (lib.options) mkEnableOption mkOption;
|
||||
inherit (lib.types) enum;
|
||||
in {
|
||||
options.vim.utility.yanky-nvim = {
|
||||
enable = mkEnableOption ''
|
||||
improved Yank and Put functionalities for Neovim [yanky-nvim]
|
||||
'';
|
||||
|
||||
setupOpts = {
|
||||
ring.storage = mkOption {
|
||||
type = enum ["shada" "sqlite" "memory"];
|
||||
default = "shada";
|
||||
example = "sqlite";
|
||||
description = ''
|
||||
storage mode for ring values.
|
||||
|
||||
- shada: this will save pesistantly using Neovim ShaDa feature.
|
||||
This means that history will be persisted between each session of Neovim.
|
||||
- memory: each Neovim instance will have his own history and it will be
|
||||
lost between sessions.
|
||||
- sqlite: more reliable than `shada`, requires `sqlite.lua` as a dependency.
|
||||
nvf will add this dependency to `PATH` automatically.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -13,7 +13,7 @@
|
|||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["cellular-automaton"];
|
||||
startPlugins = ["cellular-automaton-nvim"];
|
||||
|
||||
maps.normal = mkBinding cfg.mappings.makeItRain "<cmd>CellularAutomaton make_it_rain<CR>" "Make it rain";
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["highlight-undo"];
|
||||
startPlugins = ["highlight-undo-nvim"];
|
||||
|
||||
pluginRC.highlight-undo = entryAnywhere ''
|
||||
require("highlight-undo").setup(${toLuaObject cfg.setupOpts})
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["indent-blankline"];
|
||||
startPlugins = ["indent-blankline-nvim"];
|
||||
|
||||
pluginRC.indent-blankline = entryAnywhere ''
|
||||
require("ibl").setup(${toLuaObject cfg.setupOpts})
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
cfg = config.vim.visuals.rainbow-delimiters;
|
||||
in {
|
||||
vim = mkIf cfg.enable {
|
||||
startPlugins = ["rainbow-delimiters"];
|
||||
startPlugins = ["rainbow-delimiters-nvim"];
|
||||
|
||||
pluginRC.rainbow-delimiters = entryAnywhere ''
|
||||
vim.g.rainbow_delimiters = ${toLuaObject cfg.setupOpts}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim = {
|
||||
startPlugins = ["tiny-devicons-auto-colors" "nvim-web-devicons"];
|
||||
startPlugins = ["tiny-devicons-auto-colors-nvim" "nvim-web-devicons"];
|
||||
|
||||
pluginRC.tiny-devicons-auto-colors = entryAnywhere ''
|
||||
require("tiny-devicons-auto-colors").setup(${toLuaObject cfg.setupOpts})
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue