diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 436a68ec..d85c28da 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -16,7 +16,7 @@ If you have any questions regarding those files, feel free to open an issue or [
## Contributing
-The contribution process is mostly documented in the [pull request template](.github/pull_request_template.md). You will find a checklist of items to complete before submitting a pull request. Please make sure you complete it before submitting a pull request. If you are unsure about any of the items, please ask.
+The contribution process is mostly documented in the [pull request template](pull_request_template.md). You will find a checklist of items to complete before submitting a pull request. Please make sure you complete it before submitting a pull request. If you are unsure about any of the items, please ask.
### Guidelines
diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
deleted file mode 100644
index ca65c8b2..00000000
--- a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# Description
-
-A clear and concise description of the aim of your Pull Request.
-
-**If your pull request aims to fix an open issue or a present bug, please link the relevant issue below. If not, please remove this section**
-Fixes #(issue)
-
-## Type of change
-
-Please delete any options that are not relevant.
-
-- Bug fix (non-breaking change which fixes an issue)
-- New feature (non-breaking change which adds functionality)
-- Breaking change (fix or feature that would cause existing functionality to not work as expected)
-- Translation/Language update
-- Docs
-- Other
-
-## Checklist
-
-Please try to check at least a majority of the checklist before opening your pull request. Exceptions to this will be reviewed on a case by case basis.
-
-- [ ] My code follows the style and contributing guidelines of this project.
-- [ ] I ran Alejandra to format my code (`nix fmt`).
-- [ ] I have performed a self-review of my own code and tested it.
-- [ ] I have commented my code, particularly in hard-to-understand areas.
-- [ ] My changes generate no new warnings.
-- [ ] This change requires a documentation update.
-- [ ] I have updated the documentation accordingly.
-
-## Screenshots & Logs
-
-You are kindly requested to attach screenshots of your changes in actions and preferably your build/run logs for all available packages. If you are not sure how to do this, you can refer to the [documentation](https://notashelf.github.io/neovim-flake/).
-
-**Please do not use any external image service. Instead, just paste in or drag and drop the image here, and it will be uploaded automatically.**
-
-```console
-# Paste your logs here
-```
diff --git a/.github/README.md b/.github/README.md
index 06c9eb7d..531d062b 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -33,10 +33,9 @@
@@ -44,6 +43,7 @@
+[Features]: #features
[Get Started]: #get-started
[Documentation]: #documentation
[Help]: #help
@@ -51,119 +51,156 @@
[FAQ]: #faq
[Credits]: #credits
-**[
Get Started
][Get Started]**
-**[
Documentation
][Documentation]**
-**[
Help
][Help]**
-**[
Contribute
][Contribute]**
-**[
FAQ
][Faq]**
-**[
Credits
][Credits]**
+**[
Features
][Features]**
+**[
Get Started
][Get Started]**
+**[
Documentation
][Documentation]**
+**[
Help
][Help]**
+**[
Contribute
][Contribute]**
+**[
FAQ
][Faq]** **[
Credits
][Credits]**
---
+## Features
+
+- **Reproducible**: Your configuration will behave the same _anywhere_. No
+ surprises, promise!
+- **Portable**: nvf depends _solely_ on your Nix store, and nothing else. No
+ more global binaries! Works on all platforms, without hassle.
+- **Customizable**: There are _almost no defaults_ to annoy you. nvf is fully
+ customizable through the Nix module system.
+- **Well-documented**: Documentation is priority. You will _never_ face
+ undocumented, obscure behaviour.
+- **Idiomatic**: nvf does things ✨ _the right way_ ✨ - the codebase is, and
+ will, remain maintainable for myself and any contributors.
+
## Get Started
-### Using `nix` CLI
+[nvf manual]: https://notashelf.github.io/nvf/
+[issue tracker]: https://github.com/NotAShelf/nvf/issues
-If you would like to try out the configuration before even thinking about
-installing it, you can run the following command
+If you are not sold on the concepts of **nvf**, and would like to try out the
+default configuration before even _thinking about_ installing it, you may run
+the following in order to take **nvf** out for a spin.
-```console
+```bash
+# Run the default package
nix run github:notashelf/nvf
```
-This will get you a feel for the base configuration and UI design.
-The flake exposes `#nix` as the default package, providing minimal
-language support and various utilities.You may also use `#nix`,
-`#tidal` or `#maximal` to get try out different configurations.
+This will get you a feel for the base configuration and UI design. Though, none
+of the configuration options are final as **nvf** is designed to be modular and
+configurable.
-It is as simple as changing the target output to get a different
-configuration. For example, to get a configuration with `tidal` support, run:
+> [!TIP]
+> The flake exposes `#nix` as the default package, providing minimal language
+> support and various utilities. You may also use the `#nix` or `#maximal`
+> packages provided by the this flake to get try out different configurations.
-```console
-nix run github:notashelf/nvf#tidal
+It is as simple as changing the target output to get a different configuration.
+For example, to get a configuration with large language coverage, run:
+
+```bash
+# Run the maximal package
+nix run github:notashelf/nvf#maximal
```
Similar instructions will apply for `nix profile install`. However, you are
recommended to instead use the module system as described in the manual.
-> [!NOTE]
-> The `maximal` configuration is _massive_ and will take a while to build.
-> To get a feel for the configuration, use the default `nix` or `tidal`
-> configurations. Should you choose to try out the `maximal` configuration,
-> using the binary cache as described in the manual is _strongly_ recommended.
+> [!NOTE]
+> The `maximal` configuration is quite large, and might take a while to build.
+> To get a feel for the configuration, use the default `nix` configuration.
+> Should you choose to try out the `maximal` configuration, using the binary
+> cache as described in the manual is _strongly_ recommended.
+
+If you are convinced, proceed to the next section to view the installation
+instructions.
## Documentation
-See the [**nvf** Manual](https://notashelf.github.io/nvf/) for
-detailed installation guides, configurations, available options, release notes
-and more. Tips for installing userspace plugins is also contained in the
-documentation.
+The _recommended_ way of installing **nvf** is using either the NixOS or the
+Home-Manager module, though it is completely possible and no less supported to
+install **nvf** as a standalone package, or a flake output.
-If you want to dive right into trying **nvf** you can get a fully
-featured configuration with `nix` language support by running:
+See the rendered [nvf manual] for detailed and up-to-date installation guides,
+configurations, available options, release notes and more. Tips for installing
+userspace plugins is also contained in the documentation.
-```console
-nix run github:notashelf/nvf#nix
-```
+> [!TIP]
+> While using NixOS or Home-Manager modules,
+> `programs.nvf.enableManpages = true;` will allow you to view option
+> documentation from the comfort of your terminal via `man 5 nvf`. The more you
+> know.
-[Issues]: https://github.com/NotAShelf/nvf/issues
-
-Please create an issue on the [issue tracker](issues) if you find
-the documentation lacking or confusing. I also appreciate any contributions
-to the documentation.
+Please create an issue on the [issue tracker] if you find the documentation
+lacking or confusing. Any improvements to the documentation through pull
+requests are also welcome, and appreciated.
## Help
-You can create an issue on the [issue tracker](issues) to ask questions
-or report bugs. I am not yet on spaces like matrix or IRC, so please use the issue
-tracker for now.
+You can create an issue on the [issue tracker] to ask questions or report bugs.
+I am not yet on spaces like matrix or IRC, so please use the issue tracker for
+now.
## Contributing
I am always looking for new ways to help improve this flake. If you would like
to contribute, please read the [contributing guide](CONTRIBUTING.md) before
-submitting a pull request. You can also create an issue on the
-[issue tracker](issues) before submitting a pull request if you would
-like to discuss a feature or bug fix.
+submitting a pull request. You can also create an issue on the [issue tracker]
+before submitting a pull request if you would like to discuss a feature or bug
+fix.
## FAQ
+[appropriate issue template]: https://github.com/NotAShelf/nvf/issues/new/choose
+[list of branches]: https://github.com/NotAShelf/nvf/branches
+[list of open pull requests]: https://github.com/NotAShelf/nvf/pulls
+
+**Q**: What platforms are supported?
+
**A**: nvf actively supports Linux and Darwin platforms using standalone
+Nix, NixOS or Home-Manager. Please take a look at the
+
**Q**: Can you add _X_?
-
-**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 [appropritate issue template](issues/new/choose) and I will
-consider a module addition.
+
**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, PRs adding new features are also welcome.
**Q**: A plugin I need is not available in **nvf**. What to do?
-
-**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?
-
-**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 available to the end user. If you have
-not noticed any activity on the main branch, consider taking a look at the [list
-of branches](https://github.com/NotAShelf/nvf/branches=) or the [list of open
-pull requests](https://github.com/NotAShelf/nvf)
+
**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.
## Credits
### Contributors
-Special thanks to
+Special, heart-felt thanks to
- [@fufexan](https://github.com/fufexan) - For the transition to flake-parts
-- [@FlafyDev](https://github.com/FlafyDev) - For getting the home-manager to work
-- [@n3oney](https://github.com/n3oney) - For making custom keybinds finally possible
-- [@horriblename](https://github.com/horriblename) - For actively implementing planned features and quality of life updates
+- [@FlafyDev](https://github.com/FlafyDev) - For getting the home-manager to
+ work
+- [@n3oney](https://github.com/n3oney) - For making custom keybinds finally
+ possible
+- [@horriblename](https://github.com/horriblename) - For actively implementing
+ planned features and quality of life updates
- [@Yavko](https://github.com/Yavko) - For the amazing **nvf** logo
-- [@FrothyMarrow](https://github.com/FrothyMarrow) - For seeing mistakes that I could not
+- [@FrothyMarrow](https://github.com/FrothyMarrow) - For seeing mistakes that I
+ could not
+- [@Diniamo](https://github.com/Diniamo) - For actively submitting PRs, pull
+ requests and overall assistence
+- [@Gerg-l](https://github.com/gerg-l) - For the modern Neovim wrapper, mnw and
+ occasional code improvements
and everyone who has submitted issues or pull requests!
@@ -172,10 +209,18 @@ and everyone who has submitted issues or pull requests!
This configuration borrows from and is based on a few other configurations,
including:
-- [@jordanisaacs's](https://github.com/jordanisaacs) [neovim-flake](https://github.com/jordanisaacs/neovim-flake) that this flake is originally based on.
-- [@sioodmy's](https://github.com/sioodmy) [dotfiles](https://github.com/sioodmy/dotfiles) that inspired the design choices.
-- [@wiltaylor's](https://github.com/wiltaylor) [neovim-flake](https://github.com/wiltaylor/neovim-flake) for plugin and design ideas.
-- [@gvolpe's](https://github.com/gvolpe) [neovim-flake](https://github.com/gvolpe/neovim-flake) for plugin, design and nix concepts.
+- [@jordanisaacs's](https://github.com/jordanisaacs)
+ [neovim-flake](https://github.com/jordanisaacs/neovim-flake) that this flake
+ is originally based on.
+- [@sioodmy's](https://github.com/sioodmy)
+ [dotfiles](https://github.com/sioodmy/dotfiles) that inspired the design
+ choices.
+- [@wiltaylor's](https://github.com/wiltaylor)
+ [neovim-flake](https://github.com/wiltaylor/neovim-flake) for plugin and
+ design ideas.
+- [@gvolpe's](https://github.com/gvolpe)
+ [neovim-flake](https://github.com/gvolpe/neovim-flake) for plugin, design and
+ nix concepts.
I am grateful for their previous work and inspiration, and I wholeheartedly
recommend checking their work out.
@@ -183,11 +228,14 @@ recommend checking their work out.
## License
-Following the license of the [original neovim-flake](https://github.com/jordanisaacs/neovim-flake),
-**nvf** has been made available under the [**MIT License**](LICENSE). However, all assets
-and documentation are published under the
+Following the license of the
+[original neovim-flake](https://github.com/jordanisaacs/neovim-flake), **nvf**
+has been made available under the [**MIT License**](LICENSE). However, all
+assets and documentation are published under the
[**CC BY License**](https://github.com/NotAShelf/nvf/blob/main/.github/assets/LICENSE).
+Yes, this includes the logo work too. Stop taking artwork that is not yours!
+
---
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..7768d36e
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,57 @@
+
+
+## Sanity Checking
+
+
+
+[editorconfig]: https://editorconfig.org
+[changelog]: https://github.com/NotAShelf/nvf/tree/main/docs/release-notes
+
+- [ ] I have updated the [changelog] as per my changes.
+- [ ] I have tested, and self-reviewed my code.
+- Style and consistency
+ - [ ] I ran **Alejandra** to format my code (`nix fmt`).
+ - [ ] My code conforms to the [editorconfig] configuration of the project.
+ - [ ] My changes are consistent with the rest of the codebase.
+- If new changes are particularly complex:
+ - [ ] My code includes comments in particularly complex areas
+ - [ ] I have added a section in the manual.
+ - [ ] _(For breaking changes)_ I have included a migration guide.
+- Package(s) built:
+ - [ ] `.#nix` (default package)
+ - [ ] `.#maximal`
+ - [ ] `.#docs-html`
+- Tested on platform(s)
+ - [ ] `x86_64-linux`
+ - [ ] `aarch64-linux`
+ - [ ] `x86_64-darwin`
+ - [ ] `aarch64-darwin`
+
+
+
+---
+
+Add a :+1: [reaction] to [pull requests you find important].
+
+[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
+[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc
diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml
new file mode 100644
index 00000000..204dcba7
--- /dev/null
+++ b/.github/workflows/cleanup.yml
@@ -0,0 +1,22 @@
+name: Cleanup
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: "0 4 1 * *" # 4AM on 1st of every month
+ - cron: "0 4 15 * *" # 4AM on the 15th of every month
+jobs:
+ branches:
+ name: Cleanup old branches
+ runs-on: ubuntu-latest
+ steps:
+ - name: "Checkout"
+ uses: actions/checkout@v4
+
+ - name: "Delete old branches"
+ uses: beatlabs/delete-old-branches-action@v0.0.10
+ with:
+ repo_token: "${{ secrets.GITHUB_TOKEN }}"
+ date: "1 months ago"
+ dry_run: false
+ delete_tags: false
+ exclude_open_pr_branches: true
diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml
index 34c11ffe..23381e4e 100644
--- a/.github/workflows/manual.yml
+++ b/.github/workflows/manual.yml
@@ -1,4 +1,5 @@
name: "Build and deploy documentation"
+
on:
workflow_dispatch:
push:
@@ -7,6 +8,7 @@ on:
paths:
# build the manuals only when docs directory is updated
- docs/**
+ - modules/**
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
@@ -20,23 +22,34 @@ concurrency:
cancel-in-progress: true
jobs:
+ check_date:
+ runs-on: ubuntu-latest
+ name: Check latest commit
+ outputs:
+ should_run: ${{ steps.should_run.outputs.should_run }}
+ steps:
+ - uses: actions/checkout@v4.1.7
+ - name: print latest_commit
+ run: echo ${{ github.sha }}
+
+ - id: should_run
+ continue-on-error: true
+ name: check latest commit is less than a day
+ if: ${{ github.event_name == 'schedule' }}
+ run: test -z $(git rev-list --after="24 hours" ${{ github.sha }}) && echo "::set-output name=should_run::false"
+
publish:
+ needs: check_date
+ if: ${{ needs.check_date.outputs.should_run != 'false' }}
runs-on: ubuntu-latest
steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Install Nix
- uses: DeterminateSystems/nix-installer-action@main
+ - uses: actions/checkout@v4.1.7
+ - uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
-
- - name: Build
- run: |
- nix build '.#docs'
+ - run: |
+ nix build .#docs
cp -r result/share/doc/nvf public
-
- - name: Deploy
- uses: peaceiris/actions-gh-pages@v4
+ - uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
diff --git a/configuration.nix b/configuration.nix
index 74790128..01a99524 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -19,6 +19,7 @@ isMaximal: {
lspsaga.enable = false;
trouble.enable = true;
lspSignature.enable = true;
+ otter-nvim.enable = isMaximal;
lsplines.enable = isMaximal;
nvim-docs-view.enable = isMaximal;
};
@@ -45,48 +46,50 @@ isMaximal: {
nix.enable = true;
+ # Assembly is not common, and the asm LSP is a major hit-or-miss
+ assembly.enable = false;
markdown.enable = isMaximal;
html.enable = isMaximal;
css.enable = isMaximal;
sql.enable = isMaximal;
java.enable = isMaximal;
+ kotlin.enable = isMaximal;
ts.enable = isMaximal;
svelte.enable = isMaximal;
go.enable = isMaximal;
+ lua.enable = isMaximal;
elixir.enable = isMaximal;
zig.enable = isMaximal;
ocaml.enable = isMaximal;
python.enable = isMaximal;
dart.enable = isMaximal;
bash.enable = isMaximal;
+ r.enable = isMaximal;
tailwind.enable = isMaximal;
typst.enable = isMaximal;
- clang = {
- enable = isMaximal;
- lsp.server = "clangd";
- };
-
+ clang.enable = isMaximal;
+ scala.enable = isMaximal;
rust = {
enable = isMaximal;
crates.enable = isMaximal;
};
+ csharp.enable = isMaximal;
+ julia.enable = isMaximal;
+ vala.enable = isMaximal;
};
visuals = {
- enable = true;
- nvimWebDevicons.enable = true;
- scrollBar.enable = isMaximal;
- smoothScroll.enable = true;
- cellularAutomaton.enable = false;
+ nvim-scrollbar.enable = isMaximal;
+ nvim-web-devicons.enable = true;
+ nvim-cursorline.enable = true;
+ cinnamon-nvim.enable = true;
fidget-nvim.enable = true;
+
highlight-undo.enable = true;
+ indent-blankline.enable = true;
- indentBlankline.enable = true;
-
- cursorline = {
- enable = true;
- lineTimeout = 0;
- };
+ # Fun
+ cellular-automaton.enable = false;
};
statusline = {
@@ -103,15 +106,13 @@ isMaximal: {
transparent = false;
};
- autopairs.enable = true;
+ autopairs.nvim-autopairs.enable = true;
- autocomplete = {
- enable = true;
- type = "nvim-cmp";
- };
+ autocomplete.nvim-cmp.enable = true;
+ snippets.luasnip.enable = true;
filetree = {
- nvimTree = {
+ neo-tree = {
enable = true;
};
};
@@ -154,7 +155,7 @@ isMaximal: {
};
utility = {
- ccc.enable = isMaximal;
+ ccc.enable = false;
vim-wakatime.enable = false;
icon-picker.enable = isMaximal;
surround.enable = isMaximal;
@@ -162,6 +163,7 @@ isMaximal: {
motion = {
hop.enable = true;
leap.enable = true;
+ precognition.enable = isMaximal;
};
images = {
@@ -171,6 +173,7 @@ isMaximal: {
notes = {
obsidian.enable = false; # FIXME: neovim fails to build if obsidian is enabled
+ neorg.enable = false;
orgmode.enable = false;
mind-nvim.enable = isMaximal;
todo-comments.enable = true;
diff --git a/docs/default.nix b/docs/default.nix
index b48daf5b..48cff563 100644
--- a/docs/default.nix
+++ b/docs/default.nix
@@ -2,131 +2,131 @@
inputs,
pkgs,
lib,
- manpageUrls ? pkgs.path + "/doc/manpage-urls.json",
- ...
}: let
- inherit (lib.modules) mkForce evalModules;
- inherit (lib.strings) hasPrefix removePrefix;
- inherit (lib.attrsets) isAttrs mapAttrs optionalAttrs recursiveUpdate isDerivation;
- inherit (builtins) fromJSON readFile;
+ inherit ((lib.importJSON ../release.json)) release;
- # release data
- release-config = fromJSON (readFile ../release.json);
- revision = release-config.release;
-
- # From home-manager:
- #
- # Recursively replace each derivation in the given attribute set
- # with the same derivation but with the `outPath` attribute set to
- # the string `"\${pkgs.attribute.path}"`. This allows the
- # documentation to refer to derivations through their values without
- # establishing an actual dependency on the derivation output.
- #
- # This is not perfect, but it seems to cover a vast majority of use
- # cases.
- #
- # Caveat: even if the package is reached by a different means, the
- # path above will be shown and not e.g.
- # `${config.services.foo.package}`.
- scrubDerivations = prefixPath: attrs: let
- scrubDerivation = name: value: let
- pkgAttrName = prefixPath + "." + name;
- in
- if isAttrs value
- then
- scrubDerivations pkgAttrName value
- // optionalAttrs (isDerivation value) {
- outPath = "\${${pkgAttrName}}";
- }
- else value;
- in
- mapAttrs scrubDerivation attrs;
-
- # Make sure the used package is scrubbed to avoid actually
- # instantiating derivations.
- scrubbedPkgsModule = {
- imports = [
- {
- _module.args = {
- pkgs = mkForce (scrubDerivations "pkgs" pkgs);
- pkgs_i686 = mkForce {};
- };
- }
- ];
- };
-
- # Specify the path to the module entrypoint
- nvimPath = toString ./..;
- buildOptionsDocs = args @ {
- modules,
- includeModuleSystemOptions ? true,
- warningsAreErrors ? true,
- ...
- }: let
- inherit ((evalModules {inherit modules;})) options;
-
- # Declaration of the Github site URL.
- # Takes a user, repo, and subpath, and returns a declaration site
- # as a string.
- githubDeclaration = user: repo: subpath: let
- urlRef = "github.com";
- branch = "main";
- in {
- url = "https://${urlRef}/${user}/${repo}/blob/${branch}/${subpath}";
- name = "<${repo}/${subpath}>";
- };
- in
- pkgs.buildPackages.nixosOptionsDoc ({
- inherit warningsAreErrors;
-
- options =
- if includeModuleSystemOptions
- then options
- else builtins.removeAttrs options ["_module"];
-
- transformOptions = opt:
- recursiveUpdate opt {
- # Clean up declaration sites to not refer to the nvf
- # source tree.
- declarations = map (decl:
- if hasPrefix nvimPath (toString decl)
- then
- githubDeclaration "notashelf" "nvf"
- (removePrefix "/" (removePrefix nvimPath (toString decl)))
- else if decl == "lib/modules.nix"
- then
- # TODO: handle this in a better way (may require upstream
- # changes to nixpkgs)
- githubDeclaration "NixOS" "nixpkgs" decl
- else decl)
- opt.declarations;
- };
- }
- // builtins.removeAttrs args ["modules" "includeModuleSystemOptions"]);
-
- nvimModuleDocs = buildOptionsDocs {
+ nvimModuleDocs = pkgs.nixosOptionsDoc {
variablelistId = "nvf-options";
+ warningsAreErrors = true;
- modules =
- import ../modules/modules.nix {
- inherit lib pkgs;
- check = false;
- }
- ++ [scrubbedPkgsModule];
+ inherit
+ (
+ (lib.evalModules {
+ modules =
+ import ../modules/modules.nix {
+ inherit lib pkgs;
+ }
+ ++ [
+ (
+ let
+ # From nixpkgs:
+ #
+ # Recursively replace each derivation in the given attribute set
+ # with the same derivation but with the `outPath` attribute set to
+ # the string `"\${pkgs.attribute.path}"`. This allows the
+ # documentation to refer to derivations through their values without
+ # establishing an actual dependency on the derivation output.
+ #
+ # This is not perfect, but it seems to cover a vast majority of use
+ # cases.
+ #
+ # Caveat: even if the package is reached by a different means, the
+ # path above will be shown and not e.g.
+ # `${config.services.foo.package}`.
+ scrubDerivations = namePrefix: pkgSet:
+ builtins.mapAttrs (
+ name: value: let
+ wholeName = "${namePrefix}.${name}";
+ in
+ if builtins.isAttrs value
+ then
+ scrubDerivations wholeName value
+ // lib.optionalAttrs (lib.isDerivation value) {
+ inherit (value) drvPath;
+ outPath = "\${${wholeName}}";
+ }
+ else value
+ )
+ pkgSet;
+ in {
+ _module = {
+ check = false;
+ args.pkgs = lib.mkForce (scrubDerivations "pkgs" pkgs);
+ };
+ }
+ )
+ ];
+ })
+ )
+ options
+ ;
+
+ transformOptions = opt:
+ opt
+ // {
+ declarations =
+ map (
+ decl:
+ if lib.hasPrefix (toString ../.) (toString decl)
+ then
+ lib.pipe decl [
+ toString
+ (lib.removePrefix (toString ../.))
+ (lib.removePrefix "/")
+ (x: {
+ url = "https://github.com/NotAShelf/nvf/blob/main/${x}";
+ name = "";
+ })
+ ]
+ else if decl == "lib/modules.nix"
+ then {
+ url = "https://github.com/NixOS/nixpkgs/blob/master/${decl}";
+ name = "";
+ }
+ else decl
+ )
+ opt.declarations;
+ };
};
+ # Generate the HTML manual pages
+ html = pkgs.callPackage ./manual.nix {
+ inherit release;
+ inherit (nvimModuleDocs) optionsJSON;
+ };
+in {
+ inherit (inputs) nmd;
+
+ # TODO: Use `hmOptionsDocs.optionsJSON` directly once upstream
+ # `nixosOptionsDoc` is more customizable.
+ options.json =
+ pkgs.runCommand "options.json" {
+ meta.description = "List of nvf options in JSON format";
+ } ''
+ mkdir -p $out/{share/doc,nix-support}
+ cp -a ${nvimModuleDocs.optionsJSON}/share/doc/nixos $out/share/doc/nvf
+ substitute \
+ ${nvimModuleDocs.optionsJSON}/nix-support/hydra-build-products \
+ $out/nix-support/hydra-build-products \
+ --replace \
+ '${nvimModuleDocs.optionsJSON}/share/doc/nixos' \
+ "$out/share/doc/nvf"
+ '';
+
# Generate the `man home-configuration.nix` package
- nvf-configuration-manual =
+ manPages =
pkgs.runCommand "nvf-reference-manpage" {
- nativeBuildInputs = [pkgs.buildPackages.installShellFiles pkgs.nixos-render-docs];
+ nativeBuildInputs = [
+ pkgs.buildPackages.installShellFiles
+ pkgs.nixos-render-docs
+ ];
allowedReferences = ["out"];
} ''
# Generate manpages.
- mkdir -p $out/share/man/man5
- mkdir -p $out/share/man/man1
+ mkdir -p $out/share/man/{man5,man1}
nixos-render-docs -j $NIX_BUILD_CORES options manpage \
- --revision ${revision} \
+ --revision ${release} \
--header ${./man/header.5} \
--footer ${./man/footer.5} \
${nvimModuleDocs.optionsJSON}/share/doc/nixos/options.json \
@@ -135,38 +135,8 @@
cp ${./man/nvf.1} $out/share/man/man1/nvf.1
'';
- # Generate the HTML manual pages
- nvf-manual = pkgs.callPackage ./manual.nix {
- inherit revision manpageUrls;
- outputPath = "share/doc/nvf";
- options = {
- nvf = nvimModuleDocs.optionsJSON;
- };
+ manual = {
+ inherit html;
+ htmlOpenTool = pkgs.callPackage ./html-open-tool.nix {inherit html;};
};
-
- html = nvf-manual;
- htmlOpenTool = pkgs.callPackage ./html-open-tool.nix {} {inherit html;};
-in {
- inherit (inputs) nmd;
-
- options = {
- # TODO: Use `hmOptionsDocs.optionsJSON` directly once upstream
- # `nixosOptionsDoc` is more customizable.
- json =
- pkgs.runCommand "options.json" {
- meta.description = "List of nvf options in JSON format";
- } ''
- mkdir -p $out/{share/doc,nix-support}
- cp -a ${nvimModuleDocs.optionsJSON}/share/doc/nixos $out/share/doc/nvf
- substitute \
- ${nvimModuleDocs.optionsJSON}/nix-support/hydra-build-products \
- $out/nix-support/hydra-build-products \
- --replace \
- '${nvimModuleDocs.optionsJSON}/share/doc/nixos' \
- "$out/share/doc/nvf"
- '';
- };
-
- manPages = nvf-configuration-manual;
- manual = {inherit html htmlOpenTool;};
}
diff --git a/docs/html-open-tool.nix b/docs/html-open-tool.nix
index 756feba1..d430d24b 100644
--- a/docs/html-open-tool.nix
+++ b/docs/html-open-tool.nix
@@ -2,13 +2,9 @@
writeShellScriptBin,
makeDesktopItem,
symlinkJoin,
-}: {
html,
- pathName ? "nvf",
- projectName ? pathName,
- name ? "${pathName}-help",
}: let
- helpScript = writeShellScriptBin name ''
+ helpScript = writeShellScriptBin "nvf-help" ''
set -euo pipefail
if [[ ! -v BROWSER || -z $BROWSER ]]; then
@@ -24,20 +20,23 @@
echo "$0: unable to start a web browser; please set \$BROWSER"
exit 1
else
- exec "$BROWSER" "${html}/share/doc/${pathName}/index.xhtml"
+ exec "$BROWSER" "${html}/share/doc/nvf/index.xhtml"
fi
'';
desktopItem = makeDesktopItem {
- name = "${pathName}-manual";
- desktopName = "${projectName} Manual";
- genericName = "View ${projectName} documentation in a web browser";
+ name = "nvf-manual";
+ desktopName = "nvf Manual";
+ genericName = "View nvf documentation in a web browser";
icon = "nix-snowflake";
- exec = "${helpScript}/bin/${name}";
+ exec = "${helpScript}/bin/nvf-help";
categories = ["System"];
};
in
symlinkJoin {
- inherit name;
- paths = [helpScript desktopItem];
+ name = "nvf-help";
+ paths = [
+ helpScript
+ desktopItem
+ ];
}
diff --git a/docs/manual.nix b/docs/manual.nix
index 14e8ae27..f5b23d04 100644
--- a/docs/manual.nix
+++ b/docs/manual.nix
@@ -4,11 +4,10 @@
# build inputs
nixos-render-docs,
documentation-highlighter,
+ path,
# nrd configuration
- manpageUrls,
- revision,
- options,
- outputPath ? "share/doc/nvf",
+ release,
+ optionsJSON,
}:
stdenvNoCC.mkDerivation {
name = "nvf-manual";
@@ -20,9 +19,11 @@ stdenvNoCC.mkDerivation {
nativeBuildInputs = [nixos-render-docs];
buildPhase = ''
- mkdir -p out/{highlightjs,media}
+ dest="$out/share/doc/nvf"
+ mkdir -p "$(dirname "$dest")"
+ mkdir -p $dest/{highlightjs,media}
- cp -vt out/highlightjs \
+ cp -vt $dest/highlightjs \
${documentation-highlighter}/highlight.pack.js \
${documentation-highlighter}/LICENSE \
${documentation-highlighter}/mono-blue.css \
@@ -31,38 +32,32 @@ stdenvNoCC.mkDerivation {
substituteInPlace ./options.md \
--subst-var-by \
OPTIONS_JSON \
- ${options.nvf}/share/doc/nixos/options.json
+ ${optionsJSON}/share/doc/nixos/options.json
substituteInPlace ./manual.md \
--subst-var-by \
NVF_VERSION \
- ${revision}
+ ${release}
# copy stylesheet
- cp ${./static/style.css} out/style.css
+ cp ${./static/style.css} "$dest/style.css"
# copy release notes
cp -vr ${./release-notes} release-notes
# generate manual from
nixos-render-docs manual html \
- --manpage-urls ${manpageUrls} \
- --revision ${lib.trivial.revisionWithDefault revision} \
+ --manpage-urls ${path + "/doc/manpage-urls.json"} \
+ --revision ${lib.trivial.revisionWithDefault release} \
--stylesheet style.css \
--script highlightjs/highlight.pack.js \
--script highlightjs/loader.js \
--toc-depth 2 \
--section-toc-depth 1 \
manual.md \
- out/index.xhtml
- '';
+ "$dest/index.xhtml"
- installPhase = ''
- dest="$out/${outputPath}"
- mkdir -p "$(dirname "$dest")"
- mv out "$dest"
-
- mkdir -p $out/nix-support/
- echo "doc manual $dest index.html" >> $out/nix-support/hydra-build-products
+ mkdir -p $out/nix-support/
+ echo "doc manual $dest index.html" >> $out/nix-support/hydra-build-products
'';
}
diff --git a/docs/manual/configuring/custom-plugins.md b/docs/manual/configuring/custom-plugins.md
index c58c4973..76b32ea4 100644
--- a/docs/manual/configuring/custom-plugins.md
+++ b/docs/manual/configuring/custom-plugins.md
@@ -20,6 +20,7 @@ custom plugins that you might have added to your configuration.
```{=include=} sections
custom-plugins/configuring.md
-custom-plugins/new-method.md
-custom-plugins/old-method.md
+custom-plugins/lazy-method.md
+custom-plugins/non-lazy-method.md
+custom-plugins/legacy-method.md
```
diff --git a/docs/manual/configuring/custom-plugins/configuring.md b/docs/manual/configuring/custom-plugins/configuring.md
index 5e837ce1..80ef03a4 100644
--- a/docs/manual/configuring/custom-plugins/configuring.md
+++ b/docs/manual/configuring/custom-plugins/configuring.md
@@ -1,12 +1,32 @@
# Configuring {#sec-configuring-plugins}
-Just making the plugin to your Neovim configuration available might not always
-be enough. In that case, you can write custom lua config using either
-`config.vim.extraPlugins` (which has the `setup` field) or
-`config.vim.luaConfigRC`. The first option uses an attribute set, which maps DAG
-section names to a custom type, which has the fields `package`, `after`,
-`setup`. They allow you to set the package of the plugin, the sections its setup
-code should be after (note that the `extraPlugins` option has its own DAG
+Just making the plugin to your Neovim configuration available might not always be enough. In that
+case, you can write custom lua config using either `config.vim.lazy.plugins.*.setupOpts`
+`config.vim.extraPlugins.*.setup` or `config.vim.luaConfigRC`.
+
+The first option uses an extended version of `lz.n`'s PluginSpec. `setupModule` and `setupOpt` can
+be used if the plugin uses a `require('module').setup(...)` pattern. Otherwise, the `before` and
+`after` hooks should do what you need.
+
+```nix
+{
+ config.vim.lazy.plugins = {
+ aerial.nvim = {
+ # ^^^^^^^^^ this name should match the package.pname or package.name
+ package = aerial-nvim;
+
+ setupModule = "aerial";
+ setupOpts = {option_name = false;};
+
+ after = "print('aerial loaded')";
+ };
+ };
+}
+```
+
+The second option uses an attribute set, which maps DAG section names to a custom type, which has
+the fields `package`, `after`, `setup`. They allow you to set the package of the plugin, the
+sections its setup code should be after (note that the `extraPlugins` option has its own DAG
scope), and the its setup code respectively. For example:
```nix
@@ -24,7 +44,7 @@ config.vim.extraPlugins = with pkgs.vimPlugins; {
}
```
-The second option also uses an attribute set, but this one is resolved as a DAG
+The third option also uses an attribute set, but this one is resolved as a DAG
directly. The attribute names denote the section names, and the values lua code.
For example:
diff --git a/docs/manual/configuring/custom-plugins/lazy-method.md b/docs/manual/configuring/custom-plugins/lazy-method.md
new file mode 100644
index 00000000..c6fd7106
--- /dev/null
+++ b/docs/manual/configuring/custom-plugins/lazy-method.md
@@ -0,0 +1,40 @@
+# Lazy Method {#sec-lazy-method}
+
+As of version **0.7**, we exposed an API for configuring lazy-loaded plugins via
+`lz.n` and `lzn-auto-require`.
+
+```nix
+{
+ config.vim.lazy.plugins = {
+ "aerial.nvim" = {
+ package = pkgs.vimPlugins.aerial-nvim;
+ setupModule = "aerial";
+ setupOpts = {
+ option_name = true;
+ };
+ after = ''
+ -- custom lua code to run after plugin is loaded
+ print('aerial loaded')
+ '';
+
+ # Explicitly mark plugin as lazy. You don't need this if you define one of
+ # the trigger "events" below
+ lazy = true;
+
+ # load on command
+ cmd = ["AerialOpen"];
+
+ # load on event
+ event = ["BufEnter"];
+
+ # load on keymap
+ keys = [
+ {
+ key = "a";
+ action = ":AerialToggle";
+ }
+ ];
+ };
+ };
+}
+```
diff --git a/docs/manual/configuring/custom-plugins/old-method.md b/docs/manual/configuring/custom-plugins/legacy-method.md
similarity index 96%
rename from docs/manual/configuring/custom-plugins/old-method.md
rename to docs/manual/configuring/custom-plugins/legacy-method.md
index 3b9d090e..0a6b3775 100644
--- a/docs/manual/configuring/custom-plugins/old-method.md
+++ b/docs/manual/configuring/custom-plugins/legacy-method.md
@@ -1,4 +1,4 @@
-# Old Method {#sec-old-method}
+# Legacy Method {#sec-legacy-method}
Prior to version 0.5, the method of adding new plugins was adding the plugin
package to `vim.startPlugins` and add its configuration as a DAG under one of
diff --git a/docs/manual/configuring/custom-plugins/new-method.md b/docs/manual/configuring/custom-plugins/non-lazy-method.md
similarity index 93%
rename from docs/manual/configuring/custom-plugins/new-method.md
rename to docs/manual/configuring/custom-plugins/non-lazy-method.md
index 200ba5e7..351af2eb 100644
--- a/docs/manual/configuring/custom-plugins/new-method.md
+++ b/docs/manual/configuring/custom-plugins/non-lazy-method.md
@@ -1,4 +1,4 @@
-# New Method {#sec-new-method}
+# Non-lazy Method {#sec-non-lazy-method}
As of version **0.5**, we have a more extensive API for configuring plugins,
under `vim.extraPlugins`. Instead of using DAGs exposed by the library, you may
diff --git a/docs/manual/configuring/dag-entries.md b/docs/manual/configuring/dag-entries.md
index d5afa9b6..ff5d5c72 100644
--- a/docs/manual/configuring/dag-entries.md
+++ b/docs/manual/configuring/dag-entries.md
@@ -5,16 +5,21 @@ can add code that relies on other code. However, if you don't know what the
entries are called, it's hard to do that, so here is a list of the internal
entries in nvf:
-`vim.luaConfigRC` (top-level DAG):
+## `vim.luaConfigRC` (top-level DAG) {#ch-vim-luaconfigrc}
1. (`luaConfigPre`) - not a part of the actual DAG, instead, it's simply
inserted before the rest of the DAG
2. `globalsScript` - used to set globals defined in `vim.globals`
3. `basic` - used to set basic configuration options
-4. `theme` (this is simply placed before `pluginConfigs`, meaning that surrounding entries don't depend on it) - used to set up the theme, which has to be done before other plugins
-5. `pluginConfigs` - the result of the nested `vim.pluginRC` (internal option,
- see the [Custom Plugins](/index.xhtml#ch-custom-plugins) page for adding your own
- plugins) DAG, used to set up internal plugins
-6. `extraPluginConfigs` - the result of `vim.extraPlugins`, which is not a
+4. `optionsScript` - used to set options defined in `vim.o`
+5. `theme` (this is simply placed before `pluginConfigs` and `lazyConfigs`, meaning that
+ surrounding entries don't depend on it) - used to set up the theme, which has to be done before
+ other plugins
+6. `lazyConfigs` - `lz.n` and `lzn-auto-require` configs. If `vim.lazy.enable`
+ is false, this will contain each plugin's config instead.
+7. `pluginConfigs` - the result of the nested `vim.pluginRC` (internal option,
+ see the [Custom Plugins](/index.xhtml#ch-custom-plugins) page for adding your
+ own plugins) DAG, used to set up internal plugins
+8. `extraPluginConfigs` - the result of `vim.extraPlugins`, which is not a
direct DAG, but is converted to, and resolved as one internally
-7. `mappings` - the result of `vim.maps`
+9. `mappings` - the result of `vim.maps`
diff --git a/docs/manual/hacking/additional-plugins.md b/docs/manual/hacking/additional-plugins.md
index 7c802154..8531aa98 100644
--- a/docs/manual/hacking/additional-plugins.md
+++ b/docs/manual/hacking/additional-plugins.md
@@ -124,3 +124,61 @@ vim.your-plugin.setupOpts = {
'';
}
```
+
+## Lazy plugins {#sec-lazy-plugins}
+
+If the plugin can be lazy-loaded, `vim.lazy.plugins` should be used to add it. Lazy
+plugins are managed by `lz.n`.
+
+```nix
+# in modules/.../your-plugin/config.nix
+{lib, config, ...}:
+let
+ cfg = config.vim.your-plugin;
+in {
+ vim.lazy.plugins.your-plugin = {
+ # instead of vim.startPlugins, use this:
+ package = "your-plugin";
+
+ # if your plugin uses the `require('your-plugin').setup{...}` pattern
+ setupModule = "your-plugin";
+ inherit (cfg) setupOpts;
+
+ # events that trigger this plugin to be loaded
+ event = ["DirChanged"];
+ cmd = ["YourPluginCommand"];
+
+ # keymaps
+ keys = [
+ # we'll cover this in detail in the keymaps section
+ {
+ key = "d";
+ mode = "n";
+ action = ":YourPluginCommand";
+ }
+ ];
+ };
+;
+}
+```
+
+This results in the following lua code:
+```lua
+require('lz.n').load({
+ {
+ "name-of-your-plugin",
+ after = function()
+ require('your-plugin').setup({--[[ your setupOpts ]]})
+ end,
+
+ event = {"DirChanged"},
+ cmd = {"YourPluginCommand"},
+ keys = {
+ {"d", ":YourPluginCommand", mode = {"n"}},
+ },
+ }
+})
+```
+
+A full list of options can be found
+[here](https://notashelf.github.io/nvf/options.html#opt-vim.lazy.plugins
diff --git a/docs/manual/hacking/keybinds.md b/docs/manual/hacking/keybinds.md
index f4a51499..63a05d64 100644
--- a/docs/manual/hacking/keybinds.md
+++ b/docs/manual/hacking/keybinds.md
@@ -7,37 +7,26 @@ section contains a general overview to how you may utilize said functions.
## Custom Key Mappings Support for a Plugin {#sec-custom-key-mappings}
-To set a mapping, you should define it in `vim.maps.<>`.
-The available modes are:
-
-- normal
-- insert
-- select
-- visual
-- terminal
-- normalVisualOp
-- visualOnly
-- operator
-- insertCommand
-- lang
-- command
+To set a mapping, you should define it in `vim.keymaps`.
An example, simple keybinding, can look like this:
```nix
{
- vim.maps.normal = {
- "wq" = {
+ vim.keymaps = [
+ {
+ key = "wq";
+ mode = ["n"];
action = ":wq";
silent = true;
desc = "Save file and quit";
- };
- };
+ }
+ ];
}
```
There are many settings available in the options. Please refer to the
-[documentation](https://notashelf.github.io/nvf/options.html#opt-vim.maps.command._name_.action)
+[documentation](https://notashelf.github.io/nvf/options.html#opt-vim.keymaps)
to see a list of them.
**nvf** provides a list of helper commands, so that you don't have to write the
diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md
index cf250e07..876f1ab2 100644
--- a/docs/release-notes/rl-0.7.md
+++ b/docs/release-notes/rl-0.7.md
@@ -26,6 +26,32 @@ making good use of its extensive Lua API. Additionally, Vimscript is slow and
brings unnecessary performance overhead while working with different
configuration formats.
+### `vim.maps` rewrite {#sec-vim-maps-rewrite}
+
+Instead of specifying map modes using submodules (eg.: `vim.maps.normal`), a new
+`vim.keymaps` submodule with support for a `mode` option has been introduced. It
+can be either a string, or a list of strings, where a string represents the
+short-name of the map mode(s), that the mapping should be set for. See
+`:help map-modes` for more information.
+
+For example:
+
+```nix
+vim.maps.normal."m" = { ... };
+```
+
+has to be replaced by
+
+```nix
+vim.keymaps = [
+ {
+ key = "m";
+ mode = "n";
+ }
+ ...
+];
+```
+
### `vim.lsp.nvimCodeActionMenu` removed in favor of `vim.ui.fastaction` {#sec-nvim-code-action-menu-deprecation}
The nvim-code-action-menu plugin has been archived and broken for a long time,
@@ -37,6 +63,24 @@ Note that we are looking to add more alternatives in the future like
dressing.nvim and actions-preview.nvim, in case fastaction doesn't work for
everyone.
+### `type` based modules removed {#sec-type-based-modules-removed}
+
+As part of the autocompletion rewrite, modules that used to use a `type` option
+have been replaced by per-plugin modules instead. Since both modules only had
+one type, you can simply change
+
+- `vim.autocomplete.*` -> `vim.autocomplete.nvim-cmp.*`
+- `vim.autopairs.enable` -> `vim.autopairs.nvim-autopairs.enable`
+
+### `nixpkgs-fmt` removed in favor of `nixfmt` {#sec-nixpkgs-fmt-deprecation}
+
+`nixpkgs-fmt` has been archived for a while, and it's finally being removed in
+favor of nixfmt (more information can be found
+[here](https://github.com/nix-community/nixpkgs-fmt?tab=readme-ov-file#nixpkgs-fmt---nix-code-formatter-for-nixpkgs).
+
+To migrate to `nixfmt`, simply change `vim.languages.nix.format.type` to
+`nixfmt`.
+
## Changelog {#sec-release-0.7-changelog}
[ItsSorae](https://github.com/ItsSorae):
@@ -67,6 +111,9 @@ everyone.
- Add dap-go for better dap configurations
- Make noice.nvim customizable
- Standardize border style options and add custom borders
+- Remove `vim.disableDefaultRuntimePaths` in wrapper options.
+ - As nvf uses `$NVIM_APP_NAME` as of recent changes, we can safely assume any
+ configuration in `$XDG_CONFIG_HOME/nvf` is intentional.
[rust-tools.nvim]: https://github.com/simrat39/rust-tools.nvim
[rustaceanvim]: https://github.com/mrcjkb/rustaceanvim
@@ -76,17 +123,25 @@ everyone.
recommended to go through rustacean.nvim's README to take a closer look at its
features and usage
+- Add [lz.n] support and lazy-load some builtin plugins.
+
+[lz.n]: https://github.com/mrcjkb/lz.n
+
[jacekpoz](https://jacekpoz.pl):
[ocaml-lsp]: https://github.com/ocaml/ocaml-lsp
[new-file-template.nvim]: https://github.com/otavioschwanck/new-file-template.nvim
+[neo-tree.nvim]: https://github.com/nvim-neo-tree/neo-tree.nvim
- Add [ocaml-lsp] support
- Fix "Emac" typo
- Add [new-file-template.nvim] to automatically fill new file contents using
- templates.
+ templates
+
+- Make [neo-tree.nvim] display file icons properly by enabling
+ `visuals.nvimWebDevicons`
[diniamo](https://github.com/diniamo):
@@ -108,6 +163,7 @@ everyone.
plugin's options can now be found under `indentBlankline.setupOpts`, the
previous iteration of the module also included out of place/broken options,
which have been removed for the time being. These are:
+
- `listChar` - this was already unused
- `fillChar` - this had nothing to do with the plugin, please configure it
yourself by adding `vim.opt.listchars:append({ space = '' })` to your
@@ -119,10 +175,37 @@ everyone.
- Replace `vim.lsp.nvimCodeActionMenu` with `vim.ui.fastaction`, see the
breaking changes section above for more details
+- Add a `setupOpts` option to nvim-surround, which allows modifying options that
+ aren't defined in nvf. Move the alternate nvim-surround keybinds to use
+ `setupOpts`.
+
+- Remove `autopairs.type`, and rename `autopairs.enable` to
+ `autopairs.nvim-autopairs.enable`. The new
+ [](#opt-vim.autopairs.nvim-autopairs.enable) supports `setupOpts` format by
+ default.
+
+- Refactor of `nvim-cmp` and completion related modules
+
+ - Remove `autocomplete.type` in favor of per-plugin enable options such as
+ [](#opt-vim.autocomplete.nvim-cmp.enable).
+ - Deprecate legacy Vimsnip in favor of Luasnip, and integrate
+ friendly-snippets for bundled snippets. [](#opt-vim.snippets.luasnip.enable)
+ can be used to toggle Luasnip.
+ - Add sorting function options for completion sources under
+ [](#opt-vim.autocomplete.nvim-cmp.setupOpts.sorting.comparators)
+
+- Add C# support under `vim.languages.csharp`, with support for both
+ omnisharp-roslyn and csharp-language-server.
+
+- Add Julia support under `vim.languages.julia`. Note that the entirety of Julia
+ is bundled with nvf, if you enable the module, since there is no way to
+ provide only the LSP server.
+
[Neovim documentation on `vim.cmd`]: https://neovim.io/doc/user/lua.html#vim.cmd()
- Make Neovim's configuration file entirely Lua based. This comes with a few
breaking changes:
+
- `vim.configRC` has been removed. You will need to migrate your entries to
Neovim-compliant Lua code, and add them to `vim.luaConfigRC` instead.
Existing vimscript configurations may be preserved in `vim.cmd` functions.
@@ -131,10 +214,13 @@ everyone.
has been introduced for setting up internal plugins. See the "DAG entries in
nvf" manual page for more information.
+- Rewrite `vim.maps`, see the breaking changes section above.
+
[NotAShelf](https://github.com/notashelf):
[ts-error-translator.nvim]: https://github.com/dmmulroy/ts-error-translator.nvim
[credo]: https://github.com/rrrene/credo
+[tiny-devicons-auto-colors]: https://github.com/rachartier/tiny-devicons-auto-colors.nvim
- Add `deno fmt` as the default Markdown formatter. This will be enabled
automatically if you have autoformatting enabled, but can be disabled manually
@@ -186,8 +272,69 @@ everyone.
- Add [python-lsp-server](https://github.com/python-lsp/python-lsp-server) as an
additional Python LSP server.
+- Add [](#opt-vim.options) to set `vim.o` values in in your nvf configuration
+ without using additional Lua. See option documentation for more details.
+
+- Add [](#opt-vim.dashboard.dashboard-nvim.setupOpts) to allow user
+ configuration for [dashboard.nvim](https://github.com/nvimdev/dashboard-nvim)
+
+- Update `lualine.nvim` input and add missing themes:
+
+ - Adds `ayu`, `gruvbox_dark`, `iceberg`, `moonfly`, `onedark`,
+ `powerline_dark` and `solarized_light` themes.
+
+- Add [](#opt-vim.spellcheck.extraSpellWords) to allow adding arbitrary
+ spellfiles to Neovim's runtime with ease.
+
+- Add combined nvf configuration (`config.vim`) into the final package's
+ passthru as `passthru.neovimConfiguration` for easier debugging.
+
+- Add support for [tiny-devicons-auto-colors] under
+ `vim.visuals.tiny-devicons-auto-colors`
+
[ppenguin](https://github.com/ppenguin):
- Telescope:
- Fixed `project-nvim` command and keybinding
- Added default ikeybind/command for `Telescope resume` (`fr`)
+
+[Soliprem](https://github.com/Soliprem):
+
+- Add LSP and Treesitter support for R under `vim.languages.R`.
+ - Add formatter suppoort for R, with styler and formatR as options
+- Add Otter support under `vim.lsp.otter` and an assert to prevent conflict with
+ ccc
+- Fixed typo in Otter's setupOpts
+- Add Neorg support under `vim.notes.neorg`
+- Add LSP, diagnostics, formatter and Treesitter support for Kotlin under
+ `vim.languages.kotlin`
+- changed default keybinds for leap.nvim to avoid altering expected behavior
+- Add LSP, formatter and Treesitter support for Vala under `vim.languages.vala`
+- Add [Tinymist](https://github.com/Myriad-Dreamin/tinymist] as a formatter for
+ the Typst language module.
+- Add LSP and Treesitter support for Assembly under `vim.languages.assembly`
+- Move [which-key](https://github.com/folke/which-key.nvim) to the new spec
+
+[Bloxx12](https://github.com/Bloxx12)
+
+- Add support for [base16 theming](https://github.com/RRethy/base16-nvim) under
+ `vim.theme`
+- Fix internal breakage in `elixir-tools` setup.
+
+[ksonj](https://github.com/ksonj):
+
+- Add LSP support for Scala via
+ [nvim-metals](https://github.com/scalameta/nvim-metals)
+
+[nezia1](https://github.com/nezia1):
+
+- Add [biome](https://github.com/biomejs/biome) support for Typescript, CSS and
+ Svelte. Enable them via [](#opt-vim.languages.ts.format.type),
+ [](#opt-vim.languages.css.format.type) and
+ [](#opt-vim.languages.svelte.format.type) respectively.
+- Replace [nixpkgs-fmt](https://github.com/nix-community/nixpkgs-fmt) with
+ [nixfmt](https://github.com/NixOS/nixfmt) (nixfmt-rfc-style).
+
+[Nowaaru](https://github.com/Nowaaru):
+
+- Add `precognition-nvim`.
diff --git a/flake.lock b/flake.lock
index a39bf460..d9e6b477 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,31 +1,15 @@
{
"nodes": {
- "flake-compat": {
- "flake": false,
- "locked": {
- "lastModified": 1673956053,
- "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
- "owner": "edolstra",
- "repo": "flake-compat",
- "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
- "type": "github"
- },
- "original": {
- "owner": "edolstra",
- "repo": "flake-compat",
- "type": "github"
- }
- },
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
- "lastModified": 1715865404,
- "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=",
+ "lastModified": 1730504689,
+ "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
- "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9",
+ "rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
@@ -39,26 +23,11 @@
"systems": "systems"
},
"locked": {
- "lastModified": 1710146030,
- "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+ "lastModified": 1726560853,
+ "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
- "type": "github"
- },
- "original": {
- "owner": "numtide",
- "repo": "flake-utils",
- "type": "github"
- }
- },
- "flake-utils_2": {
- "locked": {
- "lastModified": 1659877975,
- "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
- "owner": "numtide",
- "repo": "flake-utils",
- "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
+ "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
@@ -69,11 +38,11 @@
},
"mnw": {
"locked": {
- "lastModified": 1726188505,
- "narHash": "sha256-3dkxJo6y/aKfwkAg6YnpdiQAoZKgHhWHz7ilGJHCoVU=",
+ "lastModified": 1731821965,
+ "narHash": "sha256-QiGi/HBQRnIRGY4gQPuH7T3hr7NznOpEO7qNpF5ldmE=",
"owner": "Gerg-L",
"repo": "mnw",
- "rev": "ea00b3d2162d85dd085a6ba6d49aa2a186e588e7",
+ "rev": "5fe5c41975ed0af55f55dc37cd28ba906a5d015e",
"type": "github"
},
"original": {
@@ -114,11 +83,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1714571717,
- "narHash": "sha256-o4tqlTzi9kcVub167kTGXgCac9jM3kW4+v9MH/ue4Hk=",
+ "lastModified": 1726716330,
+ "narHash": "sha256-mIuOP4I51eFLquRaxMKx67pHmhatZrcVPjfHL98v/M8=",
"owner": "oxalica",
"repo": "nil",
- "rev": "2f3ed6348bbf1440fcd1ab0411271497a0fbbfa4",
+ "rev": "c8e8ce72442a164d89d3fdeaae0bcc405f8c015a",
"type": "github"
},
"original": {
@@ -129,11 +98,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1726142289,
- "narHash": "sha256-Jks8O42La+nm5AMTSq/PvM5O+fUAhIy0Ce1QYqLkyZ4=",
+ "lastModified": 1730958623,
+ "narHash": "sha256-JwQZIGSYnRNOgDDoIgqKITrPVil+RMWHsZH1eE1VGN0=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "280db3decab4cbeb22a4599bd472229ab74d25e1",
+ "rev": "85f7e662eda4fa3a995556527c87b2524b691933",
"type": "github"
},
"original": {
@@ -145,14 +114,14 @@
},
"nixpkgs-lib": {
"locked": {
- "lastModified": 1714640452,
- "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=",
+ "lastModified": 1730504152,
+ "narHash": "sha256-lXvH/vOfb4aGYyvFmZK/HlsNsr/0CVWlwYvo2rxJk3s=",
"type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz"
+ "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
},
"original": {
"type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz"
+ "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz"
}
},
"nixpkgs_2": {
@@ -171,22 +140,6 @@
"type": "github"
}
},
- "nixpkgs_3": {
- "locked": {
- "lastModified": 1702350026,
- "narHash": "sha256-A+GNZFZdfl4JdDphYKBJ5Ef1HOiFsP18vQe9mqjmUis=",
- "owner": "NixOS",
- "repo": "nixpkgs",
- "rev": "9463103069725474698139ab10f17a9d125da859",
- "type": "github"
- },
- "original": {
- "owner": "NixOS",
- "ref": "nixos-23.05",
- "repo": "nixpkgs",
- "type": "github"
- }
- },
"nmd": {
"flake": false,
"locked": {
@@ -206,11 +159,11 @@
"plugin-alpha-nvim": {
"flake": false,
"locked": {
- "lastModified": 1708891191,
- "narHash": "sha256-kTVPKZ/e1us/uHfSwFwR38lFYN8EotJq2jKz6xm/eqg=",
+ "lastModified": 1727720738,
+ "narHash": "sha256-33lhPP1C4TGo0UQJ61bwRHaiOMAB7XNehcZGaFXOPjQ=",
"owner": "goolord",
"repo": "alpha-nvim",
- "rev": "41283fb402713fc8b327e60907f74e46166f4cfd",
+ "rev": "bf3c8bb8c02ed3d9644cc5bbc48e2bdc39349cd7",
"type": "github"
},
"original": {
@@ -219,6 +172,22 @@
"type": "github"
}
},
+ "plugin-base16": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1716483968,
+ "narHash": "sha256-GRF/6AobXHamw8TZ3FjL7SI6ulcpwpcohsIuZeCSh2A=",
+ "owner": "rrethy",
+ "repo": "base16-nvim",
+ "rev": "6ac181b5733518040a33017dde654059cd771b7c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "rrethy",
+ "repo": "base16-nvim",
+ "type": "github"
+ }
+ },
"plugin-bufdelete-nvim": {
"flake": false,
"locked": {
@@ -238,11 +207,11 @@
"plugin-catppuccin": {
"flake": false,
"locked": {
- "lastModified": 1716704960,
- "narHash": "sha256-UDPS+1o8FQGkfqiG4GX4DNUI2pU5hIvagmfnWTKDb44=",
+ "lastModified": 1731169755,
+ "narHash": "sha256-lsnePejThsEygTCKV/rfJJ/h+RSrro91am841iznJe4=",
"owner": "catppuccin",
"repo": "nvim",
- "rev": "5215ea59df6d0a7e27da9a5cd1165e06d1b04cbe",
+ "rev": "637d99e638bc6f1efedac582f6ccab08badac0c6",
"type": "github"
},
"original": {
@@ -254,11 +223,11 @@
"plugin-ccc": {
"flake": false,
"locked": {
- "lastModified": 1714299582,
- "narHash": "sha256-QRq9hQF5vLnOTzQGbOWC2ykMdMsQDlDlb6XC17dJG7Q=",
+ "lastModified": 1727935067,
+ "narHash": "sha256-OhdR2sAQV5PvlhaKQ6rYneMmvQiN3QfymOeanpAs9wY=",
"owner": "uga-rosa",
"repo": "ccc.nvim",
- "rev": "f388f1981d222967c741fe9927edf9ba5fa3bcbe",
+ "rev": "7c639042583c7bdc7ce2e37e5a0e0aa6d0659c6a",
"type": "github"
},
"original": {
@@ -270,11 +239,11 @@
"plugin-cellular-automaton": {
"flake": false,
"locked": {
- "lastModified": 1693589931,
- "narHash": "sha256-szbd6m7hH7NFI0UzjWF83xkpSJeUWCbn9c+O8F8S/Fg=",
+ "lastModified": 1719777869,
+ "narHash": "sha256-nIv7ISRk0+yWd1lGEwAV6u1U7EFQj/T9F8pU6O0Wf0s=",
"owner": "Eandrju",
"repo": "cellular-automaton.nvim",
- "rev": "b7d056dab963b5d3f2c560d92937cb51db61cb5b",
+ "rev": "11aea08aa084f9d523b0142c2cd9441b8ede09ed",
"type": "github"
},
"original": {
@@ -286,11 +255,11 @@
"plugin-chatgpt": {
"flake": false,
"locked": {
- "lastModified": 1709721561,
- "narHash": "sha256-vD3NEsYmPRWlxBSOxyIMIQiJXQXxx0hhsw4zIxxXB3o=",
+ "lastModified": 1728720509,
+ "narHash": "sha256-+YVXAkG4pp7RGs8lGnNFc0kQcUV3O3kYBQaQ5Qa4wB0=",
"owner": "jackMort",
"repo": "ChatGPT.nvim",
- "rev": "df53728e05129278d6ea26271ec086aa013bed90",
+ "rev": "5b6d296eefc75331e2ff9f0adcffbd7d27862dd6",
"type": "github"
},
"original": {
@@ -318,11 +287,11 @@
"plugin-cinnamon-nvim": {
"flake": false,
"locked": {
- "lastModified": 1714107684,
- "narHash": "sha256-cMP9WRZzevxaWgpILyDh1JwNukm3Jl3JKJYPT2HnFns=",
+ "lastModified": 1722992123,
+ "narHash": "sha256-kccQ4iFMSQ8kvE7hYz90hBrsDLo7VohFj/6lEZZiAO8=",
"owner": "declancm",
"repo": "cinnamon.nvim",
- "rev": "a011e84b624cd7b609ea928237505d31b987748a",
+ "rev": "450cb3247765fed7871b41ef4ce5fa492d834215",
"type": "github"
},
"original": {
@@ -347,6 +316,22 @@
"type": "github"
}
},
+ "plugin-cmp-luasnip": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1730707109,
+ "narHash": "sha256-86lKQPPyqFz8jzuLajjHMKHrYnwW6+QOcPyQEx6B+gw=",
+ "owner": "saadparwaiz1",
+ "repo": "cmp_luasnip",
+ "rev": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90",
+ "type": "github"
+ },
+ "original": {
+ "owner": "saadparwaiz1",
+ "repo": "cmp_luasnip",
+ "type": "github"
+ }
+ },
"plugin-cmp-nvim-lsp": {
"flake": false,
"locked": {
@@ -395,30 +380,14 @@
"type": "github"
}
},
- "plugin-cmp-vsnip": {
- "flake": false,
- "locked": {
- "lastModified": 1669100283,
- "narHash": "sha256-2mkN03noOr5vBvRbSb35xZKorSH+8savQNZtgM9+QcM=",
- "owner": "hrsh7th",
- "repo": "cmp-vsnip",
- "rev": "989a8a73c44e926199bfd05fa7a516d51f2d2752",
- "type": "github"
- },
- "original": {
- "owner": "hrsh7th",
- "repo": "cmp-vsnip",
- "type": "github"
- }
- },
"plugin-codewindow-nvim": {
"flake": false,
"locked": {
- "lastModified": 1695487629,
- "narHash": "sha256-/u2Zjbd9m3/iJU3I3HzFzXWxuvoycwJoIq7UFeHNtKM=",
+ "lastModified": 1717593052,
+ "narHash": "sha256-HAqVTAkFZ1/vBiBP/QDE1fmwOl/PbznAxz/jmUFxs88=",
"owner": "gorbit99",
"repo": "codewindow.nvim",
- "rev": "8c8f5ff66e123491c946c04848d744fcdc7cac6c",
+ "rev": "dd7017617962943eb1d152fc58940f11c6775a4a",
"type": "github"
},
"original": {
@@ -430,11 +399,11 @@
"plugin-comment-nvim": {
"flake": false,
"locked": {
- "lastModified": 1691409559,
- "narHash": "sha256-+dF1ZombrlO6nQggufSb0igXW5zwU++o0W/5ZA07cdc=",
+ "lastModified": 1717957420,
+ "narHash": "sha256-h0kPue5Eqd5aeu4VoLH45pF0DmWWo1d8SnLICSQ63zc=",
"owner": "numToStr",
"repo": "Comment.nvim",
- "rev": "0236521ea582747b58869cb72f70ccfa967d2e89",
+ "rev": "e30b7f2008e52442154b66f7c519bfd2f1e32acb",
"type": "github"
},
"original": {
@@ -446,11 +415,11 @@
"plugin-copilot-cmp": {
"flake": false,
"locked": {
- "lastModified": 1694286652,
- "narHash": "sha256-srgNohm/aJpswNJ5+T7p+zi9Jinp9e5FA8/wdk6VRiY=",
+ "lastModified": 1718601710,
+ "narHash": "sha256-8w9go2SBkI+BrXNadWM8ZxDDfrAnZZJx6RbVHAK4+Pg=",
"owner": "zbirenbaum",
"repo": "copilot-cmp",
- "rev": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3",
+ "rev": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44",
"type": "github"
},
"original": {
@@ -462,11 +431,11 @@
"plugin-copilot-lua": {
"flake": false,
"locked": {
- "lastModified": 1709095198,
- "narHash": "sha256-JX3sdsnOnjkY7r9fCtC2oauo0PXF3SQ+SHUo8ifBvAc=",
+ "lastModified": 1729295476,
+ "narHash": "sha256-UY6N2Q+egh+Cn4REZXrSGH9ElWQBedl0n8tWJvGe7vs=",
"owner": "zbirenbaum",
"repo": "copilot.lua",
- "rev": "f7612f5af4a7d7615babf43ab1e67a2d790c13a6",
+ "rev": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0",
"type": "github"
},
"original": {
@@ -478,11 +447,11 @@
"plugin-crates-nvim": {
"flake": false,
"locked": {
- "lastModified": 1715690194,
- "narHash": "sha256-R1y1OIep4tcFd4mhylZ/A2zdwOmEQtCzuVBOBYu0qUI=",
+ "lastModified": 1727384188,
+ "narHash": "sha256-DIG0MXRTit4iEVoLlgsTK4znjam/QDjeZEpIDn6KHiE=",
"owner": "Saecki",
"repo": "crates.nvim",
- "rev": "d556c00d60c9421c913ee54ff690df2a34f6264e",
+ "rev": "8bf8358ee326d5d8c11dcd7ac0bcc9ff97dbc785",
"type": "github"
},
"original": {
@@ -491,14 +460,30 @@
"type": "github"
}
},
+ "plugin-csharpls-extended": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1730857197,
+ "narHash": "sha256-eKkFpEB7ZXNttXz62y3GaKptt4n0xRY+iuTI8RU5z0Q=",
+ "owner": "Decodetalkers",
+ "repo": "csharpls-extended-lsp.nvim",
+ "rev": "ef02017d80b1cd914d61285b1fb063cb7fe0aa8f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Decodetalkers",
+ "repo": "csharpls-extended-lsp.nvim",
+ "type": "github"
+ }
+ },
"plugin-dashboard-nvim": {
"flake": false,
"locked": {
- "lastModified": 1715952164,
- "narHash": "sha256-mLQHRzt9vUJLOO15+u7EaE2FGzIm1Ba7fqwdu5zaTYA=",
+ "lastModified": 1730526793,
+ "narHash": "sha256-Qi8kmC3U8Tvxh0pWIBtN3DuWJioEGWn7FqQ8lQwauRo=",
"owner": "glepnir",
"repo": "dashboard-nvim",
- "rev": "5182c09ac8085dc73b78ad0ea9f5479c9a866fc4",
+ "rev": "ae309606940d26d8c9df8b048a6e136b6bbec478",
"type": "github"
},
"original": {
@@ -510,11 +495,11 @@
"plugin-diffview-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716569036,
- "narHash": "sha256-sCrswSN/ERirije4hukg81t+X8sVG6EnG8SPK/P1Bts=",
+ "lastModified": 1718279802,
+ "narHash": "sha256-SX+ybIzL/w6uyCy4iZKnWnzTFwqB1oXSgyYVAdpdKi8=",
"owner": "sindrets",
"repo": "diffview.nvim",
- "rev": "1ec7b56b959dab18f7030f541c33ae60e18a6f88",
+ "rev": "4516612fe98ff56ae0415a259ff6361a89419b0a",
"type": "github"
},
"original": {
@@ -526,11 +511,11 @@
"plugin-dracula": {
"flake": false,
"locked": {
- "lastModified": 1708834650,
- "narHash": "sha256-I3rtbJYv1D+kniOLL9hmTF3ucp/qSNewnO2GmYAERko=",
+ "lastModified": 1729038981,
+ "narHash": "sha256-3jFOaFtH+EIx4mUKV0U/cFkUo8By0JgorTYgFUKEs/s=",
"owner": "Mofiqul",
"repo": "dracula.nvim",
- "rev": "8d8bddb8814c3e7e62d80dda65a9876f97eb699c",
+ "rev": "94fa7885a06a67f0a8bfa03e064619d05d1ba496",
"type": "github"
},
"original": {
@@ -542,11 +527,11 @@
"plugin-dressing-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716410905,
- "narHash": "sha256-AXY1+nA6Q/kWbuwOAqwVdd3QrjkHGVdVMHShvSIfLwM=",
+ "lastModified": 1730759661,
+ "narHash": "sha256-F9mdyANs9QTzlB/VAXt+9GXJUiA5th7Fj79WArdUmRE=",
"owner": "stevearc",
"repo": "dressing.nvim",
- "rev": "3c38ac861e1b8d4077ff46a779cde17330b29f3a",
+ "rev": "6ef1ca479d37d4ff66f13eed44d08912caff483a",
"type": "github"
},
"original": {
@@ -558,11 +543,11 @@
"plugin-elixir-tools": {
"flake": false,
"locked": {
- "lastModified": 1716478469,
- "narHash": "sha256-ESL/H/l5Yarcuo3MjBplKwox8E6CBxvWrpciyJeaES0=",
+ "lastModified": 1727872243,
+ "narHash": "sha256-7gIvoV6myqbkjLnIhHuyNPix1DFkKEeeND2o6VDxDWc=",
"owner": "elixir-tools",
"repo": "elixir-tools.nvim",
- "rev": "815cf0b0aab0421f8490199c0dd7442d22a7c1b7",
+ "rev": "b465f6aff50257fa466de3886fc3e7de2dcff0de",
"type": "github"
},
"original": {
@@ -574,11 +559,11 @@
"plugin-fastaction-nvim": {
"flake": false,
"locked": {
- "lastModified": 1721396662,
- "narHash": "sha256-L7na78FsE+QHlEwxMpiwQcoOPhtmrknvdTZfzUoDANI=",
+ "lastModified": 1731000037,
+ "narHash": "sha256-oNLKwWj2lze/ZCcwT98ucw6oT4765EiW1CB0BAjox8A=",
"owner": "Chaitanyabsprip",
"repo": "fastaction.nvim",
- "rev": "2384dea7ba81d2709d0bee0e4bc7a8831ff13a9d",
+ "rev": "a55feac91f39b83aa21b9ef3df1e465d9122753c",
"type": "github"
},
"original": {
@@ -590,11 +575,11 @@
"plugin-fidget-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716093309,
- "narHash": "sha256-Gpk/G0ByOAIE8uX4Xr94CvAjJBSJMEOwBuvrhmYYGsg=",
+ "lastModified": 1730221432,
+ "narHash": "sha256-fQBrkHV54TaOeLYQJ1DE+lr7SFDPN1yqSlzhFm26NAY=",
"owner": "j-hui",
"repo": "fidget.nvim",
- "rev": "ef99df04a1c53a453602421bc0f756997edc8289",
+ "rev": "e2a175c2abe2d4f65357da1c98c59a5cfb2b543f",
"type": "github"
},
"original": {
@@ -606,11 +591,11 @@
"plugin-flutter-tools": {
"flake": false,
"locked": {
- "lastModified": 1716114535,
- "narHash": "sha256-dRcWCqFHtDMOEGjKji3lxYQZKBhlhss/i51pX6FZxuI=",
+ "lastModified": 1730275333,
+ "narHash": "sha256-fKsC+ouSfW07dLipXP+RPMzQfCQ70oGknSdVo7dMAxw=",
"owner": "akinsho",
"repo": "flutter-tools.nvim",
- "rev": "990a1349c29f7d474a0cd51355aba773ccc9deea",
+ "rev": "7e6d8611d8606efca64cb8cf1ca07550b7087d1c",
"type": "github"
},
"original": {
@@ -619,14 +604,30 @@
"type": "github"
}
},
+ "plugin-friendly-snippets": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1728273759,
+ "narHash": "sha256-H94Ryad0ZsSg/gioUgW+7sowij7GgtEUMNFi1IOZAys=",
+ "owner": "rafamadriz",
+ "repo": "friendly-snippets",
+ "rev": "de8fce94985873666bd9712ea3e49ee17aadb1ed",
+ "type": "github"
+ },
+ "original": {
+ "owner": "rafamadriz",
+ "repo": "friendly-snippets",
+ "type": "github"
+ }
+ },
"plugin-gesture-nvim": {
"flake": false,
"locked": {
- "lastModified": 1715776261,
- "narHash": "sha256-XgF5BTKR5IiELNqYDvOPIGMw3HtkyNd3K5SOGfYFizY=",
+ "lastModified": 1726696689,
+ "narHash": "sha256-d1+czQXyJUyNlMhPjRzb6cEiCJVTFrkYnv7XXh2BLNs=",
"owner": "notomo",
"repo": "gesture.nvim",
- "rev": "3750313a40a752629e3e90f3c3e591969fdab388",
+ "rev": "a63d81325a1f84ad87a7d9e1a36e4eeb4e786fc1",
"type": "github"
},
"original": {
@@ -638,11 +639,11 @@
"plugin-gitsigns-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716453598,
- "narHash": "sha256-TTC3uvRsq4v6PBdS/3YAGpyhVt0w3/SGkPE3fu1zW94=",
+ "lastModified": 1730713501,
+ "narHash": "sha256-FHzufzeVrPnbU5j3UabVTCYXP+QNcb7gMgef0BmuclA=",
"owner": "lewis6991",
"repo": "gitsigns.nvim",
- "rev": "cdfcd9d39d23c46ae9a040de2c6a8b8bf868746e",
+ "rev": "4daf7022f1481edf1e8fb9947df13bb07c18e89a",
"type": "github"
},
"original": {
@@ -670,11 +671,11 @@
"plugin-gruvbox": {
"flake": false,
"locked": {
- "lastModified": 1716072809,
- "narHash": "sha256-BLhZGijGF03UFiyMJ66C1ZLDRqAo1C80ekHcBm1PGoY=",
+ "lastModified": 1727809136,
+ "narHash": "sha256-/kgZuNJ1vHyOpvFHiJKCb1HzjSPgqis9Ng4aT7jHXG4=",
"owner": "ellisonleao",
"repo": "gruvbox.nvim",
- "rev": "96a8ec336fb48a11cefbd57508888361431aac26",
+ "rev": "49d9c0b150ba70efcd831ec7b3cb8ee740067045",
"type": "github"
},
"original": {
@@ -686,11 +687,11 @@
"plugin-highlight-undo": {
"flake": false,
"locked": {
- "lastModified": 1714982601,
- "narHash": "sha256-yGw1SxcUmGQxqKhMb2SJAai07g+rOpEJy2CqIX2h9dM=",
+ "lastModified": 1729426343,
+ "narHash": "sha256-zNzVmt4WJcspuloePhc6HbDvNA7B92NscE+fEYvCumc=",
"owner": "tzachar",
"repo": "highlight-undo.nvim",
- "rev": "1ea1c79372d7d93c88fd97543880927b7635e3d2",
+ "rev": "c87a6ec1ded241ef223269077cbd5f97a6f0d5bf",
"type": "github"
},
"original": {
@@ -734,11 +735,11 @@
"plugin-image-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716308282,
- "narHash": "sha256-6nFzUchDQIvaTOv4lZ10q66m/ntU3dgVnlfBRodW+0Y=",
+ "lastModified": 1730854538,
+ "narHash": "sha256-G7Nqs8BqLCR46vw6VVazvdGOpan6Wkkv/PfJB+nBbGE=",
"owner": "3rd",
"repo": "image.nvim",
- "rev": "2a618c86d9f8fd9f7895d12b55ec2f31fd14fa05",
+ "rev": "9c9dbed0cdb4dbd199ebfc678a881f5745a36f50",
"type": "github"
},
"original": {
@@ -750,11 +751,11 @@
"plugin-indent-blankline": {
"flake": false,
"locked": {
- "lastModified": 1716449809,
- "narHash": "sha256-K5y0UQAXc0N6+1kqncX2eClpvZb7jlg7GhSerHQVZX0=",
+ "lastModified": 1730170343,
+ "narHash": "sha256-odv43EyZ3gMg410eBFAkye/SdAj+LcVVZPaZm8w0biM=",
"owner": "lukas-reineke",
"repo": "indent-blankline.nvim",
- "rev": "d98f537c3492e87b6dc6c2e3f66ac517528f406f",
+ "rev": "04e44b09ee3ff189c69ab082edac1ef7ae2e256c",
"type": "github"
},
"original": {
@@ -766,11 +767,11 @@
"plugin-leap-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716207448,
- "narHash": "sha256-O/wN5v8GhlEECBIhJQvWhKcpQrqT7J+BNkd/fIh0TIQ=",
+ "lastModified": 1722337962,
+ "narHash": "sha256-PFD/UliAHKk2ga+7p/GmoZGqZFWenIVLkzmO+FkhvrY=",
"owner": "ggandor",
"repo": "leap.nvim",
- "rev": "8f4d3ab9fe5c906c5745150191831c5ee0a427a0",
+ "rev": "c6bfb191f1161fbabace1f36f578a20ac6c7642c",
"type": "github"
},
"original": {
@@ -798,11 +799,11 @@
"plugin-lsp-signature": {
"flake": false,
"locked": {
- "lastModified": 1716637798,
- "narHash": "sha256-4Abo4HGwzZtqEHcS9lsQdw+Dsn7tkQoeq5QyfTEEwnA=",
+ "lastModified": 1726445971,
+ "narHash": "sha256-W6bN3R10B84noK7MOzvUOIc82WwyojIS97iFL/dO5yk=",
"owner": "ray-x",
"repo": "lsp_signature.nvim",
- "rev": "529e8861d0410389f0163a5e5c2199d4a4ef5bf6",
+ "rev": "fc38521ea4d9ec8dbd4c2819ba8126cea743943b",
"type": "github"
},
"original": {
@@ -814,11 +815,11 @@
"plugin-lspkind": {
"flake": false,
"locked": {
- "lastModified": 1704982040,
- "narHash": "sha256-/QLdBU/Zwmkw1NGuLBD48tvrmIP9d9WHhgcLEQgRTWo=",
+ "lastModified": 1729872608,
+ "narHash": "sha256-/ifgjqqCQw67l3+gUs00tt860pa92M1WYdjdZ0lhxak=",
"owner": "onsails",
"repo": "lspkind-nvim",
- "rev": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf",
+ "rev": "a700f1436d4a938b1a1a93c9962dc796afbaef4d",
"type": "github"
},
"original": {
@@ -843,14 +844,30 @@
"type": "github"
}
},
+ "plugin-lua-utils-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1708177208,
+ "narHash": "sha256-9ildzQEMkXKZ3LHq+khGFgRQFxlIXQclQ7QU3fcU1C4=",
+ "owner": "nvim-neorg",
+ "repo": "lua-utils.nvim",
+ "rev": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nvim-neorg",
+ "repo": "lua-utils.nvim",
+ "type": "github"
+ }
+ },
"plugin-lualine": {
"flake": false,
"locked": {
- "lastModified": 1712310396,
- "narHash": "sha256-WcH2dWdRDgMkwBQhcgT+Z/ArMdm+VbRhmQftx4t2kNI=",
+ "lastModified": 1731050126,
+ "narHash": "sha256-IN6Qz3jGxUcylYiRTyd8j6me3pAoqJsJXtFUvph/6EI=",
"owner": "hoob3rt",
"repo": "lualine.nvim",
- "rev": "0a5a66803c7407767b799067986b4dc3036e1983",
+ "rev": "2a5bae925481f999263d6f5ed8361baef8df4f83",
"type": "github"
},
"original": {
@@ -859,6 +876,55 @@
"type": "github"
}
},
+ "plugin-luasnip": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1730895001,
+ "narHash": "sha256-Vb4unHnhppcM1HZtd8oohJHPlkUHORoYUjKUWyhRM6g=",
+ "owner": "L3MON4D3",
+ "repo": "LuaSnip",
+ "rev": "2737edc9e674e537dc0a97e3405658d57d2d31ed",
+ "type": "github"
+ },
+ "original": {
+ "owner": "L3MON4D3",
+ "repo": "LuaSnip",
+ "type": "github"
+ }
+ },
+ "plugin-lz-n": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1730598851,
+ "narHash": "sha256-L7og7ZTo5Soyn6pvBHkJcgGuON96eV0V5QC3J1uz/ko=",
+ "owner": "nvim-neorocks",
+ "repo": "lz.n",
+ "rev": "c8675c983e0682c49a13f17fc7ff9353bcb32120",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nvim-neorocks",
+ "repo": "lz.n",
+ "type": "github"
+ }
+ },
+ "plugin-lzn-auto-require": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1731009187,
+ "narHash": "sha256-KC1z+zC9vKODllZVpBu+udzM12oYJaS8e6LdXWtQ89U=",
+ "owner": "horriblename",
+ "repo": "lzn-auto-require",
+ "rev": "a075ed51976323fd7fc44ccfca89fe0449a08cca",
+ "type": "github"
+ },
+ "original": {
+ "owner": "horriblename",
+ "ref": "require-rewrite",
+ "repo": "lzn-auto-require",
+ "type": "github"
+ }
+ },
"plugin-mind-nvim": {
"flake": false,
"locked": {
@@ -894,11 +960,11 @@
"plugin-modes-nvim": {
"flake": false,
"locked": {
- "lastModified": 1702245923,
- "narHash": "sha256-Kd2hf5obrPvCVLtRcFjLd75byyrB2o3uYCSEMW6IeCc=",
+ "lastModified": 1717693302,
+ "narHash": "sha256-z1XD0O+gG2/+g/skdWGC64Zv4dXvvhWesaK/8DcPF/E=",
"owner": "mvllow",
"repo": "modes.nvim",
- "rev": "4035a46aaabe43faf1b54740575af9dd5bb03809",
+ "rev": "326cff3282419b3bcc745061978c1e592cae055d",
"type": "github"
},
"original": {
@@ -910,11 +976,11 @@
"plugin-neo-tree-nvim": {
"flake": false,
"locked": {
- "lastModified": 1713050882,
- "narHash": "sha256-cZwOVpdMT0NCtp6Ha592QA2RzKVS6LhXXcjfDBCQ+0k=",
+ "lastModified": 1726542367,
+ "narHash": "sha256-Lqt0KJNT9HmpJwZoWChYeVBrDWhscRe8COqVCwgcTwk=",
"owner": "nvim-neo-tree",
"repo": "neo-tree.nvim",
- "rev": "22e566aeb075c94f670f34077e05ba95190dfb4a",
+ "rev": "a77af2e764c5ed4038d27d1c463fa49cd4794e07",
"type": "github"
},
"original": {
@@ -926,11 +992,11 @@
"plugin-neocord": {
"flake": false,
"locked": {
- "lastModified": 1713923379,
- "narHash": "sha256-oVWdnQlgXIMzMiybMq7yR/WfEW+Fm5RmhWx0RWprlfQ=",
+ "lastModified": 1729369963,
+ "narHash": "sha256-4dVaxigJ8eOXpgiqcxUYIF4SoC1CPFvNHYKT0zxIYo0=",
"owner": "IogaMaster",
"repo": "neocord",
- "rev": "aa7a58023166533da83ca7b11c0d2569e45d7381",
+ "rev": "587e03390a355e9c364d48638e0e0db2a8431d73",
"type": "github"
},
"original": {
@@ -942,11 +1008,11 @@
"plugin-neodev-nvim": {
"flake": false,
"locked": {
- "lastModified": 1711715247,
- "narHash": "sha256-mAJOMVN7/xO7ykVNAeTeX+z2A/7yB8zdqlEKHL6Pb74=",
+ "lastModified": 1720260306,
+ "narHash": "sha256-hOjzlo/IqmV8tYjGwfmcCPEmHYsWnEIwtHZdhpwA1kM=",
"owner": "folke",
"repo": "neodev.nvim",
- "rev": "ce9a2e8eaba5649b553529c5498acb43a6c317cd",
+ "rev": "46aa467dca16cf3dfe27098042402066d2ae242d",
"type": "github"
},
"original": {
@@ -955,6 +1021,38 @@
"type": "github"
}
},
+ "plugin-neorg": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1730333767,
+ "narHash": "sha256-qTo8rxwvANrgP8UccFhzsNsH+Jbmqv2iOlw0ccLNYm4=",
+ "owner": "nvim-neorg",
+ "repo": "neorg",
+ "rev": "488507bb996f75ee29073f50dec32fa220867ca5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nvim-neorg",
+ "repo": "neorg",
+ "type": "github"
+ }
+ },
+ "plugin-neorg-telescope": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1722358034,
+ "narHash": "sha256-ei4uUqpIQjGKzu5ryu0Hlmis9TS9FJsYnjt4J4QdWlw=",
+ "owner": "nvim-neorg",
+ "repo": "neorg-telescope",
+ "rev": "ddb2556644cae922699a239bbb0fe16e25b084b7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nvim-neorg",
+ "repo": "neorg-telescope",
+ "type": "github"
+ }
+ },
"plugin-new-file-template-nvim": {
"flake": false,
"locked": {
@@ -974,11 +1072,11 @@
"plugin-noice-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716502618,
- "narHash": "sha256-GrgFjVDIQcCfg5qyO6FnhlGUCrz6rwAFh81yZXUJra4=",
+ "lastModified": 1731163840,
+ "narHash": "sha256-zT+fJ88V/LfmibXs4QpIyxCu1HHSjbqsrcQK/vadeRA=",
"owner": "folke",
"repo": "noice.nvim",
- "rev": "f119045f38792ad5311e5f9be7a879e4c1a95fe0",
+ "rev": "2087bbf8cd64482b47fb5f33b5e0eabf329ab14b",
"type": "github"
},
"original": {
@@ -1007,11 +1105,11 @@
"plugin-nui-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716019714,
- "narHash": "sha256-JRVVRT1CZZTjr58L+gAer7eCg9/fMdAD0YD5ljNwl0Q=",
+ "lastModified": 1726376728,
+ "narHash": "sha256-90Wq+vT361mTaGU/SvAezqJkX9HHmZ2GI2fKBDxPn04=",
"owner": "MunifTanjim",
"repo": "nui.nvim",
- "rev": "b1b3dcd6ed8f355c78bad3d395ff645be5f8b6ae",
+ "rev": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f",
"type": "github"
},
"original": {
@@ -1023,11 +1121,11 @@
"plugin-nvim-autopairs": {
"flake": false,
"locked": {
- "lastModified": 1716158088,
- "narHash": "sha256-YEAqjlzVrS/VLrkwGo3L7cNOE1LuyLYlBtkR2HA5oVk=",
+ "lastModified": 1727742362,
+ "narHash": "sha256-pqYOaEjKUd5YLVWX0Bf/kYT+sBlN1D24rOBuIz2BIqk=",
"owner": "windwp",
"repo": "nvim-autopairs",
- "rev": "c15de7e7981f1111642e7e53799e1211d4606cb9",
+ "rev": "ee297f215e95a60b01fde33275cc3c820eddeebe",
"type": "github"
},
"original": {
@@ -1039,11 +1137,11 @@
"plugin-nvim-bufferline-lua": {
"flake": false,
"locked": {
- "lastModified": 1716555412,
- "narHash": "sha256-8PCkY1zrlMrPGnQOb7MjqDXNlkeX46jrT4ScIL+MOwM=",
+ "lastModified": 1729768480,
+ "narHash": "sha256-MpSX8a51Avc9O1XxfWIDOVLiqD7omwAFIwSa02oXNs0=",
"owner": "akinsho",
"repo": "nvim-bufferline.lua",
- "rev": "99337f63f0a3c3ab9519f3d1da7618ca4f91cffe",
+ "rev": "5cc447cb2b463cb499c82eaeabbed4f5fa6a0a44",
"type": "github"
},
"original": {
@@ -1055,11 +1153,11 @@
"plugin-nvim-cmp": {
"flake": false,
"locked": {
- "lastModified": 1715954188,
- "narHash": "sha256-GhXfnWqpXFVM7Yi9+qEXHfA6LIMILcMG9pP4VYXuptE=",
+ "lastModified": 1730523275,
+ "narHash": "sha256-iNEoMl/X0nh2sAio1h+dkuobeOXRBXKFJCcElUyyW54=",
"owner": "hrsh7th",
"repo": "nvim-cmp",
- "rev": "5260e5e8ecadaf13e6b82cf867a909f54e15fd07",
+ "rev": "f17d9b4394027ff4442b298398dfcaab97e40c4f",
"type": "github"
},
"original": {
@@ -1071,11 +1169,11 @@
"plugin-nvim-colorizer-lua": {
"flake": false,
"locked": {
- "lastModified": 1703321305,
- "narHash": "sha256-oKvFN2K+ASlPNwj2rhptR/ErYgo6XKBPhXSZotDdCP0=",
+ "lastModified": 1730855006,
+ "narHash": "sha256-jDnTDUzslVa+4S2vAwqUZeJN+9Fxf5Naunf6uG54HLI=",
"owner": "NvChad",
"repo": "nvim-colorizer.lua",
- "rev": "85855b38011114929f4058efc97af1059ab3e41d",
+ "rev": "f134063618a65cad4d7415fddbd96ff7e0c5b4ae",
"type": "github"
},
"original": {
@@ -1103,11 +1201,11 @@
"plugin-nvim-dap": {
"flake": false,
"locked": {
- "lastModified": 1716747841,
- "narHash": "sha256-uzivFy0ZNLxAXDqkYNrNy1SSHPRrGv3OLVCNCRDiikU=",
+ "lastModified": 1730842757,
+ "narHash": "sha256-WiypPzEQnModkzgI7ikq2C9OKc/DBeGLZ8ZaKmzHt2c=",
"owner": "mfussenegger",
"repo": "nvim-dap",
- "rev": "922ebc75c2fa9305e36402fbd8c984c8638770a0",
+ "rev": "8517126e9323e346f6a99b3b594c5a940b914dcd",
"type": "github"
},
"original": {
@@ -1119,11 +1217,11 @@
"plugin-nvim-dap-go": {
"flake": false,
"locked": {
- "lastModified": 1716775637,
- "narHash": "sha256-B8A+ven18YgePLxAN3Q/j5NFb0FeTHCQak1uzaNDX9c=",
+ "lastModified": 1727922873,
+ "narHash": "sha256-wcGp5df1ER5T5oLVitWE02OywgJs3V4pazcGU5qVaUY=",
"owner": "leoluz",
"repo": "nvim-dap-go",
- "rev": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1",
+ "rev": "6aa88167ea1224bcef578e8c7160fe8afbb44848",
"type": "github"
},
"original": {
@@ -1135,11 +1233,11 @@
"plugin-nvim-dap-ui": {
"flake": false,
"locked": {
- "lastModified": 1716237606,
- "narHash": "sha256-paiyLNzqUq9G3U8qn8yl1AjHJzTTa17exA05QO09nGA=",
+ "lastModified": 1727897692,
+ "narHash": "sha256-kg7lyVBeuBqPCVzvt3pBoonQupgf1nGh3EvCF/astf4=",
"owner": "rcarriga",
"repo": "nvim-dap-ui",
- "rev": "334cf3038c4756e6ab999cbac67c847fb654c190",
+ "rev": "ffa89839f97bad360e78428d5c740fdad9a0ff02",
"type": "github"
},
"original": {
@@ -1151,11 +1249,11 @@
"plugin-nvim-docs-view": {
"flake": false,
"locked": {
- "lastModified": 1705711563,
- "narHash": "sha256-N5PrJKhF6pHkel4EyAllNdEYQRninfSyaAXPbuAiD+s=",
+ "lastModified": 1723781320,
+ "narHash": "sha256-6kd3IWsD72eYe+q1w78gcFcK9LalCQHCqtSwwqQR3Ew=",
"owner": "amrbashir",
"repo": "nvim-docs-view",
- "rev": "78d88bca16f32a430572758677f9246f6d7f7b94",
+ "rev": "365593534e0acd762bfddce6e8313315ffa4fa36",
"type": "github"
},
"original": {
@@ -1167,11 +1265,11 @@
"plugin-nvim-lightbulb": {
"flake": false,
"locked": {
- "lastModified": 1689887436,
- "narHash": "sha256-Meoop66jINllnxN6aohuPmU7DEjn64FMq/b8zuy9FEQ=",
+ "lastModified": 1729134062,
+ "narHash": "sha256-JfXSuOBwyxgH/PzzcBQ7OqoXHkLGZSCYutYHLocbTto=",
"owner": "kosayoda",
"repo": "nvim-lightbulb",
- "rev": "8f00b89dd1b1dbde16872bee5fbcee2e58c9b8e9",
+ "rev": "33d4c95e0e853956bc9468b70b3064c87d5abaca",
"type": "github"
},
"original": {
@@ -1183,11 +1281,11 @@
"plugin-nvim-lspconfig": {
"flake": false,
"locked": {
- "lastModified": 1716498901,
- "narHash": "sha256-PMMqPDnq4Q8gWeKQ2WPE+pOf1R1G61wJ+bAWkHpQlzE=",
+ "lastModified": 1730978746,
+ "narHash": "sha256-N1vqosgHHVUWoszhdGImH//mb7hiSWWsG1Pq9WNnQxk=",
"owner": "neovim",
"repo": "nvim-lspconfig",
- "rev": "b972e7154bc94ab4ecdbb38c8edbccac36f83996",
+ "rev": "d01864641c6e43c681c3e9f6cf4745c75fdd9dcc",
"type": "github"
},
"original": {
@@ -1196,6 +1294,22 @@
"type": "github"
}
},
+ "plugin-nvim-metals": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1728295172,
+ "narHash": "sha256-ja/+MNxZ3H9io9jDwm5rhE6iKNi86a22eCOY75g19O8=",
+ "owner": "scalameta",
+ "repo": "nvim-metals",
+ "rev": "f861db9fda55939797ac1b05238c49b0dcdc3bdb",
+ "type": "github"
+ },
+ "original": {
+ "owner": "scalameta",
+ "repo": "nvim-metals",
+ "type": "github"
+ }
+ },
"plugin-nvim-navbuddy": {
"flake": false,
"locked": {
@@ -1231,11 +1345,11 @@
"plugin-nvim-neoclip": {
"flake": false,
"locked": {
- "lastModified": 1701664728,
- "narHash": "sha256-QtqLKdrDGzIiSEo3DZtv0C7wx3KlrcyePoIYdvH6vpk=",
+ "lastModified": 1725927226,
+ "narHash": "sha256-GHkTIGPgX5j1wUS9EW/fGOp3NSRjfVaz+6o1Aehy2Xw=",
"owner": "AckslD",
"repo": "nvim-neoclip.lua",
- "rev": "798cd0592a81c185465db3a091a0ff8a21af60fd",
+ "rev": "32e05f2d23dc5b6a284a688c0535a83d1bfc633f",
"type": "github"
},
"original": {
@@ -1247,11 +1361,11 @@
"plugin-nvim-nio": {
"flake": false,
"locked": {
- "lastModified": 1716391538,
- "narHash": "sha256-UffuTu7mF96LHk0MQRNrsgDyo1QWa/1i5eJKjZkuG8k=",
+ "lastModified": 1720707425,
+ "narHash": "sha256-i6imNTb1xrfBlaeOyxyIwAZ/+o6ew9C4/z34a7/BgFg=",
"owner": "nvim-neotest",
"repo": "nvim-nio",
- "rev": "632024157d01e8bc48fd7df6a7de8ffe3fdd4f3a",
+ "rev": "a428f309119086dc78dd4b19306d2d67be884eee",
"type": "github"
},
"original": {
@@ -1263,11 +1377,11 @@
"plugin-nvim-notify": {
"flake": false,
"locked": {
- "lastModified": 1715959703,
- "narHash": "sha256-wxyHwL/uFdp6w32CVHgSOWkzRrIRuFvWh+J2401RAAA=",
+ "lastModified": 1727022370,
+ "narHash": "sha256-Sd7IR5roXHOKRCxhqtYMhWfEltyRJMDEMDO/ecSKenE=",
"owner": "rcarriga",
"repo": "nvim-notify",
- "rev": "d333b6f167900f6d9d42a59005d82919830626bf",
+ "rev": "fbef5d32be8466dd76544a257d3f3dce20082a07",
"type": "github"
},
"original": {
@@ -1276,14 +1390,30 @@
"type": "github"
}
},
+ "plugin-nvim-scrollbar": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1729162132,
+ "narHash": "sha256-/nB7eP2Rz/A9zMXrNEH4FReo6eZS0C/SEGvKhxV7AUA=",
+ "owner": "petertriho",
+ "repo": "nvim-scrollbar",
+ "rev": "6994eb9f73d5fdc36ee2c8717940e8c853e51a49",
+ "type": "github"
+ },
+ "original": {
+ "owner": "petertriho",
+ "repo": "nvim-scrollbar",
+ "type": "github"
+ }
+ },
"plugin-nvim-session-manager": {
"flake": false,
"locked": {
- "lastModified": 1716560093,
- "narHash": "sha256-A6oHIg8PG84L7QIRpo9WXKzMq4EUe92jQIxObOxpFmg=",
+ "lastModified": 1728423652,
+ "narHash": "sha256-W9jtfVXHC8MQJwdbxakNqhd+xh/auQb3U09XKdN2Wzw=",
"owner": "Shatur",
"repo": "neovim-session-manager",
- "rev": "b552ee8667037be5d0291229279a35af25e515fb",
+ "rev": "ce43f2eb2a52492157d7742e5f684b9a42bb3e5c",
"type": "github"
},
"original": {
@@ -1295,11 +1425,11 @@
"plugin-nvim-surround": {
"flake": false,
"locked": {
- "lastModified": 1715892699,
- "narHash": "sha256-Mg60htwXPqNKu+JnexKiKF3Huvr7pBNdvc6f3Kt2FRA=",
+ "lastModified": 1730136751,
+ "narHash": "sha256-XVwvoM3Id9lCi9EgK/Y944UuCXj9niTnZ5I5+d1yVqQ=",
"owner": "kylechui",
"repo": "nvim-surround",
- "rev": "79aaa42da1f698ed31bcbe7f83081f69dca7ba17",
+ "rev": "dca2e998ff26681ee422b92c6ed39b3d2908d8a9",
"type": "github"
},
"original": {
@@ -1311,11 +1441,11 @@
"plugin-nvim-tree-lua": {
"flake": false,
"locked": {
- "lastModified": 1716687243,
- "narHash": "sha256-E6J9d0LJMK+Owj/iWbGVZBiVL/NI1xd5P0NNQpUmXj4=",
+ "lastModified": 1731123986,
+ "narHash": "sha256-zt04Q3Mr1k9x6X6l3F9iy3C1edQYha4pQhDsOX5atPM=",
"owner": "nvim-tree",
"repo": "nvim-tree.lua",
- "rev": "517e4fbb9ef3c0986da7047f44b4b91a2400f93c",
+ "rev": "c7639482a1598f4756798df1b2d72f79fe5bb34f",
"type": "github"
},
"original": {
@@ -1327,11 +1457,11 @@
"plugin-nvim-treesitter-context": {
"flake": false,
"locked": {
- "lastModified": 1716388265,
- "narHash": "sha256-EY5Si6t7LXcxOP3ubGAAMd3lgbeaCOCIybSKi1Ucx98=",
+ "lastModified": 1731163983,
+ "narHash": "sha256-oRmhwRIynCNmgKpTtwUIliYf0Qo+zP3ymEWYs+vzx8A=",
"owner": "nvim-treesitter",
"repo": "nvim-treesitter-context",
- "rev": "f62bfe19e0fbc13ae95649dfb3cf22f4ff85b683",
+ "rev": "158377d700596367a91ea41818f76abdbf75a232",
"type": "github"
},
"original": {
@@ -1343,11 +1473,11 @@
"plugin-nvim-ts-autotag": {
"flake": false,
"locked": {
- "lastModified": 1716420040,
- "narHash": "sha256-gy6OVR2iH361XMDDo0dqxJsAxo+5nXr3wP42pieeCUg=",
+ "lastModified": 1724798540,
+ "narHash": "sha256-QEzUKvT+ChYSa9F4zg3Lw+7Sj0JzJem9nh2mWmS8Y+I=",
"owner": "windwp",
"repo": "nvim-ts-autotag",
- "rev": "8ae54b90e36ef1fc5267214b30c2cbff71525fe4",
+ "rev": "e239a560f338be31337e7abc3ee42515daf23f5e",
"type": "github"
},
"original": {
@@ -1359,11 +1489,11 @@
"plugin-nvim-web-devicons": {
"flake": false,
"locked": {
- "lastModified": 1716609001,
- "narHash": "sha256-fmbsnNVZ6nBorBILwPfEgcDDWZCkh9YZH/aC343FxP4=",
+ "lastModified": 1728608318,
+ "narHash": "sha256-SUWEOp+QcfHjYaqqr4Zwvh0x91IAJXvrdMkQtuWMlGc=",
"owner": "nvim-tree",
"repo": "nvim-web-devicons",
- "rev": "b77921fdc44833c994fdb389d658ccbce5490c16",
+ "rev": "19d257cf889f79f4022163c3fbb5e08639077bd8",
"type": "github"
},
"original": {
@@ -1375,11 +1505,11 @@
"plugin-obsidian-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716489161,
- "narHash": "sha256-R7q3PmDMYQtDTE1JZgQtvArBq55MnvNdcChOsuivSCo=",
+ "lastModified": 1722536347,
+ "narHash": "sha256-mbq7fAPmlwOAbWlN3lGX9WGBKTV8cAPZx8pnRCyszJc=",
"owner": "epwalsh",
"repo": "obsidian.nvim",
- "rev": "0890a3f4e1711d98b5aa78bf40d2c5b81ef3c39f",
+ "rev": "14e0427bef6c55da0d63f9a313fd9941be3a2479",
"type": "github"
},
"original": {
@@ -1388,14 +1518,30 @@
"type": "github"
}
},
+ "plugin-omnisharp-extended": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1719701797,
+ "narHash": "sha256-P1ZCaW8w+e3H3oBhbEjDc7vuR+XuxJmb/7IbPL3KWi4=",
+ "owner": "Hoffs",
+ "repo": "omnisharp-extended-lsp.nvim",
+ "rev": "aad7bf06b4ca0de816b919d475a75b30f5f62b61",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Hoffs",
+ "repo": "omnisharp-extended-lsp.nvim",
+ "type": "github"
+ }
+ },
"plugin-onedark": {
"flake": false,
"locked": {
- "lastModified": 1715454207,
- "narHash": "sha256-GERMsVNELbeRrKsiPeSKcwNI+bH4C79koTBRtRMGqvc=",
+ "lastModified": 1731171496,
+ "narHash": "sha256-NLHq9SUUo81m50NPQe8852uZbo4Mo4No10N3ptX43t0=",
"owner": "navarasu",
"repo": "onedark.nvim",
- "rev": "8e4b79b0e6495ddf29552178eceba1e147e6cecf",
+ "rev": "67a74c275d1116d575ab25485d1bfa6b2a9c38a6",
"type": "github"
},
"original": {
@@ -1407,11 +1553,11 @@
"plugin-orgmode-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716750850,
- "narHash": "sha256-3xsdklkUuJwUzUieZT6eGIgDZUdVEGeyhxxUe99TOAA=",
+ "lastModified": 1730794385,
+ "narHash": "sha256-Rt/qhulJjNolQLz9OdP25U2+3KButPHgHc886yFpLpE=",
"owner": "nvim-orgmode",
"repo": "orgmode",
- "rev": "cb3c9bf6caf3411af88a9a1a0b7eb9be57b9741c",
+ "rev": "fafb8f14d85a68d8f0fca812444cc0fd594f0168",
"type": "github"
},
"original": {
@@ -1420,14 +1566,30 @@
"type": "github"
}
},
+ "plugin-otter-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1724585935,
+ "narHash": "sha256-euHwoK2WHLF/hrjLY2P4yGrIbYyBN38FL3q4CKNZmLY=",
+ "owner": "jmbuhr",
+ "repo": "otter.nvim",
+ "rev": "ca9ce67d0399380b659923381b58d174344c9ee7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "jmbuhr",
+ "repo": "otter.nvim",
+ "type": "github"
+ }
+ },
"plugin-oxocarbon": {
"flake": false,
"locked": {
- "lastModified": 1701119822,
- "narHash": "sha256-++JALLPklok9VY2ChOddTYDvDNVadmCeB98jCAJYCZ0=",
+ "lastModified": 1724853107,
+ "narHash": "sha256-Hi/nATEvZ4a6Yxc66KtuJqss6kQV19cmtIlhCw6alOI=",
"owner": "nyoom-engineering",
"repo": "oxocarbon.nvim",
- "rev": "c5846d10cbe4131cc5e32c6d00beaf59cb60f6a2",
+ "rev": "004777819ba294423b638a35a75c9f0c7be758ed",
"type": "github"
},
"original": {
@@ -1436,14 +1598,30 @@
"type": "github"
}
},
+ "plugin-pathlib-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1724943804,
+ "narHash": "sha256-YhCJeNKlcjgg3q51UWFhuIEPzNueC8YTpeuPPJDndvw=",
+ "owner": "pysan3",
+ "repo": "pathlib.nvim",
+ "rev": "57e5598af6fe253761c1b48e0b59b7cd6699e2c1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "pysan3",
+ "repo": "pathlib.nvim",
+ "type": "github"
+ }
+ },
"plugin-plenary-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716230027,
- "narHash": "sha256-5Jf2mWFVDofXBcXLbMa417mqlEPWLA+cQIZH/vNEV1g=",
+ "lastModified": 1726602776,
+ "narHash": "sha256-bmmPekAvuBvLQmrnnX0n+FRBqfVxBsObhxIEkDGAla4=",
"owner": "nvim-lua",
"repo": "plenary.nvim",
- "rev": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683",
+ "rev": "2d9b06177a975543726ce5c73fca176cedbffe9d",
"type": "github"
},
"original": {
@@ -1452,6 +1630,22 @@
"type": "github"
}
},
+ "plugin-precognition-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1730325090,
+ "narHash": "sha256-onY1Aa+dwLR1wRua52hpSXj6zZOZXjkUlDjDa0xEEcE=",
+ "owner": "tris203",
+ "repo": "precognition.nvim",
+ "rev": "0189e8d6f96275a079b2805d68d49414871885cd",
+ "type": "github"
+ },
+ "original": {
+ "owner": "tris203",
+ "repo": "precognition.nvim",
+ "type": "github"
+ }
+ },
"plugin-project-nvim": {
"flake": false,
"locked": {
@@ -1471,11 +1665,11 @@
"plugin-registers": {
"flake": false,
"locked": {
- "lastModified": 1703954003,
- "narHash": "sha256-/MwIOR7H6ZkH/uLZOcMgg9XOWQB0yYYonbSKl51bXzo=",
+ "lastModified": 1730794647,
+ "narHash": "sha256-M7uR3yXYUQ4I8Gt8P6k25q67UNwksRDPKGrS/FCqrt0=",
"owner": "tversteeg",
"repo": "registers.nvim",
- "rev": "22bb98f93a423252fffeb3531f7bc12a3e07b63f",
+ "rev": "c217f8f369e0886776cda6c94eab839b30a8940d",
"type": "github"
},
"original": {
@@ -1487,11 +1681,11 @@
"plugin-rose-pine": {
"flake": false,
"locked": {
- "lastModified": 1716691958,
- "narHash": "sha256-mpBx0R9tR4KrOMO9J0gg2aOeHtiU9zK8xoa7Ebkx0n8=",
+ "lastModified": 1729724348,
+ "narHash": "sha256-/a4pwuVJ5odm3Iio2MeoqAm8GlWIPI91mM4cVnSy/gE=",
"owner": "rose-pine",
"repo": "neovim",
- "rev": "87aa437172357ad8f916942bca249ceadc6c68b1",
+ "rev": "07a887a7bef4aacea8c7caebaf8cbf808cdc7a8e",
"type": "github"
},
"original": {
@@ -1500,14 +1694,30 @@
"type": "github"
}
},
+ "plugin-rtp-nvim": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1724409589,
+ "narHash": "sha256-lmJbiD7I7MTEEpukESs67uAmLyn+p66hrUKLbEHp0Kw=",
+ "owner": "nvim-neorocks",
+ "repo": "rtp.nvim",
+ "rev": "494ddfc888bb466555d90ace731856de1320fe45",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nvim-neorocks",
+ "repo": "rtp.nvim",
+ "type": "github"
+ }
+ },
"plugin-rustaceanvim": {
"flake": false,
"locked": {
- "lastModified": 1720595685,
- "narHash": "sha256-Mx8pB9ECjFpbfmZPuXfpwoE5pUZ363M53f27ht7MBmA=",
+ "lastModified": 1731172933,
+ "narHash": "sha256-B2AdSgGPANCBbVN+Sd7gvJ16ODZZwv4WSOxnRs3SWnk=",
"owner": "mrcjkb",
"repo": "rustaceanvim",
- "rev": "047f9c9d8cd2861745eb9de6c1570ee0875aa795",
+ "rev": "244443311f1c4e34ec1ea7f219a4b682b6ec066e",
"type": "github"
},
"original": {
@@ -1516,22 +1726,6 @@
"type": "github"
}
},
- "plugin-scrollbar-nvim": {
- "flake": false,
- "locked": {
- "lastModified": 1684886154,
- "narHash": "sha256-zLBexSxQCn9HPY04a9w/UCJP1F5ShI2X12I9xE9H0cM=",
- "owner": "petertriho",
- "repo": "nvim-scrollbar",
- "rev": "35f99d559041c7c0eff3a41f9093581ceea534e8",
- "type": "github"
- },
- "original": {
- "owner": "petertriho",
- "repo": "nvim-scrollbar",
- "type": "github"
- }
- },
"plugin-smartcolumn": {
"flake": false,
"locked": {
@@ -1567,11 +1761,11 @@
"plugin-tabular": {
"flake": false,
"locked": {
- "lastModified": 1550598128,
- "narHash": "sha256-irolBA/m3YIaezl+90h5G+xUOpad+3u44uJqDs4JCUs=",
+ "lastModified": 1720022617,
+ "narHash": "sha256-qmDpdg3Tl3W4JSovRb4ODlrKMjRL5CaVI05YBn0Q0LI=",
"owner": "godlygeek",
"repo": "tabular",
- "rev": "339091ac4dd1f17e225fe7d57b48aff55f99b23a",
+ "rev": "12437cd1b53488e24936ec4b091c9324cafee311",
"type": "github"
},
"original": {
@@ -1583,11 +1777,11 @@
"plugin-telescope": {
"flake": false,
"locked": {
- "lastModified": 1716732931,
- "narHash": "sha256-JXdpKfrSvrzpTqy+g9Bg85/vIDTUZfDr+ZhxH8wJDxA=",
+ "lastModified": 1730164948,
+ "narHash": "sha256-Qa/f+0asQvA8mhIUajC4BGZCI92OqA6ySVoQSC3ZY3s=",
"owner": "nvim-telescope",
"repo": "telescope.nvim",
- "rev": "349660c0d35da06459ee8589af77de2086b652ce",
+ "rev": "85922dde3767e01d42a08e750a773effbffaea3e",
"type": "github"
},
"original": {
@@ -1596,14 +1790,30 @@
"type": "github"
}
},
+ "plugin-tiny-devicons-auto-colors": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1724403745,
+ "narHash": "sha256-Ndkbvxn/x7+fxEYD7JIygqUiItuhoY+4+DaL/pJGKdc=",
+ "owner": "rachartier",
+ "repo": "tiny-devicons-auto-colors.nvim",
+ "rev": "a39fa4c92268832f6034306793b8acbfec2a7549",
+ "type": "github"
+ },
+ "original": {
+ "owner": "rachartier",
+ "repo": "tiny-devicons-auto-colors.nvim",
+ "type": "github"
+ }
+ },
"plugin-todo-comments": {
"flake": false,
"locked": {
- "lastModified": 1716400082,
- "narHash": "sha256-ZJp0emoHogSdhXPIH74MH4CznxhCmMbO243dqxAZMJo=",
+ "lastModified": 1726481242,
+ "narHash": "sha256-EH4Sy7qNkzOgA1INFzrtsRfD79TgMqSbKUdundyw22w=",
"owner": "folke",
"repo": "todo-comments.nvim",
- "rev": "e1549807066947818113a7d7ed48f637e49620d3",
+ "rev": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0",
"type": "github"
},
"original": {
@@ -1615,11 +1825,11 @@
"plugin-toggleterm-nvim": {
"flake": false,
"locked": {
- "lastModified": 1716115307,
- "narHash": "sha256-h82zisizLm0FOt4l8lzgC/spFk3R5Gx25A5YgULwW8U=",
+ "lastModified": 1731162901,
+ "narHash": "sha256-g1FwgCc3a8Fak0Nb0gQQ+SI44uyAGaH1tIk1qpaAPEY=",
"owner": "akinsho",
"repo": "toggleterm.nvim",
- "rev": "fee58a0473fd92b28c34f8f724e4918b15ba30a3",
+ "rev": "87b2d6a3cab8e2bd9a0255427074285f0365398d",
"type": "github"
},
"original": {
@@ -1631,11 +1841,11 @@
"plugin-tokyonight": {
"flake": false,
"locked": {
- "lastModified": 1716732360,
- "narHash": "sha256-ZWxK0q8kUYHOk+ykH1m4901trnuHN8O9hkOZR6HdC+Y=",
+ "lastModified": 1730826006,
+ "narHash": "sha256-BkSkC9UKcDExpIx91air280soPa8QIa3eK/e/E5QYLc=",
"owner": "folke",
"repo": "tokyonight.nvim",
- "rev": "0fae425aaab04a5f97666bd431b96f2f19c36935",
+ "rev": "ce91ba480070c95f40753e4663e32b4632ac6db3",
"type": "github"
},
"original": {
@@ -1647,11 +1857,11 @@
"plugin-trouble": {
"flake": false,
"locked": {
- "lastModified": 1716133735,
- "narHash": "sha256-D3dqI4NRgEG4BCDLQ3ci9lgYxt90XyWDQXlk4/uuR6M=",
+ "lastModified": 1730928038,
+ "narHash": "sha256-zUh0o+piRVDMSXLjBj+IygZj3VX7i5nXsaNn2pPu1fg=",
"owner": "folke",
"repo": "trouble.nvim",
- "rev": "a8264a65a0b894832ea642844f5b7c30112c458f",
+ "rev": "3dc00c0447c016cd43e03054c3d49436a1f2076d",
"type": "github"
},
"original": {
@@ -1663,11 +1873,11 @@
"plugin-ts-error-translator": {
"flake": false,
"locked": {
- "lastModified": 1712269172,
- "narHash": "sha256-NJ0qfKvkwZ/0GolAeATlQLyQ7nGN6Z6q3uRqI+73wPk=",
+ "lastModified": 1727112009,
+ "narHash": "sha256-8eUDQJYfhEsqv9G1QU96k5tTIcVa8oR8/SAoFN1XZ5I=",
"owner": "dmmulroy",
"repo": "ts-error-translator.nvim",
- "rev": "11ae55b28bde02663b5f983f59b0e3fd9c4e845b",
+ "rev": "3bd23c4cfe4c2edc99278e01b75cdb2a26f03152",
"type": "github"
},
"original": {
@@ -1695,11 +1905,11 @@
"plugin-vim-fugitive": {
"flake": false,
"locked": {
- "lastModified": 1716130336,
- "narHash": "sha256-nyNtb3nsS/zFdSNRyXabcGIabAwgivJIUFB2c62vXmA=",
+ "lastModified": 1725670815,
+ "narHash": "sha256-ArYerBws+MBY4BpKh16J5TfVTrA0OFKPoZq7c2YQjp0=",
"owner": "tpope",
"repo": "vim-fugitive",
- "rev": "4f59455d2388e113bd510e85b310d15b9228ca0d",
+ "rev": "d4877e54cef67f5af4f950935b1ade19ed6b7370",
"type": "github"
},
"original": {
@@ -1727,11 +1937,11 @@
"plugin-vim-markdown": {
"flake": false,
"locked": {
- "lastModified": 1709279705,
- "narHash": "sha256-eKwWdyvMZ7FV3FvOtqWVD7pulXNnhbEEjHq7MYg1woU=",
+ "lastModified": 1726813437,
+ "narHash": "sha256-ZCCSjZ5Xok4rnIwfa4VUEaz6d3oW9066l0EkoqiTppM=",
"owner": "preservim",
"repo": "vim-markdown",
- "rev": "a657e697376909c41475a686eeef7fc7a4972d94",
+ "rev": "8f6cb3a6ca4e3b6bcda0730145a0b700f3481b51",
"type": "github"
},
"original": {
@@ -1743,11 +1953,11 @@
"plugin-vim-repeat": {
"flake": false,
"locked": {
- "lastModified": 1611544268,
- "narHash": "sha256-8rfZa3uKXB3TRCqaDHZ6DfzNbm7WaYnLvmTNzYtnKHg=",
+ "lastModified": 1720473942,
+ "narHash": "sha256-G/dmkq1KtSHIl+I5p3LfO6mGPS3eyLRbEEsuLbTpGlk=",
"owner": "tpope",
"repo": "vim-repeat",
- "rev": "24afe922e6a05891756ecf331f39a1f6743d3d5a",
+ "rev": "65846025c15494983dafe5e3b46c8f88ab2e9635",
"type": "github"
},
"original": {
@@ -1772,30 +1982,14 @@
"type": "github"
}
},
- "plugin-vim-vsnip": {
- "flake": false,
- "locked": {
- "lastModified": 1704937299,
- "narHash": "sha256-gvm6z4pgSULBVPukewRyjwxZ0vZgreQWbG/0kOB1QBo=",
- "owner": "hrsh7th",
- "repo": "vim-vsnip",
- "rev": "02a8e79295c9733434aab4e0e2b8c4b7cea9f3a9",
- "type": "github"
- },
- "original": {
- "owner": "hrsh7th",
- "repo": "vim-vsnip",
- "type": "github"
- }
- },
"plugin-which-key": {
"flake": false,
"locked": {
- "lastModified": 1697801635,
- "narHash": "sha256-uvghPj/teWrRMm09Gh8iQ/LV2nYJw0lmoiZK6L4+1cY=",
+ "lastModified": 1730919714,
+ "narHash": "sha256-5t6UnOP2+CXB55/C4YWbp2pE+xKDLMvCJK8m085Fk4w=",
"owner": "folke",
"repo": "which-key.nvim",
- "rev": "4433e5ec9a507e5097571ed55c02ea9658fb268a",
+ "rev": "68e37e12913a66b60073906f5d3f14dee0de19f2",
"type": "github"
},
"original": {
@@ -1833,6 +2027,7 @@
"nixpkgs": "nixpkgs",
"nmd": "nmd",
"plugin-alpha-nvim": "plugin-alpha-nvim",
+ "plugin-base16": "plugin-base16",
"plugin-bufdelete-nvim": "plugin-bufdelete-nvim",
"plugin-catppuccin": "plugin-catppuccin",
"plugin-ccc": "plugin-ccc",
@@ -1841,15 +2036,16 @@
"plugin-cheatsheet-nvim": "plugin-cheatsheet-nvim",
"plugin-cinnamon-nvim": "plugin-cinnamon-nvim",
"plugin-cmp-buffer": "plugin-cmp-buffer",
+ "plugin-cmp-luasnip": "plugin-cmp-luasnip",
"plugin-cmp-nvim-lsp": "plugin-cmp-nvim-lsp",
"plugin-cmp-path": "plugin-cmp-path",
"plugin-cmp-treesitter": "plugin-cmp-treesitter",
- "plugin-cmp-vsnip": "plugin-cmp-vsnip",
"plugin-codewindow-nvim": "plugin-codewindow-nvim",
"plugin-comment-nvim": "plugin-comment-nvim",
"plugin-copilot-cmp": "plugin-copilot-cmp",
"plugin-copilot-lua": "plugin-copilot-lua",
"plugin-crates-nvim": "plugin-crates-nvim",
+ "plugin-csharpls-extended": "plugin-csharpls-extended",
"plugin-dashboard-nvim": "plugin-dashboard-nvim",
"plugin-diffview-nvim": "plugin-diffview-nvim",
"plugin-dracula": "plugin-dracula",
@@ -1858,6 +2054,7 @@
"plugin-fastaction-nvim": "plugin-fastaction-nvim",
"plugin-fidget-nvim": "plugin-fidget-nvim",
"plugin-flutter-tools": "plugin-flutter-tools",
+ "plugin-friendly-snippets": "plugin-friendly-snippets",
"plugin-gesture-nvim": "plugin-gesture-nvim",
"plugin-gitsigns-nvim": "plugin-gitsigns-nvim",
"plugin-glow-nvim": "plugin-glow-nvim",
@@ -1872,13 +2069,19 @@
"plugin-lsp-signature": "plugin-lsp-signature",
"plugin-lspkind": "plugin-lspkind",
"plugin-lspsaga": "plugin-lspsaga",
+ "plugin-lua-utils-nvim": "plugin-lua-utils-nvim",
"plugin-lualine": "plugin-lualine",
+ "plugin-luasnip": "plugin-luasnip",
+ "plugin-lz-n": "plugin-lz-n",
+ "plugin-lzn-auto-require": "plugin-lzn-auto-require",
"plugin-mind-nvim": "plugin-mind-nvim",
"plugin-minimap-vim": "plugin-minimap-vim",
"plugin-modes-nvim": "plugin-modes-nvim",
"plugin-neo-tree-nvim": "plugin-neo-tree-nvim",
"plugin-neocord": "plugin-neocord",
"plugin-neodev-nvim": "plugin-neodev-nvim",
+ "plugin-neorg": "plugin-neorg",
+ "plugin-neorg-telescope": "plugin-neorg-telescope",
"plugin-new-file-template-nvim": "plugin-new-file-template-nvim",
"plugin-noice-nvim": "plugin-noice-nvim",
"plugin-none-ls": "plugin-none-ls",
@@ -1894,11 +2097,13 @@
"plugin-nvim-docs-view": "plugin-nvim-docs-view",
"plugin-nvim-lightbulb": "plugin-nvim-lightbulb",
"plugin-nvim-lspconfig": "plugin-nvim-lspconfig",
+ "plugin-nvim-metals": "plugin-nvim-metals",
"plugin-nvim-navbuddy": "plugin-nvim-navbuddy",
"plugin-nvim-navic": "plugin-nvim-navic",
"plugin-nvim-neoclip": "plugin-nvim-neoclip",
"plugin-nvim-nio": "plugin-nvim-nio",
"plugin-nvim-notify": "plugin-nvim-notify",
+ "plugin-nvim-scrollbar": "plugin-nvim-scrollbar",
"plugin-nvim-session-manager": "plugin-nvim-session-manager",
"plugin-nvim-surround": "plugin-nvim-surround",
"plugin-nvim-tree-lua": "plugin-nvim-tree-lua",
@@ -1906,19 +2111,24 @@
"plugin-nvim-ts-autotag": "plugin-nvim-ts-autotag",
"plugin-nvim-web-devicons": "plugin-nvim-web-devicons",
"plugin-obsidian-nvim": "plugin-obsidian-nvim",
+ "plugin-omnisharp-extended": "plugin-omnisharp-extended",
"plugin-onedark": "plugin-onedark",
"plugin-orgmode-nvim": "plugin-orgmode-nvim",
+ "plugin-otter-nvim": "plugin-otter-nvim",
"plugin-oxocarbon": "plugin-oxocarbon",
+ "plugin-pathlib-nvim": "plugin-pathlib-nvim",
"plugin-plenary-nvim": "plugin-plenary-nvim",
+ "plugin-precognition-nvim": "plugin-precognition-nvim",
"plugin-project-nvim": "plugin-project-nvim",
"plugin-registers": "plugin-registers",
"plugin-rose-pine": "plugin-rose-pine",
+ "plugin-rtp-nvim": "plugin-rtp-nvim",
"plugin-rustaceanvim": "plugin-rustaceanvim",
- "plugin-scrollbar-nvim": "plugin-scrollbar-nvim",
"plugin-smartcolumn": "plugin-smartcolumn",
"plugin-sqls-nvim": "plugin-sqls-nvim",
"plugin-tabular": "plugin-tabular",
"plugin-telescope": "plugin-telescope",
+ "plugin-tiny-devicons-auto-colors": "plugin-tiny-devicons-auto-colors",
"plugin-todo-comments": "plugin-todo-comments",
"plugin-toggleterm-nvim": "plugin-toggleterm-nvim",
"plugin-tokyonight": "plugin-tokyonight",
@@ -1930,30 +2140,24 @@
"plugin-vim-markdown": "plugin-vim-markdown",
"plugin-vim-repeat": "plugin-vim-repeat",
"plugin-vim-startify": "plugin-vim-startify",
- "plugin-vim-vsnip": "plugin-vim-vsnip",
"plugin-which-key": "plugin-which-key",
"rnix-lsp": "rnix-lsp",
- "systems": "systems_2",
- "zig": "zig"
+ "systems": "systems_2"
}
},
"rust-overlay": {
"inputs": {
- "flake-utils": [
- "nil",
- "flake-utils"
- ],
"nixpkgs": [
"nil",
"nixpkgs"
]
},
"locked": {
- "lastModified": 1714529851,
- "narHash": "sha256-YMKJW880f7LHXVRzu93xa6Ek+QLECIu0IRQbXbzZe38=",
+ "lastModified": 1726453838,
+ "narHash": "sha256-pupsow4L79SBfNwT6vh/5RAbVZuhngIA0RTCZksXmZY=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "9ca720fdcf7865385ae3b93ecdf65f1a64cb475e",
+ "rev": "ca2e79cd22625d214b8437c2c4080ce79bd9f7d2",
"type": "github"
},
"original": {
@@ -2006,26 +2210,6 @@
"repo": "flake-utils",
"type": "github"
}
- },
- "zig": {
- "inputs": {
- "flake-compat": "flake-compat",
- "flake-utils": "flake-utils_2",
- "nixpkgs": "nixpkgs_3"
- },
- "locked": {
- "lastModified": 1716725305,
- "narHash": "sha256-LIz08gALt2wlutGXAEhNroEoIuPV5ePQB8LI4WzXcy8=",
- "owner": "mitchellh",
- "repo": "zig-overlay",
- "rev": "93b02a697561ecd438cfa5779727b5a1c300cb4c",
- "type": "github"
- },
- "original": {
- "owner": "mitchellh",
- "repo": "zig-overlay",
- "type": "github"
- }
}
},
"root": "root",
diff --git a/flake.nix b/flake.nix
index 06849729..4e417e7f 100644
--- a/flake.nix
+++ b/flake.nix
@@ -13,14 +13,15 @@
inherit inputs;
specialArgs = {inherit lib;};
} {
- # provide overridable systems
- # https://github.com/nix-systems/nix-systems
+ # Allow users to bring their own systems.
+ # «https://github.com/nix-systems/nix-systems»
systems = import inputs.systems;
imports = [
./flake/apps.nix
./flake/legacyPackages.nix
./flake/overlays.nix
./flake/packages.nix
+ ./flake/develop.nix
];
flake = {
@@ -56,19 +57,20 @@
};
};
- perSystem = {
- self',
- config,
- pkgs,
- ...
- }: {
+ perSystem = {pkgs, ...}: {
+ # Provide the default formatter. `nix fmt` in project root
+ # will format available files with the correct formatter.
+ # P.S: Please do not format with nixfmt! It messes with many
+ # syntax elements and results in unreadable code.
formatter = pkgs.alejandra;
- devShells = {
- default = self'.devShells.lsp;
- nvim-nix = pkgs.mkShell {packages = [config.packages.nix];};
- lsp = pkgs.mkShell {
- packages = with pkgs; [nil statix deadnix alejandra];
- };
+
+ # Check if codebase is properly formatted.
+ # This can be initiated with `nix build .#checks..nix-fmt`
+ # or with `nix flake check`
+ checks = {
+ nix-fmt = pkgs.runCommand "nix-fmt-check" {nativeBuildInputs = [pkgs.alejandra];} ''
+ alejandra --check ${self} < /dev/null | tee $out
+ '';
};
};
};
@@ -90,10 +92,7 @@
flake = false;
};
- # TODO: get zig from the zig overlay instead of nixpkgs
- zig.url = "github:mitchellh/zig-overlay";
-
- # Langauge server (use master instead of nixpkgs)
+ # Language servers (use master instead of nixpkgs)
rnix-lsp.url = "github:nix-community/rnix-lsp";
nil = {
url = "github:oxalica/nil";
@@ -102,6 +101,22 @@
};
## 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";
@@ -159,7 +174,12 @@
flake = false;
};
- # language support
+ plugin-otter-nvim = {
+ url = "github:jmbuhr/otter.nvim";
+ flake = false;
+ };
+
+ # Language support
plugin-sqls-nvim = {
url = "github:nanotee/sqls.nvim";
flake = false;
@@ -190,6 +210,21 @@
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";
@@ -261,11 +296,6 @@
flake = false;
};
- plugin-cmp-vsnip = {
- url = "github:hrsh7th/cmp-vsnip";
- flake = false;
- };
-
plugin-cmp-path = {
url = "github:hrsh7th/cmp-path";
flake = false;
@@ -276,9 +306,19 @@
flake = false;
};
+ plugin-cmp-luasnip = {
+ url = "github:saadparwaiz1/cmp_luasnip";
+ flake = false;
+ };
+
# snippets
- plugin-vim-vsnip = {
- url = "github:hrsh7th/vim-vsnip";
+ plugin-luasnip = {
+ url = "github:L3MON4D3/LuaSnip";
+ flake = false;
+ };
+
+ plugin-friendly-snippets = {
+ url = "github:rafamadriz/friendly-snippets";
flake = false;
};
@@ -333,6 +373,11 @@
};
# Themes
+ plugin-base16 = {
+ url = "github:rrethy/base16-nvim";
+ flake = false;
+ };
+
plugin-tokyonight = {
url = "github:folke/tokyonight.nvim";
flake = false;
@@ -386,7 +431,7 @@
flake = false;
};
- plugin-scrollbar-nvim = {
+ plugin-nvim-scrollbar = {
url = "github:petertriho/nvim-scrollbar";
flake = false;
};
@@ -411,6 +456,11 @@
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;
@@ -509,6 +559,11 @@
flake = false;
};
+ plugin-precognition-nvim = {
+ url = "github:tris203/precognition.nvim";
+ flake = false;
+ };
+
# Note-taking
plugin-obsidian-nvim = {
url = "github:epwalsh/obsidian.nvim";
@@ -615,6 +670,26 @@
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";
diff --git a/flake/develop.nix b/flake/develop.nix
new file mode 100644
index 00000000..7b645288
--- /dev/null
+++ b/flake/develop.nix
@@ -0,0 +1,30 @@
+{lib, ...}: {
+ perSystem = {
+ pkgs,
+ config,
+ self',
+ ...
+ }: {
+ devShells = {
+ default = self'.devShells.lsp;
+ nvim-nix = pkgs.mkShellNoCC {packages = [config.packages.nix];};
+ lsp = pkgs.mkShellNoCC {
+ packages = with pkgs; [nil statix deadnix alejandra];
+ };
+ };
+
+ # This package exists to make development easier by providing the place and
+ # boilerplate to build a test nvf configuration. Feel free to use this for
+ # testing, but make sure to discard the changes before creating a pull
+ # request.
+ packages.dev = let
+ configuration = {};
+
+ customNeovim = lib.nvim.neovimConfiguration {
+ inherit pkgs;
+ modules = [configuration];
+ };
+ in
+ customNeovim.neovim;
+ };
+}
diff --git a/flake/packages.nix b/flake/packages.nix
index f8ad3c25..1f382927 100644
--- a/flake/packages.nix
+++ b/flake/packages.nix
@@ -8,6 +8,7 @@
docs = import ../docs {inherit pkgs inputs lib;};
in {
packages = {
+ inherit (docs.manual) htmlOpenTool;
# Documentation
docs = docs.manual.html;
docs-html = docs.manual.html;
@@ -18,7 +19,7 @@
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}
+ ${pkgs.xdg-utils}/bin/xdg-open ${docs.manual.html}
'';
# Exposed neovim configurations
@@ -28,10 +29,10 @@
# Published docker images
docker-nix = let
- inherit (pkgs) bash gitFull buildEnv dockerTools;
+ inherit (pkgs) bash gitFull buildEnv;
inherit (config.legacyPackages) neovim-nix;
in
- dockerTools.buildImage {
+ pkgs.dockerTools.buildImage {
name = "nvf";
tag = "latest";
diff --git a/lib/attrsets.nix b/lib/attrsets.nix
new file mode 100644
index 00000000..59275af9
--- /dev/null
+++ b/lib/attrsets.nix
@@ -0,0 +1,5 @@
+{lib}: let
+ inherit (builtins) listToAttrs;
+in {
+ mapListToAttrs = f: list: listToAttrs (map f list);
+}
diff --git a/lib/binds.nix b/lib/binds.nix
index 8c9e9a62..22bca735 100644
--- a/lib/binds.nix
+++ b/lib/binds.nix
@@ -67,6 +67,30 @@
mkLuaBinding binding.value action binding.description;
pushDownDefault = attr: mapAttrs (_: mkDefault) attr;
+
+ mkLznBinding = mode: key: action: desc: {
+ inherit mode desc key action;
+ };
+
+ mkLznExprBinding = mode: key: action: desc: {
+ inherit mode desc key action;
+ lua = true;
+ silent = true;
+ expr = true;
+ };
+
+ mkSetLznBinding = mode: binding: action: {
+ inherit action mode;
+ key = binding.value;
+ desc = binding.description;
+ };
+
+ mkSetLuaLznBinding = mode: binding: action: {
+ inherit action mode;
+ key = binding.value;
+ lua = true;
+ desc = binding.description;
+ };
};
in
binds
diff --git a/lib/configuration.nix b/lib/configuration.nix
deleted file mode 100644
index 1f3c59ac..00000000
--- a/lib/configuration.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- inputs,
- lib,
-}: let
- modulesWithInputs = import ../modules inputs;
-in
- {
- modules ? [],
- pkgs,
- check ? true,
- extraSpecialArgs ? {},
- extraModules ? [],
- ...
- }:
- modulesWithInputs {
- inherit pkgs lib check extraSpecialArgs extraModules;
- configuration.imports = modules;
- }
diff --git a/lib/default.nix b/lib/default.nix
index 2e4b7f85..e6ccd2a7 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -10,6 +10,7 @@
dag = import ./dag.nix {inherit lib;};
languages = import ./languages.nix {inherit lib;};
lists = import ./lists.nix {inherit lib;};
+ attrsets = import ./attrsets.nix {inherit lib;};
lua = import ./lua.nix {inherit lib;};
- neovimConfiguration = import ./configuration.nix {inherit inputs lib;};
+ neovimConfiguration = import ../modules {inherit inputs lib;};
}
diff --git a/lib/languages.nix b/lib/languages.nix
index e47202ee..52f1b5b8 100644
--- a/lib/languages.nix
+++ b/lib/languages.nix
@@ -2,8 +2,8 @@
{lib}: let
inherit (builtins) isString getAttr;
inherit (lib.options) mkOption;
- inherit (lib.attrsets) listToAttrs;
inherit (lib.types) bool;
+ inherit (lib.nvim.attrsets) mapListToAttrs;
in {
# Converts a boolean to a yes/no string. This is used in lots of
# configuration formats.
@@ -12,21 +12,21 @@ in {
config,
diagnosticsProviders,
}:
- listToAttrs
- (map (v: let
- type =
- if isString v
- then v
- else getAttr v.type;
- package =
- if isString v
- then diagnosticsProviders.${type}.package
- else v.package;
- in {
- name = "${lang}-diagnostics-${type}";
- value = diagnosticsProviders.${type}.nullConfig package;
- })
- config);
+ mapListToAttrs
+ (v: let
+ type =
+ if isString v
+ then v
+ else getAttr v.type;
+ package =
+ if isString v
+ then diagnosticsProviders.${type}.package
+ else v.package;
+ in {
+ name = "${lang}-diagnostics-${type}";
+ value = diagnosticsProviders.${type}.nullConfig package;
+ })
+ config;
mkEnable = desc:
mkOption {
diff --git a/lib/types/custom.nix b/lib/types/custom.nix
index a94735c5..3d4a2bcb 100644
--- a/lib/types/custom.nix
+++ b/lib/types/custom.nix
@@ -1,8 +1,9 @@
{lib}: let
- inherit (lib) isStringLike showOption showFiles getFiles mergeOneOption mergeEqualOption mkOptionType;
- inherit (lib.types) anything attrsOf;
+ inherit (lib.options) showOption showFiles getFiles mergeOneOption mergeEqualOption;
+ inherit (lib.strings) isString isStringLike;
+ inherit (lib.types) anything attrsOf listOf mkOptionType;
inherit (lib.nvim.types) anythingConcatLists;
- inherit (builtins) typeOf isAttrs any head concatLists stringLength;
+ inherit (builtins) typeOf isAttrs any head concatLists stringLength match;
in {
# HACK: Does this break anything in our case?
# A modified version of the nixpkgs anything type that concatenates lists
@@ -51,6 +52,16 @@ in {
(mergeFunctions.${commonType} or mergeEqualOption) loc defs;
};
+ mergelessListOf = elemType: let
+ super = listOf elemType;
+ in
+ super
+ // {
+ name = "mergelessListOf";
+ description = "mergeless ${super.description}";
+ merge = mergeEqualOption;
+ };
+
char = mkOptionType {
name = "char";
description = "character";
@@ -58,4 +69,11 @@ in {
check = value: stringLength value < 2;
merge = mergeEqualOption;
};
+
+ hexColor = mkOptionType {
+ name = "hex-color";
+ descriptionClass = "noun";
+ description = "RGB color in hex format";
+ check = v: isString v && (match "#?[0-9a-fA-F]{6}" v) != null;
+ };
}
diff --git a/lib/types/default.nix b/lib/types/default.nix
index 6751229c..73b35956 100644
--- a/lib/types/default.nix
+++ b/lib/types/default.nix
@@ -6,10 +6,10 @@
typesDag = import ./dag.nix {inherit lib;};
typesPlugin = import ./plugins.nix {inherit inputs lib;};
typesLanguage = import ./languages.nix {inherit lib;};
- typesCustom = import ./custom.nix {inherit lib;};
+ customTypes = import ./custom.nix {inherit lib;};
in {
inherit (typesDag) dagOf;
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType;
inherit (typesLanguage) diagnostics mkGrammarOption;
- inherit (typesCustom) anythingConcatLists char;
+ inherit (customTypes) anythingConcatLists char hexColor mergelessListOf;
}
diff --git a/lib/types/plugins.nix b/lib/types/plugins.nix
index 7d24163e..656b7ab8 100644
--- a/lib/types/plugins.nix
+++ b/lib/types/plugins.nix
@@ -97,7 +97,7 @@ in {
default = {};
type = submodule {
- freeformType = attrsOf anything;
+ freeformType = anything;
options = opts;
};
};
diff --git a/modules/default.nix b/modules/default.nix
index 1ae3b034..a2f8730d 100644
--- a/modules/default.nix
+++ b/modules/default.nix
@@ -1,10 +1,13 @@
-inputs: {
- configuration,
- pkgs,
+{
+ inputs,
lib,
- check ? true,
+}: {
+ pkgs,
extraSpecialArgs ? {},
+ modules ? [],
+ # deprecated
extraModules ? [],
+ configuration ? {},
}: let
inherit (pkgs) vimPlugins;
inherit (lib.strings) isString toString;
@@ -13,13 +16,25 @@ inputs: {
# import modules.nix with `check`, `pkgs` and `lib` as arguments
# check can be disabled while calling this file is called
# to avoid checking in all modules
- nvimModules = import ./modules.nix {inherit pkgs check lib;};
+ nvimModules = import ./modules.nix {inherit pkgs lib;};
# evaluate the extended library with the modules
# optionally with any additional modules passed by the user
module = lib.evalModules {
specialArgs = extraSpecialArgs // {modulesPath = toString ./.;};
- modules = concatLists [[configuration] nvimModules extraModules];
+ modules = concatLists [
+ nvimModules
+ modules
+ (lib.optional (configuration != {}) (lib.warn ''
+ nvf: passing 'configuration' to lib.neovimConfiguration is deprecated.
+ ''
+ configuration))
+
+ (lib.optionals (extraModules != []) (lib.warn ''
+ nvf: passing 'extraModules' to lib.neovimConfiguration is deprecated, use 'modules' instead.
+ ''
+ extraModules))
+ ];
};
# alias to the internal configuration
@@ -69,10 +84,7 @@ inputs: {
# built (or "normalized") plugins that are modified
builtStartPlugins = buildConfigPlugins vimOptions.startPlugins;
- builtOptPlugins = map (package: {
- plugin = package;
- optional = true;
- }) (buildConfigPlugins vimOptions.optPlugins);
+ builtOptPlugins = map (package: package // {optional = true;}) (buildConfigPlugins vimOptions.optPlugins);
# additional Lua and Python3 packages, mapped to their respective functions
# to conform to the format mnw expects. end user should
@@ -111,9 +123,15 @@ in {
paths = [neovim-wrapped printConfig printConfigPath];
postBuild = "echo Helpers added";
- meta = {
- description = "Wrapped version of Neovim with additional helper scripts";
- mainProgram = "nvim";
- };
+ # Allow evaluating vimOptions, i.e., config.vim from the packages' passthru
+ # attribute. For example, packages.x86_64-linux.neovim.passthru.neovimConfig
+ # will return the configuration in full.
+ passthru.neovimConfig = vimOptions;
+
+ meta =
+ neovim-wrapped.meta
+ // {
+ description = "Wrapped Neovim package with helper scripts to print the config (path)";
+ };
};
}
diff --git a/modules/extra/deprecations.nix b/modules/extra/deprecations.nix
index 388913a7..a4ac56a3 100644
--- a/modules/extra/deprecations.nix
+++ b/modules/extra/deprecations.nix
@@ -1,5 +1,5 @@
{lib, ...}: let
- inherit (lib.modules) mkRemovedOptionModule;
+ inherit (lib.modules) mkRemovedOptionModule mkRenamedOptionModule;
in {
imports = [
# 2024-06-06
@@ -14,5 +14,50 @@ in {
available under `vim.ui.fastaction` as a replacement. Simply remove everything under
`vim.lsp.nvimCodeActionMenu`, and set `vim.ui.fastaction.enable` to `true`.
'')
+
+ (mkRemovedOptionModule ["vim" "autopairs" "enable"] ''
+ vim.autopairs.enable has been removed in favor of per-plugin modules.
+ You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
+ '')
+ (mkRemovedOptionModule ["vim" "autopairs" "type"] ''
+ vim.autopairs.type has been removed in favor of per-plugin modules.
+ You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
+ '')
+ (mkRemovedOptionModule ["vim" "autocomplete" "enable"] ''
+ vim.autocomplete.enable has been removed in favor of per-plugin modules.
+ You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
+ '')
+ (mkRemovedOptionModule ["vim" "autocomplete" "type"] ''
+ vim.autocomplete.type has been removed in favor of per-plugin modules.
+ You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
+ '')
+ (mkRemovedOptionModule ["vim" "autocomplete" "sources"] ''
+ vim.autocomplete.sources has been removed in favor of per-plugin modules.
+ You can add nvim-cmp sources with vim.autocomplete.nvim-cmp.sources
+ instead.
+ '')
+ (mkRemovedOptionModule ["vim" "snippets" "vsnip" "enable"] ''
+ vim.snippets.vsnip.enable has been removed in favor of the more modern luasnip.
+ '')
+ (mkRenamedOptionModule ["vim" "lsp" "lspkind" "mode"] ["vim" "lsp" "lspkind" "setupOpts" "mode"])
+
+ # 2024-10-14
+ (mkRemovedOptionModule ["vim" "configRC"] ''
+ Please migrate your configRC sections to Neovim's Lua format, and
+ add them to `vim.luaConfigRC`.
+
+ See the v0.7 release notes for more information on why and how to
+ migrate your existing configurations to the new format.
+ '')
+
+ (mkRemovedOptionModule ["vim" "disableDefaultRuntimePaths"] ''
+ Nvf now uses $NVIM_APP_NAME so there is no longer the problem of
+ (accidental) leaking of user configuration.
+ '')
+
+ (mkRemovedOptionModule ["vim" "lsp" "trouble" "mappings" "toggle"] ''
+ With Trouble having so many different modes, and breaking changes
+ upstream, it no longer makes sense, nor works, to toggle only Trouble.
+ '')
];
}
diff --git a/modules/modules.nix b/modules/modules.nix
index a00cea69..784c413e 100644
--- a/modules/modules.nix
+++ b/modules/modules.nix
@@ -1,77 +1,73 @@
{
- check ? true,
pkgs,
lib,
}: let
inherit (lib.modules) mkDefault;
inherit (lib.lists) concatLists;
+ allModules = let
+ # The core neovim modules.
+ # Contains configuration for core neovim features
+ # such as spellchecking, mappings, and the init script (init.vim).
+ neovim = map (p: ./neovim + "/${p}") [
+ "init"
+ "mappings"
+ ];
- # The core neovim modules.
- # Contains configuration for core neovim features
- # such as spellchecking, mappings, and the init script (init.vim).
- neovim = map (p: ./neovim + "/${p}") [
- "init"
- "mappings"
- ];
+ # Individual plugin modules, separated by the type of plugin.
+ # While adding a new type, you must make sure your type is
+ # included in the list below.
+ plugins = map (p: ./plugins + "/${p}") [
+ "assistant"
+ "autopairs"
+ "comments"
+ "completion"
+ "dashboard"
+ "debugger"
+ "filetree"
+ "git"
+ "languages"
+ "lsp"
+ "minimap"
+ "notes"
+ "projects"
+ "rich-presence"
+ "session"
+ "snippets"
+ # "spellcheck" # FIXME: see neovim/init/spellcheck.nix
+ "statusline"
+ "tabline"
+ "terminal"
+ "theme"
+ "treesitter"
+ "ui"
+ "utility"
+ "visuals"
+ ];
- # Individual plugin modules, separated by the type of plugin.
- # While adding a new type, you must make sure your type is
- # included in the list below.
- plugins = map (p: ./plugins + "/${p}") [
- "assistant"
- "autopairs"
- "comments"
- "completion"
- "dashboard"
- "debugger"
- "filetree"
- "git"
- "languages"
- "lsp"
- "minimap"
- "notes"
- "projects"
- "rich-presence"
- "session"
- "snippets"
- # "spellcheck" # FIXME: see neovim/init/spellcheck.nix
- "statusline"
- "tabline"
- "terminal"
- "theme"
- "treesitter"
- "ui"
- "utility"
- "visuals"
- ];
+ # The neovim wrapper, used to build a wrapped neovim package
+ # using the configuration passed in `neovim` and `plugins` modules.
+ wrapper = map (p: ./wrapper + "/${p}") [
+ "build"
+ "rc"
+ "warnings"
+ "lazy"
+ ];
- # The neovim wrapper, used to build a wrapped neovim package
- # using the configuration passed in `neovim` and `plugins` modules.
- wrapper = map (p: ./wrapper + "/${p}") [
- "build"
- "rc"
- "warnings"
- ];
-
- # Extra modules, such as deprecation warnings
- # or renames in one place.
- extra = map (p: ./extra + "/${p}") [
- "deprecations.nix"
- ];
-
- allModules = concatLists [neovim plugins wrapper extra];
-
- pkgsModule = {config, ...}: {
- config = {
- _module = {
- inherit check;
- args = {
- baseModules = allModules;
- pkgsPath = mkDefault pkgs.path;
- pkgs = mkDefault pkgs;
- };
- };
- };
- };
+ # Extra modules, such as deprecation warnings
+ # or renames in one place.
+ extra = map (p: ./extra + "/${p}") [
+ "deprecations.nix"
+ ];
+ in
+ concatLists [neovim plugins wrapper extra];
in
- allModules ++ [pkgsModule]
+ allModules
+ ++ [
+ {
+ _module.args = {
+ baseModules = allModules;
+ pkgsPath = mkDefault pkgs.path;
+ pkgs = mkDefault pkgs;
+ };
+ }
+ ]
diff --git a/modules/neovim/init/spellcheck.nix b/modules/neovim/init/spellcheck.nix
index d8957ef9..5d6f5bed 100644
--- a/modules/neovim/init/spellcheck.nix
+++ b/modules/neovim/init/spellcheck.nix
@@ -1,11 +1,14 @@
{
config,
+ pkgs,
lib,
...
}: let
inherit (lib.modules) mkIf mkRenamedOptionModule;
inherit (lib.options) mkOption mkEnableOption literalExpression;
- inherit (lib.types) listOf str;
+ inherit (lib.strings) concatLines;
+ inherit (lib.attrsets) mapAttrsToList;
+ inherit (lib.types) listOf str attrsOf;
inherit (lib.nvim.lua) listToLuaTable;
inherit (lib.nvim.dag) entryAfter;
@@ -24,10 +27,48 @@ in {
description = ''
A list of languages that should be used for spellchecking.
- To add your own language files, you may place your `spell`
- directory in either `~/.config/nvim` or the
- [additionalRuntimePaths](#opt-vim.additionalRuntimePaths)
- directory provided by **nvf**.
+ To add your own language files, you may place your `spell` directory in either
+ {file}`$XDG_CONFIG_HOME/nvf` or in a path that is included in the
+ [additionalRuntimePaths](#opt-vim.additionalRuntimePaths) list provided by nvf.
+ '';
+ };
+
+ extraSpellWords = mkOption {
+ type = attrsOf (listOf str);
+ default = {};
+ example = literalExpression ''{"en.utf-8" = ["nvf" "word_you_want_to_add"];}'';
+ description = ''
+ Additional words to be used for spellchecking. The names of each key will be
+ used as the language code for the spell file. For example
+
+ ```nix
+ "en.utf-8" = [ ... ];
+ ```
+
+ will result in `en.utf-8.add.spl` being added to Neovim's runtime in the
+ {file}`spell` directory.
+
+ ::: {.warning}
+ The attribute keys must be in `"."` format for Neovim to
+ compile your spellfiles without mangling the resulting file names. Please
+ make sure that you enter the correct value, as nvf does not do any kind of
+ internal checking. Please see {command}`:help mkspell` for more details.
+
+ Example:
+
+ ```nix
+ # "en" is the name, and "utf-8" is the encoding. For most use cases, utf-8
+ # will be enough, however, you may change it to any encoding format Neovim
+ # accepts, e.g., utf-16.
+ "en.utf-8" = ["nvf" "word_you_want_to_add"];
+ => $out/spell/en-utf-8.add.spl
+ ```
+ :::
+
+ Note that while adding a new language, you will still need to add the name of
+ the language (e.g. "en") to the {option}`vim.spellcheck.languages` list by name
+ in order to enable spellchecking for the language. By default only `"en"` is in
+ the list.
'';
};
@@ -38,38 +79,75 @@ in {
description = ''
A list of filetypes for which spellchecking will be disabled.
- You may use `echo &filetype` in Neovim to find out the
+ ::: {.tip}
+ You may use {command}`:echo &filetype` in Neovim to find out the
filetype for a specific buffer.
+ :::
'';
};
- /*
- # FIXME: This needs to be revisited. It tries to install
- # the spellfile to an user directory, but it cannot do so
- # as we sanitize runtime paths.
programmingWordlist.enable = mkEnableOption ''
vim-dirtytalk, a wordlist for programmers containing
common programming terms.
- Setting this value as `true` has the same effect
- as setting {option}`vim.spellCheck.enable`
+ ::: {.note}
+ Enabling this option will unconditionally set
+ {option}`vim.spellcheck.enable` to true as vim-dirtytalk
+ depends on spellchecking having been set up.
+ :::
'';
- */
};
config = mkIf cfg.enable {
- vim.luaConfigRC.spellcheck = entryAfter ["basic"] ''
- vim.opt.spell = true
- vim.opt.spelllang = ${listToLuaTable cfg.languages}
+ vim = {
+ additionalRuntimePaths = let
+ compileJoinedSpellfiles =
+ pkgs.runCommandLocal "nvf-compile-spellfiles" {
+ # Use the same version of Neovim as the user's configuration
+ nativeBuildInputs = [config.vim.package];
- -- Disable spellchecking for certain filetypes
- -- as configured by `vim.spellcheck.ignoredFiletypes`
- vim.api.nvim_create_autocmd({ "FileType" }, {
- pattern = ${listToLuaTable cfg.ignoredFiletypes},
- callback = function()
- vim.opt_local.spell = false
- end,
- })
- '';
+ spellfilesJoined = pkgs.symlinkJoin {
+ name = "nvf-spellfiles-joined";
+ paths = mapAttrsToList (name: value: pkgs.writeTextDir "spell/${name}.add" (concatLines value)) cfg.extraSpellWords;
+ postBuild = "echo Spellfiles joined";
+ };
+ } ''
+ # Fail on unset variables and non-zero exit codes
+ # this might be the only way to trace when `nvim --headless`
+ # fails in batch mode
+ set -eu
+
+ mkdir -p "$out/spell"
+ for spellfile in "$spellfilesJoined"/spell/*.add; do
+ name="$(basename "$spellfile" ".add")"
+ echo "Compiling spellfile: $spellfile"
+ nvim --headless --clean \
+ --cmd "mkspell $out/spell/$name.add.spl $spellfile" -Es -n
+ done
+
+ '';
+ in
+ mkIf (cfg.extraSpellWords != {}) [
+ # If .outPath is missing, additionalRuntimePaths receives the *function*
+ # instead of a path, causing errors.
+ compileJoinedSpellfiles.outPath
+ ];
+
+ luaConfigRC.spellcheck = entryAfter ["basic"] ''
+ vim.opt.spell = true
+ vim.opt.spelllang = ${listToLuaTable cfg.languages}
+
+ -- Disable spellchecking for certain filetypes
+ -- as configured by `vim.spellcheck.ignoredFiletypes`
+ vim.api.nvim_create_augroup("nvf_autocmds", {clear = false})
+ vim.api.nvim_create_autocmd({ "FileType" }, {
+ group = "nvf_autocmds",
+ pattern = ${listToLuaTable cfg.ignoredFiletypes},
+ callback = function()
+ vim.opt_local.spell = false
+ end,
+ })
+ '';
+ };
};
}
diff --git a/modules/neovim/mappings/config.nix b/modules/neovim/mappings/config.nix
index 28ebf081..4d7f2417 100644
--- a/modules/neovim/mappings/config.nix
+++ b/modules/neovim/mappings/config.nix
@@ -3,51 +3,75 @@
lib,
...
}: let
- inherit (lib.modules) mkIf;
+ inherit (lib.modules) mkIf mkMerge;
+ inherit (lib.trivial) pipe;
+ inherit (lib.attrsets) mapAttrsToList;
+ inherit (lib.lists) flatten;
+
+ legacyMapModes = {
+ normal = ["n"];
+ insert = ["i"];
+ select = ["s"];
+ visual = ["v"];
+ terminal = ["t"];
+ normalVisualOp = ["n" "v" "o"];
+ visualOnly = ["n" "x"];
+ operator = ["o"];
+ insertCommand = ["i" "c"];
+ lang = ["l"];
+ command = ["c"];
+ };
cfg = config.vim;
in {
config = {
- vim.maps = {
- normal = mkIf cfg.disableArrows {
- "" = {
- action = "";
-
- noremap = false;
- };
- "" = {
- action = "";
-
- noremap = false;
- };
- "" = {
- action = "";
- noremap = false;
- };
- "" = {
- action = "";
- noremap = false;
- };
- };
-
- insert = mkIf cfg.disableArrows {
- "" = {
- action = "";
- noremap = false;
- };
- "" = {
- action = "";
- noremap = false;
- };
- "" = {
- action = "";
- noremap = false;
- };
- "" = {
- action = "";
- noremap = false;
- };
- };
- };
+ vim.keymaps = mkMerge [
+ (
+ mkIf cfg.disableArrows [
+ {
+ key = "";
+ mode = ["n" "i"];
+ action = "";
+ noremap = false;
+ }
+ {
+ key = "";
+ mode = ["n" "i"];
+ action = "";
+ noremap = false;
+ }
+ {
+ key = "";
+ mode = ["n" "i"];
+ action = "";
+ noremap = false;
+ }
+ {
+ key = "";
+ mode = ["n" "i"];
+ action = "";
+ noremap = false;
+ }
+ ]
+ )
+ (
+ pipe cfg.maps
+ [
+ (mapAttrsToList (
+ oldMode: keybinds:
+ mapAttrsToList (
+ key: bind:
+ bind
+ // {
+ inherit key;
+ mode = legacyMapModes.${oldMode};
+ }
+ )
+ keybinds
+ ))
+ flatten
+ ]
+ )
+ ];
};
}
diff --git a/modules/neovim/mappings/options.nix b/modules/neovim/mappings/options.nix
index 3b1f2634..8f0e8ebf 100644
--- a/modules/neovim/mappings/options.nix
+++ b/modules/neovim/mappings/options.nix
@@ -1,101 +1,97 @@
{lib, ...}: let
- inherit (lib.options) mkOption;
- inherit (lib.types) bool str attrsOf nullOr submodule;
+ inherit (lib.options) mkOption literalMD;
+ inherit (lib.types) either str listOf attrsOf nullOr submodule;
inherit (lib.nvim.config) mkBool;
- # Most of the keybindings code is highly inspired by pta2002/nixvim.
- # Thank you!
+
mapConfigOptions = {
- silent =
- mkBool false
- "Whether this mapping should be silent. Equivalent to adding to a map.";
-
- nowait =
- mkBool false
- "Whether to wait for extra input on ambiguous mappings. Equivalent to adding to a map.";
-
- script =
- mkBool false
- "Equivalent to adding