diff --git a/.editorconfig b/.editorconfig index 1f39b72e..c7fdc76d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -19,12 +19,13 @@ indent_style = space indent_size = 2 tab_width = 2 -[*.{diff,patch,lock}] +[*.{diff,patch}] end_of_line = unset insert_final_newline = unset trim_trailing_whitespace = unset -[npins/sources.json] -indent_style = unset +[*.lock] indent_size = unset -trim_trailing_whitespace = unset + +[npins/sources.json] +insert_final_newline = unset diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 2379973f..a43a9445 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -2,72 +2,48 @@ ## Table of Contents -- [Preface](#preface) -- [Contributing Process](#contributing-process) +- [Welcome](#welcome) +- [Contributing](#contributing) - [Code of Conduct](#code-of-conduct) -## Preface +## Welcome -[LICENSE]: ../LICENSE +I'm glad you are thinking about contributing to nvf! If you're unsure about +anything, just ask - or submit the issue or pull request anyway. The worst that +can happen is you'll be politely asked to change something. Friendly +contributions are always welcome. -I am glad you are thinking about contributing to nvf! The project is shaped by -contributors and user feedback, and all contributions are appreciated. +Before you contribute, I encourage you to read this project's CONTRIBUTING +policy (you are here) and its [LICENSE](../LICENSE) to understand how your +contributions are licensed. -If you are unsure about anything, whether a change is necessary or if it would -be accepted _had_ you created a PR, please just ask! Or submit the issue or pull -request anyway, the worst that can happen is that you will be politely asked to -change something. Friendly contributions are _always_ welcome. +If you have any questions regarding those files, feel free to open an issue or +[shoot me an email](mailto:me@notashelf.dev). Discussions tab is also available +for more informal discussions. -Before you contribute, I encourage you to read the rest of this document for our -contributing policy and guidelines, followed by the [LICENSE] to understand how -your contributions are licensed. +## Contributing -If you have any questions regarding those files, or would like to ask a question -that is not covered by any of them, please feel free to open an issue! -Discussions tab is also available for less formal discussions. You may also -choose to contact me on Discord or Matrix if you would like to talk to me -personally. - -## Contributing Process - -[pull request template]: ./PULL_REQUEST_TEMPLATE.md - -The contribution process is mostly documented in the [pull request template]. -When you create a pull request, you will find a checklist of items to complete -before it can be submitted. We ask that you please complete it before submitting -a pull request to help maintainers provide more specific feedback. If you are +The contribution process is mostly documented in the +[pull request template](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 -We provide instructions for a healthy contribution to nvf. This includes -**styling**, **commit formats**, **how-to guides for common contributions**. You -are strongly encouraged to read the contributing guidelines in full over at -[the documentation](https://notashelf.github.io/nvf#hacking). - -A general gist of our requirements is that you must - -1. Write clean Nix code -2. Self-test your changes -3. Document your changes - -Though, please take a look at the manual for the complete contributing guide. -Please also feel free to let us know if you feel that something is missing. We -hope to provide clear, comprehensive instructions that make the contribution -process a breeze. +We provide instructions on a healthy contribution to neovim-flake - including +styling, commit formats, how-to guides for adding new modules and options. You +are very well recommended to read the contributing guidelines over at +[the documentation](https://notashelf.github.io/nvf#hacking) ### Code of Conduct -This project does not have a formal code of conduct yet, and to be perfectly -honest I am not entirely positive if I want one or if it will _ever_ have one. -This project is not expected to be a hotbed of activity, and I trust my -contributors to keep it civil and respectful. - -I do, however, want to make sure that everyone who does contribute feels welcome -and safe around project spaces. As such, I will do my best to make sure anyone -who disrupts the project or engages in negative behaviour will are dealt with -appropriately, and swiftly. You are invited to share any concerns that you have -with the projects moderation, be it over public or private spaces. +This project does not quite have a code of conduct yet. And to be perfectly +honest, I'm not sure if I want one or if it will ever have one. I'm not +expecting this project to be a hotbed of activity, but I do want to make sure +that everyone who does contribute feels welcome and safe. As such, I will do my +best to make sure that those who distrupt the project are dealt with swiftly and +appropriately. If you feel that you are not being treated with respect, please contact me directly. diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index be97db2a..c9270b26 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -1,120 +1,60 @@ name: "πŸ› Bug Report" -description: "Submit a bug report to help us improve nvf" -title: "" +description: "Submit a bug report to help us improve" +#title: "[Bug] " labels: [bug] body: - type: checkboxes + id: no-duplicate-issues attributes: - label: I have confirmed that this is a bug related to nvf - description: >- - If you are unsure whether this is a bug, a packaging issue, or user error that is *not* - stemming from nvf, please consider creating a [discussion](https://github.com/notashelf/nvf/discussions) - post instead. Invalid bug reports will be closed without an explanation. + label: "⚠️ Please verify that this bug has NOT been reported before." + description: "Search in the issues sections by clicking [HERE](https://github.com/notashelf/neovim-flake/issues?q=)" options: - - required: true - label: >- - This is a bug, and not an user error or a support request. I understand that my issue - will be closed if it is not a bug in nvf. - - required: true - label: >- - I have checked the [issues tab](https://github.com/notashelf/nvf/issues?q=is%3Aissue) - and confirmed that my issue has not yet been reported. I understand that my issue will - be closed if it is a duplicate. - + - label: "I checked all existing issues and didn't find a similar issue" + required: true - type: textarea - attributes: - label: Description - placeholder: "Describe the issue here..." - description: >- - Describe the issue in detail, with steps you have taken included. If applicable, please include - a minimal reproducible example, relevant Nix logs, comparisons with alternative commands and - screenshots. Do note that **logs** are preferred over screenshots. + id: description validations: - required: true - - - type: dropdown + required: false attributes: - label: Installation Method - description: "How was nvf installed?" - options: - - NixOS Module (`nixosModules.default`) - - Home Manager Module (`homeManagerModules.default`) - - Standalone (flake outputs, `nix profile install`, etc.) - - Other - validations: - required: true - - - type: textarea - attributes: - label: Installation Method (Other) - description: "If you have selected 'Other' in the previous section, please describe your installation method" - placeholder: >- - I installed nvf from... - - - type: textarea - attributes: - label: nvf Version - description: "Which version of nvf are you using? If added as a flake input, write 'master'" - placeholder: >- - For example, v0.8 if consuming nvf from a tagged release. - validations: - required: true - + label: "Description" + description: "You could also upload screenshots, if necessary" - type: textarea id: steps-to-reproduce - attributes: - label: Reproduction steps - description: "How do you trigger this bug? Please walk us through the problem, step by step" - placeholder: >- - 1. Do this - 2. Do that - 3. Observe validations: required: true - + attributes: + label: "πŸ‘Ÿ Reproduction steps" + description: "How do you trigger this bug? Please walk us through the problem, step by step" + placeholder: "..." - type: textarea id: expected-behavior + validations: + required: true attributes: - label: Expected behavior + label: "πŸ‘€ Expected behavior" description: "What did you think would or should happen?" placeholder: "..." - validations: - required: true - - type: textarea id: actual-behavior + validations: + required: true attributes: - label: Actual Behavior + label: "πŸ˜“ Actual Behavior" description: "What actually happen?" placeholder: "..." - validations: - required: true - - - type: textarea + - type: input + id: nix-metadata attributes: - label: System Information - description: "Output of `nix-info --markdown`" - render: bash - placeholder: |- - '[user@system:~]$ nix-shell -p nix-info --run "nix-info --markdown" - - system: - - host os: - - multi-user?: - - sandbox: - - version: - - nixpkgs: + label: "πŸ’» Metadata" + description: 'Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result.' + placeholder: '[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"' validations: required: true - - type: textarea id: logs attributes: + label: "πŸ“ Relevant log output" + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. render: bash - label: "Relevant log output" - description: >- - Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. - - > [!TIP] - > You can get your nvf configuration with `nvf-print-config` and attach it by using a service like termbin.com validations: required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 819891df..d7ed2654 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -1,72 +1,58 @@ name: πŸš€ Feature Request description: "Propose a new feature" -title: "" +#title: "[Feature] " labels: [feature-request] body: - type: checkboxes + id: no-duplicate-issues attributes: - label: I have verified that this feature request has not been made before - description: >- - Before opening a new issue for feature requests, please consider searching through currently - open issues [here](https://github.com/notashelf/nvf/issues). If you would like to discuss a - new addition beforehand, you may first want to create a new discussion threat and discuss it - with the maintainers [on the discussions tab](https://github.com/notashelf/nvf/discussions) + label: "⚠️ Please verify that this feature request has NOT been suggested before." + description: "Search in the issues sections by clicking [HERE](https://github.com/notashelf/neovim-flake/issues?q=)" options: - - required: true - label: >- - I have checked the [issues tab](https://github.com/notashelf/nvf/issues?q=is%3Aissue), - and did not find a similar feature request. I understand that my issue will be closed - if it is a duplicate. - + - label: "I checked and didn't find a similar feature request" + required: true - type: dropdown id: feature-area attributes: - label: Feature Type - description: Please describe the kind of addition this is + label: "🏷️ Feature Type" + description: "What kind of a feature request is this?" multiple: true options: - - New Plugin - - Update Request (Plugin/Nixpkgs) - - Documentation Updates + - New Command + - New Addon + - API Additions - Other validations: required: true - - - type: textarea id: feature-description - attributes: - label: Feature description - description: >- - Please provide a clear and concise description of the desired addition. If this is a plugin - addition, please also include a link to the desired plugin and the reason why you think this - is a good addition. Keep in mind that we may refuse plugin requests as nvf already provides - appropriate methods of installing plugins in user configurations. - placeholder: >- - "nvf currently does [...], which really frustrates me" or "You should add [...] because I think - [...]" validations: required: true - + attributes: + label: "πŸ”– Feature description" + description: "A clear and concise description of what your feature request is." + placeholder: "'You should add [...]' or '[...] has always frustrated me' " + - type: textarea + id: solution + validations: + required: true + attributes: + label: "βœ”οΈ Solution" + description: "A clear and concise description of what you want to happen." + placeholder: "In my use-case, I would like [...]" - type: textarea id: alternatives - attributes: - label: Alternatives - description: >- - If you have tried anything before creating this issue, please give us a clear and concise - description of any alternative solutions or methods you have considered. - placeholder: "I have considered [...]" validations: required: false - + attributes: + label: "❓ Alternatives" + description: "A clear and concise description of any alternative solutions or features you've considered." + placeholder: "I have considered [...]" - type: textarea id: additional-context - attributes: - label: Additional Context - description: >- - If there is anything else you would like to mention, such as additional context or screenshots - demonstrating the requested feature, please add them here. This field is optional, but you may - be requested to provide further context. Please ensure that your feature request clearly describes - the requested feature in good detail. validations: required: false + attributes: + label: "πŸ“ Additional Context" + description: "Add any other context or screenshots about the feature request here." + placeholder: "..." diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md similarity index 100% rename from .github/PULL_REQUEST_TEMPLATE.md rename to .github/PULL_REQUEST_TEMPLATE/pull_request_template.md diff --git a/README.md b/.github/README.md similarity index 83% rename from README.md rename to .github/README.md index 7786636a..3fc7ffdf 100644 --- a/README.md +++ b/.github/README.md @@ -1,6 +1,5 @@ -
- nvf Logo + nvf Logo

nvf

@@ -47,10 +46,11 @@ [Features]: #features [Get Started]: #get-started [Documentation]: #documentation -[Help]: #getting-help +[Help]: #help [Contribute]: #contributing [FAQ]: #frequently-asked-questions [Credits]: #credits +[License]: #license **[
 Features
][Features]** **[
 Get Started 
][Get Started]** @@ -84,22 +84,21 @@ customizable through the Nix module system. - Not comfortable with a full-nix config or want to bring your Lua config? You can do just that, no unnecessary restrictions. - - Lazyloading? We got it! Lazyload both internal and external plugins at will - πŸ’€ . + - Lazyloading πŸ’€? We got it! Lazyload both internal and external plugins at + will. - nvf allows _ordering configuration bits_ using [DAG] (_Directed acyclic graph_)s. It has never been easier to construct an editor configuration deterministically! - nvf exposes everything you need to avoid a vendor lock-in. Which means you can add new modules, plugins and so on without relying on us adding a module for them! Though, of course, feel free to request them. - - Use plugins from anywhere: inputs, npins, nixpkgs... You name it. - - Add your own modules with ease. It's all built-in! + - Use plugins from anywhere. Inputs, npins, nixpkgs... You name it. + - Add your own modules, with ease. It's all built-in! - **Well-documented**: Documentation is priority. You will _never_ face undocumented, obscure behaviour. - - Any and all changes, breaking or otherwise, will be communicated in the - [release notes]. + - Changes, breaking or otherwise, will be communicated in the [release notes] - Refer to the [FAQ section] for answers to common questions. - - Your question not there? Head to the [discussions tab]! + - Your question not there? Head to the to the [discussions tab]! - **Idiomatic**: nvf does things ✨ _the right way_ ✨ - the codebase is, and will, remain maintainable for myself and any contributors. - **Community-Led**: we would like nvf to be fully capable of accomplishing what @@ -122,7 +121,7 @@ the following in order to take **nvf** out for a spin. ```bash # Run the default package -$ nix run github:notashelf/nvf +nix run github:notashelf/nvf ``` This will get you a feel for the base configuration and UI design. Though, none @@ -130,25 +129,20 @@ of the configuration options are final as **nvf** is designed to be modular and configurable. > [!TIP] -> The flake exposes `nix` as the default package, which will be evaluated when -> you run `nix build` or `nix run` on this repo. It is minimal, and providing -> limited language support and various utilities. We also expose the `maximal` -> package, which you may choose to build if you'd like to see more of nvf's -> built-in modules. Please keep in mind that those are demo packages, nvf does -> not ship a default configuration if installed as a NixOS/Home-Manager module -> or via standalone method. +> 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. -It is as simple as changing the target output in your `nix run` command to get a -different configuration. For example, to get a configuration with large language -coverage, run: +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 +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 [nvf manual]. +recommended to instead use the module system as described in the manual. > [!NOTE] > The `maximal` configuration is quite large, and might take a while to build. @@ -161,10 +155,6 @@ instructions. ## Documentation -**nvf** prides itself in its rich, intuitive documentation. The chapter below -covers several methods through which you can install **nvf**. If you believe -something is missing, or could be done better, please feel free to contact us! - ### Installation The _recommended_ way of installing nvf is using either the NixOS or the @@ -173,7 +163,7 @@ install **nvf** as a standalone package, or a flake output. 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 are also contained in the documentation. +userspace plugins is also contained in the documentation. > [!TIP] > While using NixOS or Home-Manager modules, @@ -190,18 +180,16 @@ requests are also welcome, and appreciated. If you are confused, stuck or would like to ask a simple question; you may create an issue on the [issue tracker] to ask questions or report bugs. -We are not yet on spaces like matrix or IRC, so please use the issue tracker for -now. The [discussions tab] can also be a place to request help from community -members, or engage in productive discussion with the maintainers. +We are not not yet on spaces like matrix or IRC, so please use the issue tracker +for now. ## Contributing -[contributing guide]: .github/CONTRIBUTING.md - I am always looking for new ways to help improve this flake. If you would like -to contribute, please read the [contributing guide] before 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. +to contribute, please read the [contributing guide](CONTRIBUTING.md) before +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. ## Frequently Asked Questions @@ -237,7 +225,7 @@ 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 for breaking changes. +better prepare to breaking changes. **Q**: Will you support non-flake installations? @@ -252,19 +240,19 @@ of a configuration generated from Nix? **A**: Yes! Add `"~/.config/nvim"` to `vim.additionalRuntimePaths = [ ... ]` and any plugins you want to load to `vim.startPlugins`. This will load your -configuration from `~/.config/nvim`. You may still use `vim.*` options in Nix to -further configure Neovim. +configuration from `~/.config/nvim`. You may still use `vim.*` to modify +Neovim's behaviour with Nix. ## Credits ### Co-Maintainers Alongside [myself](https://github.com/notashelf), nvf is developed by those -talented folk. **nvf** would not be what it is today without their invaluable +talented folk. nvf would not be what it is today without their invaluable contributions. - [**@horriblename**](https://github.com/horriblename) - ([Liberapay](https://liberapay.com/horriblename/)) - For actively implementing + ([Liberapay](https://liberapay.com/horriblename/))- For actively implementing planned features and quality of life updates. - [**@Soliprem**](https://github.com/soliprem) - For rigorously implementing missing features and excellent work on new language modules. diff --git a/.github/labels.yml b/.github/labels.yml deleted file mode 100644 index 34c3bf2c..00000000 --- a/.github/labels.yml +++ /dev/null @@ -1,55 +0,0 @@ -# This file is used by .github/workflows/labels.yml -"topic: plugins": - - any: - - changed-files: - - any-glob-to-any-file: - - modules/plugins/**/* - -"topic: modules": - - any: - - changed-files: - - any-glob-to-any-file: - - modules/**/* - -"topic: dependencies": - - any: - - changed-files: - - any-glob-to-any-file: - - npins - - flake.lock - -"topic: CI": - - any: - - changed-files: - - any-glob-to-any-file: - - .github/workflows/*.yml - - .github/typos.toml - - .github/dependabot.yml - -"topic: meta": - - any: - - changed-files: - - any-glob-to-any-file: - - .github/CODEOWNERS - - LICENSE - - .github/README.md - - .github/funding.yml - - .github/assets - - .github/*_TEMPLATE - - .gitignore - - .editorconfig - - release.json - -"topic: documentation": - - any: - - changed-files: - - any-glob-to-any-file: - - docs/**/* - - .github/CONTRIBUTING.md - - .github/README.md -"topic: packaging": - - any: - - changed-files: - - any-glob-to-any-file: - - flake.nix - - flake/packages.nix diff --git a/.github/typos.toml b/.github/typos.toml index 26be7d9b..2cd18dde 100644 --- a/.github/typos.toml +++ b/.github/typos.toml @@ -5,7 +5,6 @@ default.extend-ignore-words-re = [ "befores", "annote", "viw", - "typ", "BA", # somehow "BANanaD3V" is valid, but BA is not... ] diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml deleted file mode 100644 index 7868e55b..00000000 --- a/.github/workflows/backport.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Backport PR on Label - -on: - pull_request_target: - types: - - labeled - -# Permissions needed for the korthout/backport-action to create branches and PRs -permissions: - contents: write - pull-requests: write - -jobs: - backport: - name: Create Backport PR - runs-on: ubuntu-latest - if: | - github.event.pull_request.merged == true && startsWith(github.event.label.name, 'backport-') - steps: - - uses: actions/checkout@v5 - with: - ref: ${{ github.event.pull_request.head.sha }} - token: ${{ steps.app-token.outputs.token }} - - - name: Backport Action - uses: korthout/backport-action@v3 - with: - # Regex pattern for labels that should trigger a backport AND extracts the target branch - # from the name (e.g. v0.x or v0.x.y; we use zerover). This action will ONLY proceed if - # the label that triggered the workflow fully matches this pattern. - # Example matching labels: "backport-v0.1", "backport-v0.10.1" - # Example non-matching labels: "backport-foo", "backport-v1.0" - label_pattern: '^backport-(v0\.\d+(\.\d+)?)$' diff --git a/.github/workflows/cachix.yml b/.github/workflows/cachix.yml index 13995cb6..959a04b6 100644 --- a/.github/workflows/cachix.yml +++ b/.github/workflows/cachix.yml @@ -21,7 +21,16 @@ jobs: - nix - maximal steps: - - uses: actions/checkout@v5 + - uses: easimon/maximize-build-space@v10 + name: Maximize build space + with: + overprovision-lvm: true + remove-android: true + remove-dotnet: true + remove-haskell: true + remove-codeql: true + + - uses: actions/checkout@v4 name: Checkout - name: Install Nix diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 90bfb431..a3f4fce3 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -17,7 +17,7 @@ jobs: if: "!contains(github.event.pull_request.title, '[skip ci]')" steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@main @@ -31,7 +31,7 @@ jobs: if: "!contains(github.event.pull_request.title, '[skip ci]')" steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@main @@ -39,24 +39,13 @@ jobs: - name: Check formatting via Alejandra run: nix run nixpkgs#alejandra -- --check . --exclude npins - - name: Check formatting via Deno - run: nix run nixpkgs#deno -- fmt --check --ext md **/*.md - - - if: ${{ failure() }} - shell: bash - run: | - echo "::error:: Current codebase contains formatting errors that were caught by the CI!" - echo "Please ensure that all Nix code is formatted with Alejandra, and Markdown with `deno fmt" - echo "[skip ci] label may be added to the PR title if this is a one-time issue and is safe to ignore" - exit 1 - check-typos: name: "Check source tree for typos" runs-on: ubuntu-latest if: "!contains(github.event.pull_request.title, '[skip ci]')" steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v4 - name: Check for typos uses: crate-ci/typos@master @@ -87,7 +76,7 @@ jobs: uses: DeterminateSystems/nix-installer-action@main - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v4 - name: Set default git branch (to reduce log spam) run: git config --global init.defaultBranch main @@ -101,7 +90,7 @@ jobs: run: echo "date=$(date +'%Y-%m-%d-%H%M%S')" >> ${GITHUB_OUTPUT} - name: Upload doc artifacts - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v4 with: name: "${{ matrix.package }}" path: result/share/doc/nvf @@ -115,7 +104,7 @@ jobs: uses: DeterminateSystems/nix-installer-action@main - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v4 - name: Build linkcheck package run: nix build .#docs-linkcheck -Lv @@ -126,7 +115,7 @@ jobs: if: "!contains(github.event.pull_request.title, '[skip ci]')" steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v4 with: fetch-depth: 2 # slows down checkout, but we need to compare against the previous commit on push events @@ -153,8 +142,7 @@ jobs: - name: Checking Editorconfig conformance shell: bash run: | - < "$HOME/changed_files" nix-shell -p editorconfig-checker \ - --run 'xargs -r editorconfig-checker -disable-indent-size --exclude flake.lock' + < "$HOME/changed_files" nix-shell -p editorconfig-checker --run 'xargs -r editorconfig-checker -disable-indent-size' - if: ${{ failure() }} shell: bash diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml index 1ed6a1ec..aa8fb272 100644 --- a/.github/workflows/cleanup.yml +++ b/.github/workflows/cleanup.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Checkout" - uses: actions/checkout@v5 + uses: actions/checkout@v4 - name: "Delete old branches" uses: beatlabs/delete-old-branches-action@v0.0.11 diff --git a/.github/workflows/docs-preview.yml b/.github/workflows/docs-preview.yml index a238a41d..9adaf5ef 100644 --- a/.github/workflows/docs-preview.yml +++ b/.github/workflows/docs-preview.yml @@ -28,7 +28,7 @@ jobs: uses: DeterminateSystems/nix-installer-action@main - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v4 - name: Set default git branch (to reduce log spam) run: git config --global init.defaultBranch main @@ -90,7 +90,7 @@ jobs: echo "Preview can be found at ${URL}" >> "$GITHUB_STEP_SUMMARY" - name: Find Comment - uses: peter-evans/find-comment@v4 + uses: peter-evans/find-comment@v3 id: fc with: comment-author: "github-actions[bot]" @@ -98,7 +98,7 @@ jobs: body-includes: "Live preview deployed" - name: Post live preview comment - uses: peter-evans/create-or-update-comment@v5 + uses: peter-evans/create-or-update-comment@v4 env: COMMENT_ID: ${{ steps.fc.outputs.comment-id }} URL: ${{ steps.prelude.outputs.URL }} @@ -127,7 +127,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v4 - name: Delete preview for closed/merged PR run: | @@ -164,7 +164,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v4 - name: Double check preview directory deletion run: | @@ -177,7 +177,7 @@ jobs: fi - name: Post cleanup verification - uses: peter-evans/create-or-update-comment@v5 + uses: peter-evans/create-or-update-comment@v4 with: issue-number: ${{ github.event.pull_request.number }} body: | diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml deleted file mode 100644 index b24c00aa..00000000 --- a/.github/workflows/labeler.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: "Label PR" - -on: - pull_request_target: - types: [edited, opened, synchronize, reopened] - -permissions: - contents: read - pull-requests: write - -jobs: - labels: - name: "Label PR" - runs-on: ubuntu-latest - if: "!contains(github.event.pull_request.title, '[skip ci]')" - steps: - - uses: actions/labeler@v6 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - configuration-path: .github/labels.yml - sync-labels: true diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index 3b4cc38b..1c8ab746 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -28,7 +28,7 @@ jobs: outputs: should_run: ${{ steps.should_run.outputs.should_run }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v4.1.7 - name: print latest_commit run: echo ${{ github.sha }} @@ -43,7 +43,7 @@ jobs: if: ${{ needs.check_date.outputs.should_run != 'false' }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v4.1.7 - uses: DeterminateSystems/nix-installer-action@main - run: | nix build .#docs -Lv diff --git a/configuration.nix b/configuration.nix index 68776638..011d6fae 100644 --- a/configuration.nix +++ b/configuration.nix @@ -15,20 +15,15 @@ isMaximal: { spellcheck = { enable = true; - programmingWordlist.enable = isMaximal; }; lsp = { - # This must be enabled for the language modules to hook into - # the LSP API. - enable = true; - formatOnSave = true; lspkind.enable = false; lightbulb.enable = true; lspsaga.enable = false; trouble.enable = true; - lspSignature.enable = !isMaximal; # conflicts with blink in maximal + lspSignature.enable = true; otter-nvim.enable = isMaximal; nvim-docs-view.enable = isMaximal; }; @@ -43,6 +38,7 @@ isMaximal: { # This section does not include a comprehensive list of available language modules. # To list all available language module options, please visit the nvf manual. languages = { + enableLSP = true; enableFormat = true; enableTreesitter = true; enableExtraDiagnostics = true; @@ -128,15 +124,7 @@ isMaximal: { autopairs.nvim-autopairs.enable = true; - # nvf provides various autocomplete options. The tried and tested nvim-cmp - # is enabled in default package, because it does not trigger a build. We - # enable blink-cmp in maximal because it needs to build its rust fuzzy - # matcher library. - autocomplete = { - nvim-cmp.enable = !isMaximal; - blink-cmp.enable = isMaximal; - }; - + autocomplete.nvim-cmp.enable = true; snippets.luasnip.enable = true; filetree = { @@ -162,7 +150,6 @@ isMaximal: { enable = true; gitsigns.enable = true; gitsigns.codeActions.enable = false; # throws an annoying debug message - neogit.enable = isMaximal; }; minimap = { @@ -192,9 +179,6 @@ isMaximal: { surround.enable = isMaximal; leetcode-nvim.enable = isMaximal; multicursors.enable = isMaximal; - smart-splits.enable = isMaximal; - undotree.enable = isMaximal; - nvim-biscuits.enable = isMaximal; motion = { hop.enable = true; @@ -203,7 +187,6 @@ isMaximal: { }; images = { image-nvim.enable = false; - img-clip.enable = isMaximal; }; }; @@ -252,7 +235,6 @@ isMaximal: { cmp.enable = isMaximal; }; codecompanion-nvim.enable = false; - avante-nvim.enable = isMaximal; }; session = { diff --git a/default.nix b/default.nix deleted file mode 100644 index e597b612..00000000 --- a/default.nix +++ /dev/null @@ -1,15 +0,0 @@ -(import ( - let - lock = builtins.fromJSON (builtins.readFile ./flake.lock); - inherit (lock.nodes.flake-compat.locked) url rev narHash; - in - builtins.fetchTarball { - url = "${url}/archive/${rev}.tar.gz"; - sha256 = narHash; - } - ) { - src = ./.; - copySourceTreeToStore = false; - useBuiltinsFetchTree = true; - }) -.defaultNix diff --git a/docs/default.nix b/docs/default.nix index 49f90b80..98b29db0 100644 --- a/docs/default.nix +++ b/docs/default.nix @@ -12,7 +12,6 @@ inherit ( (lib.evalModules { - specialArgs = {inherit inputs;}; modules = import ../modules/modules.nix { inherit lib pkgs; diff --git a/docs/manual/configuring.md b/docs/manual/configuring.md index 95195f78..f891c7a6 100644 --- a/docs/manual/configuring.md +++ b/docs/manual/configuring.md @@ -1,15 +1,5 @@ # Configuring nvf {#ch-configuring} -[helpful tips section]: #ch-helpful-tips - -nvf allows for _very_ extensive configuration in Neovim through the Nix module -interface. The below chapters describe several of the options exposed in nvf for -your convenience. You might also be interested in the [helpful tips section] for -more advanced or unusual configuration options supported by nvf. - -Note that this section does not cover module _options_. For an overview of all -module options provided by nvf, please visit the [appendix](/nvf/options.html) - ```{=include=} chapters configuring/custom-package.md configuring/custom-plugins.md @@ -17,5 +7,4 @@ configuring/overriding-plugins.md configuring/languages.md configuring/dags.md configuring/dag-entries.md -configuring/autocmds.md ``` diff --git a/docs/manual/configuring/autocmds.md b/docs/manual/configuring/autocmds.md deleted file mode 100644 index e547ace2..00000000 --- a/docs/manual/configuring/autocmds.md +++ /dev/null @@ -1,119 +0,0 @@ -# Autocommands and Autogroups {#ch-autocmds-augroups} - -This module allows you to declaratively configure Neovim autocommands and -autogroups within your Nix configuration. - -## Autogroups (`vim.augroups`) {#sec-vim-augroups} - -Autogroups (`augroup`) organize related autocommands. This allows them to be -managed collectively, such as clearing them all at once to prevent duplicates. -Each entry in the list is a submodule with the following options: - -| Option | Type | Default | Description | Example | -| :------- | :----- | :------ | :--------------------------------------------------------------------------------------------------- | :---------------- | -| `enable` | `bool` | `true` | Enables or disables this autogroup definition. | `true` | -| `name` | `str` | _None_ | **Required.** The unique name for the autogroup. | `"MyFormatGroup"` | -| `clear` | `bool` | `true` | Clears any existing autocommands within this group before adding new ones defined in `vim.autocmds`. | `true` | - -**Example:** - -```nix -{ - vim.augroups = [ - { - name = "MyCustomAuGroup"; - clear = true; # Clear previous autocommands in this group on reload - } - { - name = "Formatting"; - # clear defaults to true - } - ]; -} -``` - -## Autocommands (`vim.autocmds`) {#sec-vim-autocmds} - -Autocommands (`autocmd`) trigger actions based on events happening within Neovim -(e.g., saving a file, entering a buffer). Each entry in the list is a submodule -with the following options: - -| Option | Type | Default | Description | Example | -| :--------- | :-------------------- | :------ | :---------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------- | -| `enable` | `bool` | `true` | Enables or disables this autocommand definition. | `true` | -| `event` | `nullOr (listOf str)` | `null` | **Required.** List of Neovim events that trigger this autocommand (e.g., `BufWritePre`, `FileType`). | `[ "BufWritePre" ]` | -| `pattern` | `nullOr (listOf str)` | `null` | List of file patterns (globs) to match against (e.g., `*.py`, `*`). If `null`, matches all files for the given event. | `[ "*.lua", "*.nix" ]` | -| `callback` | `nullOr luaInline` | `null` | A Lua function to execute when the event triggers. Use `lib.generators.mkLuaInline`. **Cannot be used with `command`.** | `lib.generators.mkLuaInline "function() print('File saved!') end"` | -| `command` | `nullOr str` | `null` | A Vimscript command to execute when the event triggers. **Cannot be used with `callback`.** | `"echo 'File saved!'"` | -| `group` | `nullOr str` | `null` | The name of an `augroup` (defined in `vim.augroups`) to associate this autocommand with. | `"MyCustomAuGroup"` | -| `desc` | `nullOr str` | `null` | A description for the autocommand (useful for introspection). | `"Format buffer on save"` | -| `once` | `bool` | `false` | If `true`, the autocommand runs only once and then automatically removes itself. | `false` | -| `nested` | `bool` | `false` | If `true`, allows this autocommand to trigger other autocommands. | `false` | - -:::{.warning} - -You cannot define both `callback` (for Lua functions) and `command` (for -Vimscript) for the same autocommand. Choose one. - -::: - -**Examples:** - -```nix -{ lib, ... }: -{ - vim.augroups = [ { name = "UserSetup"; } ]; - - vim.autocmds = [ - # Example 1: Using a Lua callback - { - event = [ "BufWritePost" ]; - pattern = [ "*.lua" ]; - group = "UserSetup"; - desc = "Notify after saving Lua file"; - callback = lib.generators.mkLuaInline '' - function() - vim.notify("Lua file saved!", vim.log.levels.INFO) - end - ''; - } - - # Example 2: Using a Vim command - { - event = [ "FileType" ]; - pattern = [ "markdown" ]; - group = "UserSetup"; - desc = "Set spellcheck for Markdown"; - command = "setlocal spell"; - } - - # Example 3: Autocommand without a specific group - { - event = [ "BufEnter" ]; - pattern = [ "*.log" ]; - desc = "Disable line numbers in log files"; - command = "setlocal nonumber"; - # No 'group' specified - } - - # Example 4: Using Lua for callback - { - event = [ "BufWinEnter" ]; - pattern = [ "*" ]; - desc = "Simple greeting on entering a buffer window"; - callback = lib.generators.mkLuaInline '' - function(args) - print("Entered buffer: " .. args.buf) - end - ''; - - # Run only once per session trigger - once = true; - } - ]; -} -``` - -These definitions are automatically translated into the necessary Lua code to -configure `vim.api.nvim_create_augroup` and `vim.api.nvim_create_autocmd` when -Neovim starts. diff --git a/docs/manual/configuring/custom-package.md b/docs/manual/configuring/custom-package.md index 3e9e324a..51d996b6 100644 --- a/docs/manual/configuring/custom-package.md +++ b/docs/manual/configuring/custom-package.md @@ -1,12 +1,12 @@ # Custom Neovim Package {#ch-custom-package} As of v0.5, you may now specify the Neovim package that will be wrapped with -your configuration. This is done with the [](#opt-vim.package) option. +your configuration. This is done with the `vim.package` option. ```nix {inputs, pkgs, ...}: { # using the neovim-nightly overlay - vim.package = inputs.neovim-overlay.packages.${pkgs.stdenv.system}.neovim; + vim.package = inputs.neovim-overlay.packages.${pkgs.system}.neovim; } ``` diff --git a/docs/manual/configuring/custom-plugins.md b/docs/manual/configuring/custom-plugins.md index bf986a0f..79a691e2 100644 --- a/docs/manual/configuring/custom-plugins.md +++ b/docs/manual/configuring/custom-plugins.md @@ -1,33 +1,22 @@ # Custom Plugins {#ch-custom-plugins} -**nvf** exposes a very wide variety of plugins by default, which are consumed by -module options. This is done for your convenience, and to bundle all necessary -dependencies into **nvf**'s runtime with full control of versioning, testing and -dependencies. In the case a plugin you need is _not_ available, you may consider -making a pull request to add the package you're looking for, or you may add it -to your configuration locally. The below section describes how new plugins may -be added to the user's configuration. +**nvf**, by default, exposes a wide variety of plugins as module options for +your convenience and bundles necessary dependencies into **nvf**'s runtime. In +case a plugin is not available in **nvf**, you may consider making a pull +request to **nvf** to include it as a module or you may add it to your +configuration locally. ## Adding Plugins {#ch-adding-plugins} -Per **nvf**'s design choices, there are several ways of adding custom plugins to -your configuration as you need them. As we aim for extensive configuration, it -is possible to add custom plugins (from nixpkgs, pinning tools, flake inputs, -etc.) to your Neovim configuration before they are even implemented in **nvf** -as a module. +There are multiple ways of adding custom plugins to your **nvf** configuration. -:::{.info} +You can use custom plugins, before they are implemented in the flake. To add a +plugin to the runtime, you need to add it to the [](#opt-vim.startPlugins) list +in your configuration. -To add a plugin to your runtime, you will need to add it to -[](#opt-vim.startPlugins) list in your configuration. This is akin to cloning a -plugin to `~/.config/nvim`, but they are only ever placed in the Nix store and -never exposed to the outside world for purity and full isolation. - -::: - -As you would configure a cloned plugin, you must configure the new plugins that -you've added to `startPlugins.` **nvf** provides multiple ways of configuring -any custom plugins that you might have added to your configuration. +Adding a plugin to `startPlugins` will not allow you to configure the plugin +that you have added, but **nvf** provides multiple way of configuring any custom +plugins that you might have added to your configuration. ```{=include=} sections custom-plugins/configuring.md diff --git a/docs/manual/configuring/custom-plugins/configuring.md b/docs/manual/configuring/custom-plugins/configuring.md index a4b3ce19..5106d29b 100644 --- a/docs/manual/configuring/custom-plugins/configuring.md +++ b/docs/manual/configuring/custom-plugins/configuring.md @@ -1,20 +1,13 @@ # Configuring {#sec-configuring-plugins} Just making the plugin to your Neovim configuration available might not always -be enough., for example, if the plugin requires a setup table. In that case, you -can write custom Lua configuration using one of +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`. -- `config.vim.lazy.plugins.*.setupOpts` -- `config.vim.extraPlugins.*.setup` -- `config.vim.luaConfigRC`. - -## Lazy Plugins {#ch-vim-lazy-plugins} - -`config.vim.lazy.plugins.*.setupOpts` is useful for lazy-loading plugins, and -uses an extended version of `lz.n's` `PluginSpec` to expose a familiar -interface. `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. +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 { @@ -32,61 +25,50 @@ hooks should do what you need. } ``` -## Standard API {#ch-vim-extra-plugins} - -`vim.extraPlugins` uses an attribute set, which maps DAG section names to a +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 -{pkgs, ...}: { - config.vim.extraPlugins = { - aerial = { - package = pkgs.vimPlugins.aerial-nvim; - setup = "require('aerial').setup {}"; - }; +config.vim.extraPlugins = with pkgs.vimPlugins; { + aerial = { + package = aerial-nvim; + setup = "require('aerial').setup {}"; + }; - harpoon = { - package = pkgs.vimPlugins.harpoon; - setup = "require('harpoon').setup {}"; - after = ["aerial"]; # place harpoon configuration after aerial - }; + harpoon = { + package = harpoon; + setup = "require('harpoon').setup {}"; + after = ["aerial"]; # place harpoon configuration after aerial }; } ``` -### Setup using luaConfigRC {#setup-using-luaconfigrc} - -`vim.luaConfigRC` 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: ```nix { - # This will create a section called "aquarium" in the 'init.lua' with the - # contents of your custom configuration. By default 'entryAnywhere' is implied - # in DAGs, so this will be inserted to an arbitrary position. In the case you - # wish to control the position of this section with more precision, please - # look into the DAGs section of the manual. + # this will create an "aquarium" section in your init.lua with the contents of your custom config + # which will be *appended* to the rest of your configuration, inside your init.vim config.vim.luaConfigRC.aquarium = "vim.cmd('colorscheme aquiarum')"; } ``` -[DAG system]: #ch-using-dags -[DAG section]: #ch-dag-entries ::: {.note} -One of the **greatest strengths** of **nvf** is the ability to order -configuration snippets precisely using the [DAG system]. DAGs -are a very powerful mechanism that allows specifying positions -of individual sections of configuration as needed. We provide helper functions +One of the greatest strengths of nvf is the ability to order +snippets of configuration via the DAG system. It will allow specifying positions +of individual sections of configuration as needed. nvf provides helper functions in the extended library, usually under `inputs.nvf.lib.nvim.dag` that you may use. -Please refer to the [DAG section] in the nvf manual +Please refer to the [DAG section](#ch-dag-entries) in the nvf manual to find out more about the DAG system. ::: + diff --git a/docs/manual/configuring/custom-plugins/lazy-method.md b/docs/manual/configuring/custom-plugins/lazy-method.md index c16966b8..ae766535 100644 --- a/docs/manual/configuring/custom-plugins/lazy-method.md +++ b/docs/manual/configuring/custom-plugins/lazy-method.md @@ -1,8 +1,7 @@ # Lazy Method {#sec-lazy-method} -As of version **0.7**, an API is exposed to allow configuring lazy-loaded -plugins via `lz.n` and `lzn-auto-require`. Below is a comprehensive example of -how it may be loaded to lazy-load an arbitrary plugin. +As of version **0.7**, we exposed an API for configuring lazy-loaded plugins via +`lz.n` and `lzn-auto-require`. ```nix { @@ -42,8 +41,7 @@ how it may be loaded to lazy-load an arbitrary plugin. ## LazyFile event {#sec-lazyfile-event} -**nvf** re-implements `LazyFile` as a familiar user event to load a plugin when -a file is opened: +You can use the `LazyFile` user event to load a plugin when a file is opened: ```nix { @@ -57,6 +55,5 @@ a file is opened: } ``` -You can consider the `LazyFile` event as an alias to the combination of -`"BufReadPost"`, `"BufNewFile"` and `"BufWritePre"`, i.e., a list containing all -three of those events: `["BufReadPost" "BufNewFile" "BufWritePre"]` +You can consider `LazyFile` as an alias to +`["BufReadPost" "BufNewFile" "BufWritePre"]` diff --git a/docs/manual/configuring/custom-plugins/legacy-method.md b/docs/manual/configuring/custom-plugins/legacy-method.md index 6c399aaf..b2bddf43 100644 --- a/docs/manual/configuring/custom-plugins/legacy-method.md +++ b/docs/manual/configuring/custom-plugins/legacy-method.md @@ -1,31 +1,26 @@ # Legacy Method {#sec-legacy-method} -Prior to version **0.5**, the method of adding new plugins was adding the plugin -package to [](#opt-vim.startPlugins) and adding its configuration as a DAG under -one of `vim.configRC` or [](#opt-vim.luaConfigRC). While `configRC` has been -deprecated, users who have not yet updated to 0.5 or those who prefer a more -hands-on approach may choose to use the old method where the load order of the -plugins is explicitly determined by DAGs without internal abstractions. +Prior to version v0.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 +`vim.configRC` or `vim.luaConfigRC`. Users who have not yet updated to 0.5, or +prefer a more hands-on approach may use the old method where the load order of +the plugins is determined by DAGs. -## Adding New Plugins {#sec-adding-new-plugins} +## Adding plugins {#sec-adding-plugins} -To add a plugin not available in **nvf** as a module to your configuration using -the legacy method, you must add it to [](#opt-vim.startPlugins) in order to make -it available to Neovim at runtime. +To add a plugin not available in nvf as a module to your configuration, you may +add it to [](#opt-vim.startPlugins) in order to make it available to Neovim at +runtime. ```nix {pkgs, ...}: { # Add a Neovim plugin from Nixpkgs to the runtime. - # This does not need to come explicitly from packages. 'vim.startPlugins' - # takes a list of *string* (to load internal plugins) or *package* to load - # a Neovim package from any source. vim.startPlugins = [pkgs.vimPlugins.aerial-nvim]; } ``` -Once the package is available in Neovim's runtime, you may use the `luaConfigRC` -option to provide configuration as a DAG using the **nvf** extended library in -order to configure the added plugin, +And to configure the added plugin, you can use the `luaConfigRC` option to +provide configuration as a DAG using the **nvf** extended library. ```nix {inputs, ...}: let @@ -34,8 +29,6 @@ order to configure the added plugin, # to specialArgs, the 'inputs' prefix may be omitted. inherit (inputs.nvf.lib.nvim.dag) entryAnywhere; in { - # luaConfigRC takes Lua configuration verbatim and inserts it at an arbitrary - # position by default or if 'entryAnywhere' is used. vim.luaConfigRC.aerial-nvim= entryAnywhere '' require('aerial').setup { -- your configuration here diff --git a/docs/manual/configuring/custom-plugins/non-lazy-method.md b/docs/manual/configuring/custom-plugins/non-lazy-method.md index 24ef7688..351af2eb 100644 --- a/docs/manual/configuring/custom-plugins/non-lazy-method.md +++ b/docs/manual/configuring/custom-plugins/non-lazy-method.md @@ -1,15 +1,14 @@ # Non-lazy Method {#sec-non-lazy-method} -As of version **0.5**, we have a more extensive API for configuring plugins that -should be preferred over the legacy method. This API is available as -[](#opt-vim.extraPlugins). Instead of using DAGs exposed by the library -_directly_, you may use the extra plugin module as follows: +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 +use the extra plugin module as follows: ```nix -{pkgs, ...}: { - config.vim.extraPlugins = { +{ + config.vim.extraPlugins = with pkgs.vimPlugins; { aerial = { - package = pkgs.vimPlugins.aerial-nvim; + package = aerial-nvim; setup = '' require('aerial').setup { -- some lua configuration here @@ -18,12 +17,10 @@ _directly_, you may use the extra plugin module as follows: }; harpoon = { - package = pkgs.vimPlugins.harpoon; + package = harpoon; setup = "require('harpoon').setup {}"; after = ["aerial"]; }; }; } ``` - -This provides a level of abstraction over the DAG system for faster iteration. diff --git a/docs/manual/configuring/dags.md b/docs/manual/configuring/dags.md index 08e82bab..34351826 100644 --- a/docs/manual/configuring/dags.md +++ b/docs/manual/configuring/dags.md @@ -14,17 +14,14 @@ explains in more detail the overall usage logic of the DAG type. ## entryAnywhere {#sec-types-dag-entryAnywhere} -> `nvf.lib.nvim.dag.entryAnywhere (value: T) : DagEntry` +> `lib.dag.entryAnywhere (value: T) : DagEntry` Indicates that `value` can be placed anywhere within the DAG. This is also the default for plain attribute set entries, that is ```nix -# For 'nvf' to be available in module's arguments, -# it needs to be inherited from imports in the modules array as: -# modules = [{ _module.args = { inherit nvf; }; } ...]; foo.bar = { - a = nvf.lib.nvim.dag.entryAnywhere 0; + a = lib.dag.entryAnywhere 0; } ``` @@ -40,7 +37,7 @@ are equivalent. ## entryAfter {#ch-types-dag-entryAfter} -> `nvf.lib.nvim.dag.entryAfter (afters: list string) (value: T) : DagEntry` +> `lib.dag.entryAfter (afters: list string) (value: T) : DagEntry` Indicates that `value` must be placed _after_ each of the attribute names in the given list. For example @@ -48,7 +45,7 @@ given list. For example ```nix foo.bar = { a = 0; - b = nvf.lib.nvim.dag.entryAfter [ "a" ] 1; + b = lib.dag.entryAfter [ "a" ] 1; } ``` @@ -56,14 +53,14 @@ would place `b` after `a` in the graph. ## entryBefore {#ch-types-dag-entryBefore} -> `nvf.lib.nvim.dag.entryBefore (befores: list string) (value: T) : DagEntry` +> `lib.dag.entryBefore (befores: list string) (value: T) : DagEntry` Indicates that `value` must be placed _before_ each of the attribute names in the given list. For example ```nix foo.bar = { - b = nvf.lib.nvim.dag.entryBefore [ "a" ] 1; + b = lib.dag.entryBefore [ "a" ] 1; a = 0; } ``` @@ -72,7 +69,7 @@ would place `b` before `a` in the graph. ## entryBetween {#sec-types-dag-entryBetween} -> `nvf.lib.nvim.dag.entryBetween (befores: list string) (afters: list string) (value: T) : DagEntry` +> `lib.dag.entryBetween (befores: list string) (afters: list string) (value: T) : DagEntry` Indicates that `value` must be placed _before_ the attribute names in the first list and _after_ the attribute names in the second list. For example @@ -80,7 +77,7 @@ list and _after_ the attribute names in the second list. For example ```nix foo.bar = { a = 0; - c = nvf.lib.nvim.dag.entryBetween [ "b" ] [ "a" ] 2; + c = lib.dag.entryBetween [ "b" ] [ "a" ] 2; b = 1; } ``` @@ -95,13 +92,13 @@ functions take a `tag` as argument and the DAG entries will be named ## entriesAnywhere {#sec-types-dag-entriesAnywhere} -> `nvf.lib.nvim.dag.entriesAnywhere (tag: string) (values: [T]) : Dag` +> `lib.dag.entriesAnywhere (tag: string) (values: [T]) : Dag` Creates a DAG with the given values with each entry labeled using the given tag. For example ```nix -foo.bar = nvf.lib.nvim.dag.entriesAnywhere "a" [ 0 1 ]; +foo.bar = lib.dag.entriesAnywhere "a" [ 0 1 ]; ``` is equivalent to @@ -109,13 +106,13 @@ is equivalent to ```nix foo.bar = { a-0 = 0; - a-1 = nvf.lib.nvim.dag.entryAfter [ "a-0" ] 1; + a-1 = lib.dag.entryAfter [ "a-0" ] 1; } ``` ## entriesAfter {#sec-types-dag-entriesAfter} -> `nvf.lib.nvim.dag.entriesAfter (tag: string) (afters: list string) (values: [T]) : Dag` +> `lib.dag.entriesAfter (tag: string) (afters: list string) (values: [T]) : Dag` Creates a DAG with the given values with each entry labeled using the given tag. The list of values are placed are placed _after_ each of the attribute names in @@ -123,7 +120,7 @@ The list of values are placed are placed _after_ each of the attribute names in ```nix foo.bar = - { b = 0; } // nvf.lib.nvim.dag.entriesAfter "a" [ "b" ] [ 1 2 ]; + { b = 0; } // lib.dag.entriesAfter "a" [ "b" ] [ 1 2 ]; ``` is equivalent to @@ -131,14 +128,14 @@ is equivalent to ```nix foo.bar = { b = 0; - a-0 = nvf.lib.nvim.dag.entryAfter [ "b" ] 1; - a-1 = nvf.lib.nvim.dag.entryAfter [ "a-0" ] 2; + a-0 = lib.dag.entryAfter [ "b" ] 1; + a-1 = lib.dag.entryAfter [ "a-0" ] 2; } ``` ## entriesBefore {#sec-types-dag-entriesBefore} -> `nvf.lib.nvim.dag.entriesBefore (tag: string) (befores: list string) (values: [T]) : Dag` +> `lib.dag.entriesBefore (tag: string) (befores: list string) (values: [T]) : Dag` Creates a DAG with the given values with each entry labeled using the given tag. The list of values are placed _before_ each of the attribute names in `befores`. @@ -146,7 +143,7 @@ For example ```nix foo.bar = - { b = 0; } // nvf.lib.nvim.dag.entriesBefore "a" [ "b" ] [ 1 2 ]; + { b = 0; } // lib.dag.entriesBefore "a" [ "b" ] [ 1 2 ]; ``` is equivalent to @@ -155,13 +152,13 @@ is equivalent to foo.bar = { b = 0; a-0 = 1; - a-1 = nvf.lib.nvim.dag.entryBetween [ "b" ] [ "a-0" ] 2; + a-1 = lib.dag.entryBetween [ "b" ] [ "a-0" ] 2; } ``` ## entriesBetween {#sec-types-dag-entriesBetween} -> `nvf.lib.nvim.dag.entriesBetween (tag: string) (befores: list string) (afters: list string) (values: [T]) : Dag` +> `lib.dag.entriesBetween (tag: string) (befores: list string) (afters: list string) (values: [T]) : Dag` Creates a DAG with the given values with each entry labeled using the given tag. The list of values are placed _before_ each of the attribute names in `befores` @@ -169,7 +166,7 @@ and _after_ each of the attribute names in `afters`. For example ```nix foo.bar = - { b = 0; c = 3; } // nvf.lib.nvim.dag.entriesBetween "a" [ "b" ] [ "c" ] [ 1 2 ]; + { b = 0; c = 3; } // lib.dag.entriesBetween "a" [ "b" ] [ "c" ] [ 1 2 ]; ``` is equivalent to @@ -178,7 +175,7 @@ is equivalent to foo.bar = { b = 0; c = 3; - a-0 = nvf.lib.nvim.dag.entryAfter [ "c" ] 1; - a-1 = nvf.lib.nvim.dag.entryBetween [ "b" ] [ "a-0" ] 2; + a-0 = lib.dag.entryAfter [ "c" ] 1; + a-1 = lib.dag.entryBetween [ "b" ] [ "a-0" ] 2; } ``` diff --git a/docs/manual/configuring/languages/lsp.md b/docs/manual/configuring/languages/lsp.md index 2ddc08b5..6d6ed5bc 100644 --- a/docs/manual/configuring/languages/lsp.md +++ b/docs/manual/configuring/languages/lsp.md @@ -1,22 +1,17 @@ # LSP Custom Packages/Command {#sec-languages-custom-lsp-packages} -One of the strengths of **nvf** is convenient aliases to quickly configure LSP -servers through the Nix module system. By default the LSP packages for relevant -language modules will be pulled into the closure. If this is not desirable, you -may provide **a custom LSP package** (e.g., a Bash script that calls a command) -or **a list of strings** to be interpreted as the command to launch the language -server. By using a list of strings, you can use this to skip automatic -installation of a language server, and instead use the one found in your `$PATH` -during runtime, for example: +In any of the `opt.languages..lsp.package` options you can provide +your own LSP package, or provide the command to launch the language server, as a +list of strings. You can use this to skip automatic installation of a language +server, and instead use the one found in your `$PATH` during runtime, for +example: ```nix vim.languages.java = { lsp = { enable = true; - - # This expects 'jdt-language-server' to be in your PATH or in - # 'vim.extraPackages.' There are no additional checks performed to see - # if the command provided is valid. + # this expects jdt-language-server to be in your PATH + # or in `vim.extraPackages` package = ["jdt-language-server" "-data" "~/.cache/jdtls/workspace"]; }; } diff --git a/docs/manual/configuring/overriding-plugins.md b/docs/manual/configuring/overriding-plugins.md index 25a71559..bb698666 100644 --- a/docs/manual/configuring/overriding-plugins.md +++ b/docs/manual/configuring/overriding-plugins.md @@ -2,9 +2,9 @@ The [additional plugins section](#sec-additional-plugins) details the addition of new plugins to nvf under regular circumstances, i.e. while making a pull -request to the project. You may _override_ those plugins in your config to -change source versions, e.g., to use newer versions of plugins that are not yet -updated in **nvf**. +request to the project. You may _override_ those plugins in your config +to change source versions, e.g., to use newer versions of plugins +that are not yet updated in **nvf**. ```nix vim.pluginOverrides = { diff --git a/docs/manual/default-configs.md b/docs/manual/default-configs.md new file mode 100644 index 00000000..96ffa81a --- /dev/null +++ b/docs/manual/default-configs.md @@ -0,0 +1,10 @@ +# Default Configs {#ch-default-configs} + +While you can configure **nvf** yourself using the builder, you can also use the +pre-built configs that are available. Here are a few default configurations you +can use. + +```{=include=} chapters +default-configs/maximal.md +default-configs/nix.md +``` diff --git a/docs/manual/default-configs/maximal.md b/docs/manual/default-configs/maximal.md new file mode 100644 index 00000000..e1f5273e --- /dev/null +++ b/docs/manual/default-configs/maximal.md @@ -0,0 +1,11 @@ +# Maximal {#sec-default-maximal} + +```bash +$ nix run github:notashelf/nvf#maximal -- test.nix +``` + +It is the same fully configured Neovim as with the [Nix](#sec-default-nix) +configuration, but with every supported language enabled. + +::: {.note} Running the maximal config will download _a lot_ of packages as it +is downloading language servers, formatters, and more. ::: diff --git a/docs/manual/default-configs/nix.md b/docs/manual/default-configs/nix.md new file mode 100644 index 00000000..5210ef39 --- /dev/null +++ b/docs/manual/default-configs/nix.md @@ -0,0 +1,9 @@ +# Nix {#sec-default-nix} + +```bash +$ nix run github:notashelf/nvf#nix test.nix +``` + +Enables all the of Neovim plugins, with language support for specifically Nix. +This lets you see what a fully configured neovim setup looks like without +downloading a whole bunch of language servers and associated tools. diff --git a/docs/manual/hacking/additional-plugins.md b/docs/manual/hacking/additional-plugins.md index 1f7ba778..0ed252c7 100644 --- a/docs/manual/hacking/additional-plugins.md +++ b/docs/manual/hacking/additional-plugins.md @@ -1,92 +1,25 @@ # Adding Plugins {#sec-additional-plugins} -There are two methods for adding new Neovim plugins to **nvf**. npins is the -faster option that should be preferred if the plugin consists of pure Lua or -Vimscript code. In which case there is no building required, and we can easily -handle the copying of plugin files. Alternative method, which is required when -plugins try to build their own libraries (e.g., in Rust or C) that need to be -built with Nix to function correctly. +To add a new Neovim plugin, use `npins` -## With npins {#sec-npins-for-plugins} +Use: -npins is the standard method of adding new plugins to **nvf**. You simply need -the repository URL for the plugin, and can add it as a source to be built -automatically with one command. To add a new Neovim plugin, use `npins`. For -example: - -```bash -nix-shell -p npins # or nix shell nixpkgs#npins if using flakes -``` +`nix-shell -p npins` or `nix shell nixpkgs#npins` Then run: -```bash -npins add --name github -b -``` +`npins add --name github -b ` -::: {.note} +Be sure to replace any non-alphanumeric characters with `-` for `--name` -Be sure to replace any non-alphanumeric characters with `-` for `--name`. For -example +For example -```bash -npins add --name lazydev-nvim github folke lazydev.nvim -b main -``` +`npins add --name lazydev-nvim github folke lazydev.nvim -b main` -::: - -Once the `npins` command is done, you can start referencing the plugin as a -**string**. +You can now reference this plugin as a **string**. ```nix -{ - config.vim.startPlugins = ["lazydev-nvim"]; -} -``` - -## Packaging Complex Plugins {#sec-pkgs-for-plugins} - -[blink.cmp]: https://github.com/Saghen/blink.cmp - -Some plugins require additional packages to be built and substituted to function -correctly. For example [blink.cmp] requires its own fuzzy matcher library, built -with Rust, to be installed or else defaults to a much slower Lua implementation. -In the Blink documentation, you are advised to build with `cargo` but that is -not ideal since we are leveraging the power of Nix. In this case the ideal -solution is to write a derivation for the plugin. - -We use `buildRustPackage` to build the library from the repository root, and -copy everything in the `postInstall` phase. - -```nix -postInstall = '' - cp -r {lua,plugin} "$out" - - mkdir -p "$out/doc" - cp 'doc/'*'.txt' "$out/doc/" - - mkdir -p "$out/target" - mv "$out/lib" "$out/target/release" -''; -``` - -In a similar fashion, you may utilize `stdenv.mkDerivation` and other Nixpkgs -builders to build your library from source, and copy the relevant files and Lua -plugin files in the `postInstall` phase. Do note, however, that you still need -to fetch the plugin sources somehow. npins is, once again, the recommended -option to fetch the plugin sources. Refer to the previous section on how to use -npins to add a new plugin. - -Plugins built from source must go into the `flake/pkgs/by-name` overlay. It will -automatically create flake outputs for individual packages. Lastly, you must add -your package to the plugin builder (`pluginBuilders`) function manually in -`modules/wrapper/build/config.nix`. Once done, you may refer to your plugin as a -**string**. - -```nix -{ - config.vim.startPlugins = ["blink-cmp"]; -} +config.vim.startPlugins = ["lazydev-nvim"]; ``` ## Modular setup options {#sec-modular-setup-options} @@ -137,7 +70,7 @@ in { } ``` -This above config will result in this Lua script: +This above config will result in this lua script: ```lua require('plugin-name').setup({ @@ -168,41 +101,23 @@ own fields! As you've seen above, `toLuaObject` is used to convert our nix attrSet `cfg.setupOpts`, into a lua table. Here are some rules of the conversion: -1. Nix `null` converts to lua `nil` -2. Number and strings convert to their lua counterparts -3. Nix attribute sets (`{}`) and lists (`[]`) convert into Lua dictionaries and - tables respectively. Here is an example of Nix -> Lua conversion. - - `{foo = "bar"}` -> `{["foo"] = "bar"}` - - `["foo" "bar"]` -> `{"foo", "bar"}` -4. You can write raw Lua code using `lib.generators.mkLuaInline`. This function - is part of nixpkgs, and is accessible without relying on **nvf**'s extended - library. - - `mkLuaInline "function add(a, b) return a + b end"` will yield the - following result: +1. nix `null` converts to lua `nil` +2. number and strings convert to their lua counterparts +3. nix attrSet/list convert into lua tables +4. you can write raw lua code using `lib.generators.mkLuaInline`. This function + is part of nixpkgs. - ```nix - { - _type = "lua-inline"; - expr = "function add(a, b) return a + b end"; - } - ``` +Example: - The above expression will be interpreted as a Lua expression in the final - config. Without the `mkLuaInline` function, you will only receive a string - literal. You can use it to feed plugin configuration tables Lua functions - that return specific values as expected by the plugins. - - ```nix - { - vim.your-plugin.setupOpts = { - on_init = lib.generators.mkLuaInline '' - function() - print('we can write lua!') - end - ''; - }; - } - ``` +```nix +vim.your-plugin.setupOpts = { + on_init = lib.generators.mkLuaInline '' + function() + print('we can write lua!') + end + ''; +} +``` ## Lazy plugins {#sec-lazy-plugins} @@ -211,24 +126,25 @@ Lazy plugins are managed by `lz.n`. ```nix # in modules/.../your-plugin/config.nix -{config, ...}: let +{lib, config, ...}: +let cfg = config.vim.your-plugin; in { vim.lazy.plugins.your-plugin = { - # Instead of vim.startPlugins, use this: + # instead of vim.startPlugins, use this: package = "your-plugin"; - # Δ±f your plugin uses the `require('your-plugin').setup{...}` pattern + # if your plugin uses the `require('your-plugin').setup{...}` pattern setupModule = "your-plugin"; inherit (cfg) setupOpts; - # Events that trigger this plugin to be loaded + # events that trigger this plugin to be loaded event = ["DirChanged"]; cmd = ["YourPluginCommand"]; - # Plugin Keymaps + # keymaps keys = [ - # We'll cover this in detail in the 'keybinds' section + # we'll cover this in detail in the keymaps section { key = "d"; mode = "n"; @@ -236,6 +152,7 @@ in { } ]; }; +; } ``` @@ -246,9 +163,7 @@ require('lz.n').load({ { "name-of-your-plugin", after = function() - require('your-plugin').setup({ - --[[ your setupOpts ]]-- - }) + require('your-plugin').setup({--[[ your setupOpts ]]}) end, event = {"DirChanged"}, @@ -260,7 +175,5 @@ require('lz.n').load({ }) ``` -[`vim.lazy.plugins` spec]: https://notashelf.github.io/nvf/options.html#opt-vim.lazy.plugins - -A full list of options can be found in the [`vim.lazy.plugins` spec] on the -rendered manual. +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 90623dd3..3940466f 100644 --- a/docs/manual/hacking/keybinds.md +++ b/docs/manual/hacking/keybinds.md @@ -30,8 +30,8 @@ There are many settings available in the options. Please refer to the [documentation](https://notashelf.github.io/nvf/options.html#opt-vim.keymaps) to see a list of them. -**nvf** provides a helper function, so that you don't have to write the mapping -attribute sets every time: +**nvf** provides a helper function, so that you don't have to write the +mapping attribute sets every time: - `mkKeymap`, which mimics neovim's `vim.keymap.set` function diff --git a/docs/manual/installation/custom-configuration.md b/docs/manual/installation/custom-configuration.md index 52f81573..940f35a3 100644 --- a/docs/manual/installation/custom-configuration.md +++ b/docs/manual/installation/custom-configuration.md @@ -39,7 +39,7 @@ An example flake that exposes your custom Neovim configuration might look like theme.enable = true; # Enable Treesitter - treesitter.enable = true; + tree-sitter.enable = true; # Other options will go here. Refer to the config # reference in Appendix B of the nvf manual. diff --git a/docs/manual/installation/modules/flakes.md b/docs/manual/installation/modules/flakes.md deleted file mode 100644 index 273d2b00..00000000 --- a/docs/manual/installation/modules/flakes.md +++ /dev/null @@ -1,33 +0,0 @@ -### Prerequisites {#sec-flakes-prerequisites} - -To install nvf with flakes, you must make sure the following requirements are -met. - -1. Nix 2.4 or later must be installed. You may use `nix-shell` to get a later - version of Nix from nixpkgs. -2. Flake-related experimental features must be enabled. Namely, you need - `nix-command` and `flakes`. Some Nix vendors enable those by default, please - consult their documentation if you are not using mainstream Nix. - - When using NixOS, add the following to your `configuration.nix` and rebuild - your system. - - ```nix - nix.settings.experimental-features = "nix-command flakes"; - ``` - - - If you are not using NixOS, add the following to `nix.conf` (located at - `~/.config/nix/` or `/etc/nix/nix.conf`). - - ```bash - experimental-features = nix-command flakes - ``` - - - You may need to restart the Nix daemon with, for example, - `sudo systemctl restart nix-daemon.service`. - - - Alternatively, you can enable flakes on a per-command basis with the - following additional flags to `nix` and `home-manager`: - - ```sh - $ nix --extra-experimental-features "nix-command flakes" - ``` diff --git a/docs/manual/installation/modules/home-manager.md b/docs/manual/installation/modules/home-manager.md index 37d35e2b..2b359af5 100644 --- a/docs/manual/installation/modules/home-manager.md +++ b/docs/manual/installation/modules/home-manager.md @@ -5,18 +5,9 @@ inside the home-manager configuration without having to call for the wrapper yourself. It is the recommended way to use **nvf** alongside the NixOS module depending on your needs. -## With Flakes {#sec-hm-flakes} - -```{=include=} -flakes.md -``` - -### Usage {#sec-hm-flakes-usage} - -To use **nvf** with flakes, we first need to add the input to our `flake.nix`. +To use it, we first add the input flake. ```nix -# flake.nix { inputs = { # Optional, if you intend to follow nvf's obsidian-nvim input @@ -25,7 +16,7 @@ To use **nvf** with flakes, we first need to add the input to our `flake.nix`. # Required, nvf works best and only directly supports flakes nvf = { - url = "github:NotAShelf/nvf"; + url = "github:notashelf/nvf"; # You can override the input nixpkgs to follow your system's # instance of nixpkgs. This is safe to do as nvf does not depend # on a binary cache. @@ -34,8 +25,6 @@ To use **nvf** with flakes, we first need to add the input to our `flake.nix`. # for example: inputs.obsidian-nvim.follows = "obsidian-nvim"; # <- this will use the obsidian-nvim from your inputs }; - - # ... }; } ``` @@ -50,7 +39,7 @@ Followed by importing the home-manager module somewhere in your configuration. } ``` -### Example Installation {#sec-example-installation-hm} +## Example Installation {#sec-example-installation-hm} ```nix { @@ -77,8 +66,7 @@ Once the module is properly imported by your host, you will be able to use the `programs.nvf` module option anywhere in your configuration in order to configure **nvf**. -```nix -{ +```nix{ programs.nvf = { enable = true; # your settings need to go into the settings attribute set @@ -101,45 +89,3 @@ installation sections of the manual. You may find all available options in the [appendix](https://notashelf.github.io/nvf/options) ::: - -## Without Flakes {#sec-hm-flakeless} - -As of v0.8, it is possible to install **nvf** on a system if you are not using -flakes. This is possible thanks to the flake-compat project. - -To get started, you must fetch the repository using `builtins.fetchTarball` or a -similar mechanism. - -```nix -# home.nix -let - nvf = import (builtins.fetchTarball { - url = "https://github.com/notashelf/nvf/archive/.tar.gz"; - # Optionally, you can add 'sha256' for verification and caching - # sha256 = ""; - }); -in { - imports = [ - # Import the NixOS module from your fetched input - nvf.homeManagerModules.nvf - ]; - - # Once the module is imported, you may use `programs.nvf` as exposed by the - # NixOS module. - programs.nvf.enable = true; -} -``` - -[npins]: https://github.com/andir/npins -[niv]: https://github.com/nmattia/niv - -::: {.tip} - -Nix2 does not have a builtin lockfile mechanism like flakes. As such you must -manually update the URL and hash for your input. This is annoying to deal with, -and most users choose to defer this task to projects such as [npins] or [niv]. -If you are new to NixOS, I encourage you to look into Flakes and see if they fit -your use case. Alternatively, look into the aforementioned projects for more -convenient dependency management mechanisms. - -::: diff --git a/docs/manual/installation/modules/nixos.md b/docs/manual/installation/modules/nixos.md index 946905c1..bcf7472b 100644 --- a/docs/manual/installation/modules/nixos.md +++ b/docs/manual/installation/modules/nixos.md @@ -5,18 +5,9 @@ the NixOS configuration without having to call for the wrapper yourself. It is the recommended way to use **nvf** alongside the home-manager module depending on your needs. -## With Flakes {#sec-nixos-flakes} - -```{=include=} -flakes.md -``` - -### Usage {#sec-nixos-flakes-usage} - -To use **nvf** with flakes, we first need to add the input to our `flake.nix`. +To use it, we first add the input flake. ```nix -# flake.nix { inputs = { # Optional, if you intend to follow nvf's obsidian-nvim input @@ -25,7 +16,7 @@ To use **nvf** with flakes, we first need to add the input to our `flake.nix`. # Required, nvf works best and only directly supports flakes nvf = { - url = "github:NotAShelf/nvf"; + url = "github:notashelf/nvf"; # You can override the input nixpkgs to follow your system's # instance of nixpkgs. This is safe to do as nvf does not depend # on a binary cache. @@ -34,8 +25,6 @@ To use **nvf** with flakes, we first need to add the input to our `flake.nix`. # for example: inputs.obsidian-nvim.follows = "obsidian-nvim"; # <- this will use the obsidian-nvim from your inputs }; - - # ... }; } ``` @@ -50,7 +39,7 @@ Followed by importing the NixOS module somewhere in your configuration. } ``` -### Example Installation {#sec-example-installation-nixos} +## Example Installation {#sec-example-installation-nixos} ```nix { @@ -75,12 +64,10 @@ Once the module is properly imported by your host, you will be able to use the `programs.nvf` module option anywhere in your configuration in order to configure **nvf**. -```nix -{ +```nix{ programs.nvf = { enable = true; - - # Your settings need to go into the settings attribute set + # your settings need to go into the settings attribute set # most settings are documented in the appendix settings = { vim.viAlias = false; @@ -100,45 +87,3 @@ installation sections of the manual. You may find all available options in the [appendix](https://notashelf.github.io/nvf/options) ::: - -## Without Flakes {#sec-nixos-flakeless} - -As of v0.8, it is possible to install **nvf** on a system if you are not using -flakes. This is possible thanks to the flake-compat project. - -To get started, you must fetch the repository using `builtins.fetchTarball` or a -similar mechanism. - -```nix -# configuration.nix -let - nvf = import (builtins.fetchTarball { - url = "https://github.com/notashelf/nvf/archive/.tar.gz"; - # Optionally, you can add 'sha256' for verification and caching - # sha256 = ""; - }); -in { - imports = [ - # Import the NixOS module from your fetched input - nvf.nixosModules.nvf - ]; - - # Once the module is imported, you may use `programs.nvf` as exposed by the - # NixOS module. - programs.nvf.enable = true; -} -``` - -[npins]: https://github.com/andir/npins -[niv]: https://github.com/nmattia/niv - -::: {.tip} - -Nix2 does not have a builtin lockfile mechanism like flakes. As such you must -manually update the URL and hash for your input. This is annoying to deal with, -and most users choose to defer this task to projects such as [npins] or [niv]. -If you are new to NixOS, I encourage you to look into Flakes and see if they fit -your use case. Alternatively, look into the aforementioned projects for more -convenient dependency management mechanisms. - -::: diff --git a/docs/manual/installation/standalone/nixos.md b/docs/manual/installation/standalone/nixos.md index 65dc9205..267d15b7 100644 --- a/docs/manual/installation/standalone/nixos.md +++ b/docs/manual/installation/standalone/nixos.md @@ -49,8 +49,7 @@ the default theme enabled. You may use other options inside `config.vim` in # ... modules = [ # This will make wrapped neovim available in your system packages - # Can also move this to another config file if you pass your own - # inputs/self around with specialArgs + # Can also move this to another config file if you pass inputs/self around with specialArgs ({pkgs, ...}: { environment.systemPackages = [self.packages.${pkgs.stdenv.system}.neovim]; }) @@ -59,5 +58,4 @@ the default theme enabled. You may use other options inside `config.vim` in }; }; }; -} -``` +}``` diff --git a/docs/manual/manual.md b/docs/manual/manual.md index 18932896..fd225766 100644 --- a/docs/manual/manual.md +++ b/docs/manual/manual.md @@ -8,6 +8,7 @@ try-it-out.md ``` ```{=include=} parts +default-configs.md installation.md configuring.md tips.md diff --git a/docs/manual/tips.md b/docs/manual/tips.md index 01bddc40..6e6dc9c2 100644 --- a/docs/manual/tips.md +++ b/docs/manual/tips.md @@ -1,14 +1,7 @@ # Helpful Tips {#ch-helpful-tips} -This section provides helpful tips that may be considered "unorthodox" or "too -advanced" for some users. We will cover basic debugging steps, offline -documentation, configuring **nvf** with pure Lua and using custom plugin sources -in **nvf** in this section. For general configuration tips, please see previous -chapters. - ```{=include=} chapters +tips/pure-lua-config.md tips/debugging-nvf.md tips/offline-docs.md -tips/pure-lua-config.md -tips/plugin-sources.md ``` diff --git a/docs/manual/tips/plugin-sources.md b/docs/manual/tips/plugin-sources.md deleted file mode 100644 index 7cf6a470..00000000 --- a/docs/manual/tips/plugin-sources.md +++ /dev/null @@ -1,131 +0,0 @@ -# Adding Plugins From Different Sources {#sec-plugin-sources} - -**nvf** attempts to avoid depending on Nixpkgs for Neovim plugins. For the most -part, this is accomplished by defining each plugin's source and building them -from source. - -[npins]: https://github.com/andir/npins - -To define plugin sources, we use [npins] and pin each plugin source using -builtin fetchers. You are not bound by this restriction. In your own -configuration, any kind of fetcher or plugin source is fine. - -## Nixpkgs & Friends {#ch-plugins-from-nixpkgs} - -`vim.startPlugins` and `vim.optPlugins` options take either a **string**, in -which case a plugin from nvf's internal plugins registry will be used, or a -**package**. If your plugin does not require any setup, or ordering for it s -configuration, then it is possible to add it to `vim.startPlugins` to load it on -startup. - -```nix -{pkgs, ...}: { - # Aerial does require some setup. In the case you pass a plugin that *does* - # require manual setup, then you must also call the setup function. - vim.startPlugins = [pkgs.vimPlugins.aerial-nvim]; -} -``` - -[`vim.extraPlugins`]: https://notashelf.github.io/nvf/options.html#opt-vim.extraPlugins - -This will fetch aerial.nvim from nixpkgs, and add it to Neovim's runtime path to -be loaded manually. Although for plugins that require manual setup, you are -encouraged to use [`vim.extraPlugins`]. - -```nix -{ - vim.extraPlugins = { - aerial = { - package = pkgs.vimPlugins.aerial-nvim; - setup = "require('aerial').setup {}"; - }; - }; -} -``` - -[custom plugins section]: https://notashelf.github.io/nvf/index.xhtml#ch-custom-plugins - -More details on the extraPlugins API is documented in the -[custom plugins section]. - -## Building Your Own Plugins {#ch-plugins-from-source} - -In the case a plugin is not available in Nixpkgs, or the Nixpkgs package is -outdated (or, more likely, broken) it is possible to build the plugins from -source using a tool, such as [npins]. You may also use your _flake inputs_ as -sources. - -Example using plugin inputs: - -```nix -{ - # In your flake.nix - inputs = { - aerial-nvim = { - url = "github:stevearc/aerial.nvim" - flake = false; - }; - }; - - # Make sure that 'inputs' is properly propagated into Nvf, for example, through - # specialArgs. - outputs = { ... }; -} -``` - -In the case, you may use the input directly for the plugin's source attribute in -`buildVimPlugin`. - -```nix -# Make sure that 'inputs' is properly propagated! It will be missing otherwise -# and the resulting errors might be too obscure. -{inputs, ...}: let - aerial-from-source = pkgs.vimUtils.buildVimPlugin { - name = "aerial-nvim"; - src = inputs.aerial-nvim; - }; -in { - vim.extraPlugins = { - aerial = { - package = aerial-from-source; - setup = "require('aerial').setup {}"; - }; - }; -} -``` - -Alternatively, if you do not want to keep track of the source using flake inputs -or npins, you may call `fetchFromGitHub` (or other fetchers) directly. An -example would look like this. - -```nix -regexplainer = buildVimPlugin { - name = "nvim-regexplainer"; - src = fetchFromGitHub { - owner = "bennypowers"; - repo = "nvim-regexplainer"; - rev = "4250c8f3c1307876384e70eeedde5149249e154f"; - hash = "sha256-15DLbKtOgUPq4DcF71jFYu31faDn52k3P1x47GL3+b0="; - }; - - # The 'buildVimPlugin' imposes some "require checks" on all plugins build from - # source. Failing tests, if they are not relevant, can be disabled using the - # 'nvimSkipModule' argument to the 'buildVimPlugin' function. - nvimSkipModule = [ - "regexplainer" - "regexplainer.buffers.init" - "regexplainer.buffers.popup" - "regexplainer.buffers.register" - "regexplainer.buffers.shared" - "regexplainer.buffers.split" - "regexplainer.component.descriptions" - "regexplainer.component.init" - "regexplainer.renderers.narrative.init" - "regexplainer.renderers.narrative.narrative" - "regexplainer.renderers.init" - "regexplainer.utils.defer" - "regexplainer.utils.init" - "regexplainer.utils.treesitter" - ]; -} -``` diff --git a/docs/manual/tips/pure-lua-config.md b/docs/manual/tips/pure-lua-config.md index 1dca8296..eb8881e9 100644 --- a/docs/manual/tips/pure-lua-config.md +++ b/docs/manual/tips/pure-lua-config.md @@ -23,7 +23,7 @@ manner. # flake.nix. For the sake of the argument, we will assume that the Neovim lua # configuration is in a nvim/ directory relative to flake.nix. vim = { - additionalRuntimePaths = [ + additionalRuntimeDirectories = [ # This will be added to Neovim's runtime paths. Conceptually, this behaves # very similarly to ~/.config/nvim but you may not place a top-level # init.lua to be able to require it directly. @@ -41,7 +41,7 @@ directory, and call it with [](#opt-vim.luaConfigRC). ```nix {pkgs, ...}: { vim = { - additionalRuntimePaths = [ + additionalRuntimeDirectories = [ # You can list more than one file here. ./nvim-custom-1 diff --git a/docs/manual/try-it-out.md b/docs/manual/try-it-out.md index a5d20363..8244c2b7 100644 --- a/docs/manual/try-it-out.md +++ b/docs/manual/try-it-out.md @@ -5,20 +5,19 @@ installing it to your machine. Below are the commands you may run to try out different configurations provided by this flake. As of v0.5, two specialized configurations are provided: -- **Nix** (`packages.nix`) - Nix language server + simple utility plugins -- **Maximal** (`packages.maximal`) - Variable language servers + utility and - decorative plugins +- **Nix** - Nix language server + simple utility plugins +- **Maximal** - Variable language servers + utility and decorative plugins You may try out any of the provided configurations using the `nix run` command on a system where Nix is installed. -```sh +```bash $ cachix use nvf # Optional: it'll save you CPU resources and time -$ nix run github:notashelf/nvf#nix # Will run the default minimal configuration +$ nix run github:notashelf/nvf#nix # will run the default minimal configuration ``` -Do keep in mind that this is **susceptible to garbage collection** meaning that -the built outputs will be removed from your Nix store once you garbage collect. +Do keep in mind that this is **susceptible to garbage collection** meaning it +will be removed from your Nix store once you garbage collect. ## Using Prebuilt Configs {#sec-using-prebuilt-configs} @@ -27,12 +26,7 @@ $ nix run github:notashelf/nvf#nix $ nix run github:notashelf/nvf#maximal ``` -### Available Configurations {#sec-available-configs} - -::: {.info} - -The below configurations are provided for demonstration purposes, and are -**not** designed to be installed as is. You may +### Available Configs {#sec-available-configs} #### Nix {#sec-configs-nix} @@ -40,33 +34,15 @@ The below configurations are provided for demonstration purposes, and are a set of visual and functional plugins. By running `nix run .#`, which is the default package, you will build Neovim with this config. -```bash -$ nix run github:notashelf/nvf#nix test.nix -``` - -This command will start Neovim with some opinionated plugin configurations, and -is designed specifically for Nix. the `nix` configuration lets you see how a -fully configured Neovim setup _might_ look like without downloading too many -packages or shell utilities. - #### Maximal {#sec-configs-maximal} `Maximal` is the ultimate configuration that will enable support for more commonly used language as well as additional complementary plugins. Keep in mind, however, that this will pull a lot of dependencies. -```bash -$ nix run github:notashelf/nvf#maximal -- test.nix -``` +::: {.tip} -It uses the same configuration template with the [Nix](#sec-configs-nix) -configuration, but supports many more languages, and enables more utility, -companion or fun plugins. - -::: {.warning} - -Running the maximal config will download _a lot_ of packages as it is -downloading language servers, formatters, and more. If CPU time and bandwidth -are concerns, please use the default package instead. +You are _strongly_ recommended to use the binary cache if you would like to try +the Maximal configuration. ::: diff --git a/docs/release-notes/rl-0.3.md b/docs/release-notes/rl-0.3.md index 089f01f7..87ae5648 100644 --- a/docs/release-notes/rl-0.3.md +++ b/docs/release-notes/rl-0.3.md @@ -50,8 +50,9 @@ soon. - A new section has been added for language support: `vim.languages.`. - - The options `enableLSP` [](#opt-vim.languages.enableTreesitter), etc. will - enable the respective section for all languages that have been enabled. + - The options [](#opt-vim.languages.enableLSP), + [](#opt-vim.languages.enableTreesitter), etc. will enable the respective + section for all languages that have been enabled. - All LSP languages have been moved here - `plantuml` and `markdown` have been moved here - A new section has been added for `html`. The old diff --git a/docs/release-notes/rl-0.5.md b/docs/release-notes/rl-0.5.md index 910c93d5..0ca02164 100644 --- a/docs/release-notes/rl-0.5.md +++ b/docs/release-notes/rl-0.5.md @@ -91,7 +91,7 @@ Release notes for release 0.5 - Updated indent-blankine.nvim to v3 - this comes with a few option changes, which will be migrated with `renamedOptionModule` -[poz](https://poz.pet): +[jacekpoz](https://jacekpoz.pl): - Fixed scrollOffset not being used diff --git a/docs/release-notes/rl-0.6.md b/docs/release-notes/rl-0.6.md index 309d6b16..1807a3e9 100644 --- a/docs/release-notes/rl-0.6.md +++ b/docs/release-notes/rl-0.6.md @@ -69,7 +69,7 @@ vim.api.nvim_set_keymap('n', 'a', ':lua camelToSnake()', { noremap = - Added rose-pine theme. -[poz](https://poz.pet): +[jacekpoz](https://jacekpoz.pl): - Added `vim.autocomplete.alwaysComplete`. Allows users to have the autocomplete window popup only when manually activated. diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index 83b4efd7..d62e3619 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -162,7 +162,7 @@ The changes are, in no particular order: - Add [lz.n] support and lazy-load some builtin plugins. - Add simpler helper functions for making keymaps -[poz](https://poz.pet): +[jacekpoz](https://jacekpoz.pl): [ocaml-lsp]: https://github.com/ocaml/ocaml-lsp [new-file-template.nvim]: https://github.com/otavioschwanck/new-file-template.nvim @@ -170,7 +170,7 @@ The changes are, in no particular order: - Add [ocaml-lsp] support -- Fix `Emac` typo +- Fix "Emac" typo - Add [new-file-template.nvim] to automatically fill new file contents using templates diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index 5914df92..710578eb 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -19,15 +19,6 @@ unavailable as they have been refactored out of the main none-ls repository upstream. -- `vim.useSystemClipboard` has been deprecated as a part of removing most - top-level convenience options, and should instead be configured in the new - module interface. You may set [](#opt-vim.clipboard.registers) appropriately - to configure Neovim to use the system clipboard. - -- Changed which-key group used for gitsigns from `g` to `h` to - align with the "hunks" themed mapping and avoid conflict with the new [neogit] - group. - [NotAShelf](https://github.com/notashelf): [typst-preview.nvim]: https://github.com/chomosuke/typst-preview.nvim @@ -35,10 +26,7 @@ [yanky.nvim]: https://github.com/gbprod/yanky.nvim [yazi.nvim]: https://github.com/mikavilpas/yazi.nvim [snacks.nvim]: https://github.com/folke/snacks.nvim -[colorful-menu.nvim]: https://github.com/xzbdmw/colorful-menu.nvim [oil.nvim]: https://github.com/stevearc/oil.nvim -[hunk.nvim]: https://github.com/julienvincent/hunk.nvim -[undotree]: https://github.com/mbbill/undotree - Add [typst-preview.nvim] under `languages.typst.extensions.typst-preview-nvim`. @@ -96,21 +84,13 @@ - Lazyload Lspsaga and remove default keybindings for it. -- Add [colorful-menu.nvim] to enhance the completion menus, with optional - integration for blink-cmp and nvim-cmp - Add [oil.nvim] as an alternative file explorer. It will be available under `vim.utility.oil-nvim`. + - Add `vim.diagnostics` to interact with Neovim's diagnostics module. Available options for `vim.diagnostic.config()` can now be customized through the [](#opt-vim.diagnostics.config) in nvf. -- Add `vim.clipboard` module for easily managing Neovim clipboard providers and - relevant packages in a simple UI. - - This deprecates `vim.useSystemClipboard` as well, see breaking changes - section above for migration options. -- Add [hunk.nvim], Neovim plugin & tool for splitting diffs in Neovim. Available - as `vim.git.hunk-nvim` - [amadaluzia](https://github.com/amadaluzia): [haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim @@ -127,9 +107,6 @@ - Add `LazyFile` user event. - Migrate language modules from none-ls to conform/nvim-lint - Add tsx support in conform and lint -- Moved code setting `additionalRuntimePaths` and `enableLuaLoader` out of - `luaConfigPre`'s default to prevent being overridden -- Use conform over custom autocmds for LSP format on save [diniamo](https://github.com/diniamo): @@ -299,7 +276,6 @@ [BANanaD3V](https://github.com/BANanaD3V): - `alpha` is now configured with nix. -- Add `markview-nvim` markdown renderer. [viicslen](https://github.com/viicslen): @@ -313,12 +289,7 @@ [rice-cracker-dev](https://github.com/rice-cracker-dev): - `eslint_d` now checks for configuration files to load. -- Fix an error where `eslint_d` fails to load. -- Add required files support for linters under - `vim.diagnostics.nvim-lint.linters.*.required_files`. -- Add global function `nvf_lint` under - `vim.diagnostics.nvim-lint.lint_function`. -- Deprecate `vim.scrollOffset` in favor of `vim.options.scrolloff`. +- Fixed an error where `eslint_d` fails to load. [Sc3l3t0n](https://github.com/Sc3l3t0n): @@ -329,14 +300,12 @@ - Add lint (luacheck) and formatting (stylua) support for Lua. - Add lint (markdownlint-cli2) support for Markdown. - Add catppuccin integration for Bufferline, Lspsaga. -- Add `neo-tree`, `snacks.explorer` integrations to `bufferline`. +- Add neo-tree integration for Bufferline. - Add more applicable filetypes to illuminate denylist. - Disable mini.indentscope for applicable filetypes. - Fix fzf-lua having a hard dependency on fzf. - Enable inlay hints support - `config.vim.lsp.inlayHints`. -- Add `neo-tree`, `snacks.picker` extensions to `lualine`. -- Add support for `vim.lsp.formatOnSave` and - `vim.lsp.mappings.toggleFormatOnSave` +- Add `neo-tree` extension to `lualine`. [tebuevd](https://github.com/tebuevd): @@ -350,163 +319,12 @@ [flash.nvim]: https://github.com/folke/flash.nvim [gitlinker.nvim]: https://github.com/linrongbin16/gitlinker.nvim -[nvim-treesitter-textobjects]: https://github.com/nvim-treesitter/nvim-treesitter-textobjects - Fix oil config referencing snacks - Add [flash.nvim] plugin to `vim.utility.motion.flash-nvim` - Fix default telescope ignore list entry for '.git/' to properly match - Add [gitlinker.nvim] plugin to `vim.git.gitlinker-nvim` -- Add [nvim-treesitter-textobjects] plugin to `vim.treesitter.textobjects` -- Default to disabling Conform for Rust if rust-analyzer is used - - To force using Conform, set `languages.rust.format.enable = true`. [rrvsh](https://github.com/rrvsh): -- Add custom snippet support to `vim.snippets.luasnip` - Fix namespace of python-lsp-server by changing it to python3Packages - -[Noah765](https://github.com/Noah765): - -[vim-sleuth]: https://github.com/tpope/vim-sleuth - -- Add missing `flutter-tools.nvim` dependency `plenary.nvim`. -- Add necessary dependency of `flutter-tools.nvim` on lsp. -- Add the `vim.languages.dart.flutter-tools.flutterPackage` option. -- Fix the type of the `highlight` color options. -- Add [vim-sleuth] plugin under `vim.utility.sleuth`. - -[howird](https://github.com/howird): - -- Change python dap adapter name from `python` to commonly expected `debugpy`. - -[aionoid](https://github.com/aionoid): - -[avante-nvim]: https://github.com/yetone/avante.nvim - -- Fix [render-markdown.nvim] file_types option type to list, to accept merging. -- Add [avante.nvim] plugin under `vim.assistant.avante-nvim`. - -[poz](https://poz.pet): - -[everforest]: https://github.com/sainnhe/everforest - -- Fix gitsigns null-ls issue. -- Add [everforest] theme support. - -[Haskex](https://github.com/haskex): - -[Hardtime.nvim]: https://github.com/m4xshen/hardtime.nvim - -- Add Plugin [Hardtime.nvim] under `vim.binds.hardtime-nvim` with `enable` and - `setupOpts` options - -[taylrfnt](https://github.com/taylrfnt): - -[nvim-tree](https://github.com/nvim-tree/nvim-tree.lua): - -- Add missing `right_align` option for existing `renderer.icons` options. -- Add missing `render.icons` options (`hidden_placement`, - `diagnostics_placement`, and `bookmarks_placement`). - -[cramt](https://github.com/cramt): - -- Add `rubylsp` option in `vim.languages.ruby.lsp.server` to use shopify's - ruby-lsp language server - -[Haskex](https://github.com/haskex): - -[solarized-osaka.nvim]: https://github.com/craftzdog/solarized-osaka.nvim - -- Add [solarized-osaka.nvim] theme - -[img-clip.nvim]: https://github.com/hakonharnes/img-clip.nvim - -- Add [img-clip.nvim] plugin in `vim.utility.images.img-clip` with `enable` and - `setupOpts` -- Add `vim.utility.images.img-clip.enable = isMaximal` in configuration.nix - -[anil9](https://github.com/anil9): - -[clojure-lsp]: https://github.com/clojure-lsp/clojure-lsp -[conjure]: https://github.com/Olical/conjure - -- Add Clojure support under `vim.languages.clojure` using [clojure-lsp] -- Add code evaluation environment [conjure] under `vim.repl.conjure` - -[CallumGilly](https://github.com/CallumGilly): - -- Add missing `transparent` option for existing - [onedark.nvim](https://github.com/navarasu/onedark.nvim) theme. - -[theutz](https://github.com/theutz): - -- Added "auto" flavour for catppuccin theme - -[lackac](https://github.com/lackac): - -[solarized.nvim]: https://github.com/maxmx03/solarized.nvim -[smart-splits.nvim]: https://github.com/mrjones2014/smart-splits.nvim -[neogit]: https://github.com/NeogitOrg/neogit - -- Add [solarized.nvim] theme with support for multiple variants -- Add [smart-splits.nvim] for navigating between Neovim windows and terminal - multiplexer panes. Available at `vim.utility.smart-splits`. -- Restore vim-dirtytalk plugin and fix ordering with spellcheck in generated - config. -- Fix lualine separator options -- Add [neogit], an interactive and powerful Git interface for Neovim, inspired - by Magit -- Allow deregistering which-key binds or groups by setting them to `null` - -[justDeeevin](https://github.com/justDeeevin): - -[supermaven-nvim]: https://github.com/supermaven-inc/supermaven-nvim - -- Add [supermaven-nvim] plugin in `vim.assistant.supermaven-nvim` with `enable` - and `setupOpts` - -[trueNAHO](https://github.com/trueNAHO): - -- `flake-parts`'s `nixpkgs-lib` input follows nvf's `nixpkgs` input to reduce - download size. - -- `flake-utils`'s `systems` inputs follows nvf's `systems` input to transitively - leverage the pattern introduced in commit - [fc8206e7a61d ("flake: utilize - nix-systems for overridable flake systems")](https://github.com/NotAShelf/nvf/commit/fc8206e7a61d7eb02006f9010e62ebdb3336d0d2). - -[soliprem](https://github.com/soliprem): - -- fix broken `neorg` grammars -- remove obsolete warning in the `otter` module - -[Cool-Game-Dev](https://github.com/Cool-Game-Dev): - -[nvim-biscuits]: https://github.com/code-biscuits/nvim-biscuits - -- Add [nvim-biscuits] to show block context. Available at - `vim.utility.nvim-biscuits`. - -[JManch](https://github.com/JManch): - -- Fix default [blink.cmp] sources "path" and "buffer" not working when - `autocomplete.nvim-cmp.enable` was disabled and - `autocomplete.nvim-cmp.sources` had not been modified. - -[Jules](https://github.com/jules-sommer): - -[nvim-highlight-colors]: https://github.com/brenoprata10/nvim-highlight-colors - -- Add [nvim-highlight-colors] plugin in `vim.ui.nvim-highlight-colors` with - `enable` and `setupOpts` - -- Fix [blink.cmp] keymap preset types to allow alternate cmdline, terminal, etc - modes to `inherit` the default mode keymaps. This is an option as per the - [blink.cmp] docs and is now supported in nvf. - -[PartyWumpus](https://github.com/PartyWumpus): - -[typst-concealer]: https://github.com/PartyWumpus/typst-concealer - -- Add inline typst concealing support under `vim.languages.typst` using - [typst-concealer]. diff --git a/flake.lock b/flake.lock index 5a357a75..540715e9 100644 --- a/flake.lock +++ b/flake.lock @@ -1,33 +1,15 @@ { "nodes": { - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1751685974, - "narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=", - "ref": "refs/heads/main", - "rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1", - "revCount": 92, - "type": "git", - "url": "https://git.lix.systems/lix-project/flake-compat.git" - }, - "original": { - "type": "git", - "url": "https://git.lix.systems/lix-project/flake-compat.git" - } - }, "flake-parts": { "inputs": { - "nixpkgs-lib": [ - "nixpkgs" - ] + "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1760948891, - "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=", + "lastModified": 1743550720, + "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04", + "rev": "c621e8422220273271f52058f618c94e405bb0f5", "type": "github" }, "original": { @@ -36,13 +18,31 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "mnw": { "locked": { - "lastModified": 1758834834, - "narHash": "sha256-Y7IvY4F8vajZyp3WGf+KaiIVwondEkMFkt92Cr9NZmg=", + "lastModified": 1744592022, + "narHash": "sha256-QuWrCRiF3CUM99sgj3gXbIzB1IAVWS5IEfFHadbMA2g=", "owner": "Gerg-L", "repo": "mnw", - "rev": "cfbc7d1cc832e318d0863a5fc91d940a96034001", + "rev": "cf9e19413b6c2d995b55565cd99facf9c751b653", "type": "github" }, "original": { @@ -51,13 +51,37 @@ "type": "github" } }, + "nil": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1741118843, + "narHash": "sha256-ggXU3RHv6NgWw+vc+HO4/9n0GPufhTIUjVuLci8Za8c=", + "owner": "oxalica", + "repo": "nil", + "rev": "577d160da311cc7f5042038456a0713e9863d09e", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "nil", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1761880412, - "narHash": "sha256-QoJjGd4NstnyOG4mm4KXF+weBzA2AH/7gn1Pmpfcb0A=", + "lastModified": 1744473229, + "narHash": "sha256-rGXvIsD/Hn+bJRFb7hqSx7UUZUIlxXs0fM6ix5+iT5w=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a7fc11be66bdfb5cdde611ee5ce381c183da8386", + "rev": "52d0eded529af34e91df6b2a2bc32eb636637cd2", "type": "github" }, "original": { @@ -67,13 +91,50 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1743296961, + "narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "root": { "inputs": { - "flake-compat": "flake-compat", "flake-parts": "flake-parts", + "flake-utils": "flake-utils", "mnw": "mnw", + "nil": "nil", "nixpkgs": "nixpkgs", - "systems": "systems" + "systems": "systems_2" + } + }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "nil", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741055476, + "narHash": "sha256-52vwEV0oS2lCnx3c/alOFGglujZTLmObit7K8VblnS8=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "aefb7017d710f150970299685e8d8b549d653649", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, "systems": { @@ -90,6 +151,21 @@ "repo": "default", "type": "github" } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 35820e0b..6e716581 100644 --- a/flake.nix +++ b/flake.nix @@ -5,9 +5,8 @@ self, ... } @ inputs: let - # Call the extended library with `inputs`. - # inputs is used to get the original standard library, and to pass inputs - # to the plugin autodiscovery function + # call the extended library with `inputs` + # inputs is used to get the original standard library, and to pass inputs to the plugin autodiscovery function lib = import ./lib/stdlib-extended.nix {inherit inputs self;}; in flake-parts.lib.mkFlake { @@ -19,7 +18,10 @@ systems = import inputs.systems; imports = [ ./flake/templates + ./flake/apps.nix + ./flake/legacyPackages.nix + ./flake/overlays.nix ./flake/packages.nix ./flake/develop.nix ]; @@ -30,8 +32,6 @@ inherit (lib.nvim) neovimConfiguration; }; - inherit (lib.importJSON ./npins/sources.json) pins; - homeManagerModules = { nvf = import ./flake/modules/home-manager.nix {inherit lib inputs;}; default = self.homeManagerModules.nvf; @@ -53,33 +53,21 @@ '' self.nixosModules.nvf; }; + + inherit (lib.importJSON ./npins/sources.json) pins; }; perSystem = {pkgs, ...}: { - # Provides the default formatter for 'nix fmt', which will format the - # entire tree with Alejandra. The wrapper script is necessary due to - # changes to the behaviour of Nix, which now encourages wrappers for - # tree-wide formatting. - formatter = pkgs.writeShellApplication { - name = "nix3-fmt-wrapper"; + # 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; - runtimeInputs = [ - pkgs.alejandra - pkgs.fd - ]; - - text = '' - # Find Nix files in the tree and format them with Alejandra - fd "$@" -t f -e nix -x alejandra -q '{}' - ''; - }; - - # Provides checks to be built an ran on 'nix flake check'. They can also - # be built individually with 'nix build' as described below. + # Check if codebase is properly formatted. + # This can be initiated with `nix build .#checks..nix-fmt` + # or with `nix flake check` checks = { - # Check if codebase is properly formatted. - # This can be initiated with `nix build .#checks..nix-fmt` - # or with `nix flake check` nix-fmt = pkgs.runCommand "nix-fmt-check" {nativeBuildInputs = [pkgs.alejandra];} '' alejandra --check ${self} < /dev/null | tee $out ''; @@ -87,23 +75,22 @@ }; }; + # Flake inputs inputs = { - systems.url = "github:nix-systems/default"; - ## Basic Inputs nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; - - flake-parts = { - url = "github:hercules-ci/flake-parts"; - inputs.nixpkgs-lib.follows = "nixpkgs"; - }; - - flake-compat = { - url = "git+https://git.lix.systems/lix-project/flake-compat.git"; - flake = false; - }; + flake-parts.url = "github:hercules-ci/flake-parts"; + flake-utils.url = "github:numtide/flake-utils"; + systems.url = "github:nix-systems/default"; # Alternate neovim-wrapper mnw.url = "github:Gerg-L/mnw"; + + # Language servers (use master instead of nixpkgs) + nil = { + url = "github:oxalica/nil"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-utils.follows = "flake-utils"; + }; }; } diff --git a/flake/develop.nix b/flake/develop.nix index aae9d92f..71c13688 100644 --- a/flake/develop.nix +++ b/flake/develop.nix @@ -3,7 +3,6 @@ pkgs, config, self', - inputs', ... }: { devShells = { diff --git a/flake/legacyPackages.nix b/flake/legacyPackages.nix new file mode 100644 index 00000000..33aee0e3 --- /dev/null +++ b/flake/legacyPackages.nix @@ -0,0 +1,35 @@ +{ + inputs, + self, + ... +}: { + perSystem = { + system, + inputs', + ... + }: { + legacyPackages = import inputs.nixpkgs { + inherit system; + overlays = [ + inputs.self.overlays.default + + (final: prev: { + # Build nil from source to get most recent + # features as they are added. + nil = inputs'.nil.packages.default; + blink-cmp = let + pin = self.pins.blink-cmp; + in + final.callPackage ./legacyPackages/blink-cmp.nix { + inherit (pin) version; + src = prev.fetchFromGitHub { + inherit (pin.repository) owner repo; + rev = pin.revision; + sha256 = pin.hash; + }; + }; + }) + ]; + }; + }; +} diff --git a/flake/legacyPackages/blink-cmp.nix b/flake/legacyPackages/blink-cmp.nix new file mode 100644 index 00000000..435cb290 --- /dev/null +++ b/flake/legacyPackages/blink-cmp.nix @@ -0,0 +1,37 @@ +{ + stdenv, + rustPlatform, + vimUtils, + gitMinimal, + src, + version, +}: let + blink-fuzzy-lib = rustPlatform.buildRustPackage { + pname = "blink-fuzzy-lib"; + inherit version src; + + # TODO: remove this if plugin stops using nightly rust + env.RUSTC_BOOTSTRAP = true; + + useFetchCargoVendor = true; + cargoHash = "sha256-MWElqh7ENJ6CbLOnvz0DsP5YYu+e+y12GSUOfW1IKGU="; + + nativeBuildInputs = [gitMinimal]; + }; +in + vimUtils.buildVimPlugin { + pname = "blink-cmp"; + inherit version src; + + # blink references a repro.lua which is placed outside the lua/ directory + doCheck = false; + preInstall = let + ext = stdenv.hostPlatform.extensions.sharedLibrary; + in '' + mkdir -p target/release + ln -s ${blink-fuzzy-lib}/lib/libblink_cmp_fuzzy${ext} target/release/libblink_cmp_fuzzy${ext} + ''; + + # Module for reproducing issues + nvimSkipModules = ["repro"]; + } diff --git a/flake/overlays.nix b/flake/overlays.nix new file mode 100644 index 00000000..5d0ff6e8 --- /dev/null +++ b/flake/overlays.nix @@ -0,0 +1,19 @@ +{ + pkgs, + lib, + ... +}: let + inherit (lib.nvim) neovimConfiguration; + + buildPkg = pkgs: modules: (neovimConfiguration {inherit pkgs modules;}).neovim; + + nixConfig = import ../configuration.nix false; + maximalConfig = import ../configuration.nix true; +in { + flake.overlays.default = final: _prev: { + inherit neovimConfiguration; + neovim-nix = buildPkg final [nixConfig]; + neovim-maximal = buildPkg final [maximalConfig]; + devPkg = buildPkg pkgs [nixConfig {config.vim.languages.html.enable = pkgs.lib.mkForce true;}]; + }; +} diff --git a/flake/packages.nix b/flake/packages.nix index 7d39afcb..7abe5ec0 100644 --- a/flake/packages.nix +++ b/flake/packages.nix @@ -1,122 +1,69 @@ -{ - inputs, - self, - ... -} @ args: { +{inputs, ...}: { perSystem = { config, pkgs, lib, ... }: let - inherit (lib.customisation) makeScope; - inherit (lib.attrsets) isDerivation isAttrs concatMapAttrs; - inherit (lib.strings) concatStringsSep; - inherit (lib.filesystem) packagesFromDirectoryRecursive; - - # Entrypoint for nvf documentation and relevant packages. docs = import ../docs {inherit pkgs inputs lib;}; - - # Helper function for creating demo configurations for nvf - # TODO: make this more generic. - buildPkg = maximal: - (args.config.flake.lib.nvim.neovimConfiguration { - inherit pkgs; - modules = [(import ../configuration.nix maximal)]; - }).neovim; - - # This constructs a by-name overlay similar to the one found in Nixpkgs. - # The goal is to automatically discover and packages found in pkgs/by-name - # as long as they have a 'package.nix' in the package directory. We also - # pass 'inputs' and 'pins' to all packages in the 'callPackage' scope, therefore - # they are always available in the relevant 'package.nix' files. - # --- - # The logic is borrowed from drupol/pkgs-by-name-for-flake-parts, available - # under the MIT license. - flattenPkgs = separator: path: value: - if isDerivation value - then { - ${concatStringsSep separator path} = value; - } - else if isAttrs value - then concatMapAttrs (name: flattenPkgs separator (path ++ [name])) value - else - # Ignore the functions which makeScope returns - {}; - - inputsScope = makeScope pkgs.newScope (_: { - inherit inputs; - inherit (self) pins; - }); - - scopeFromDirectory = directory: - packagesFromDirectoryRecursive { - inherit directory; - inherit (inputsScope) newScope callPackage; - }; - - legacyPackages = scopeFromDirectory ./pkgs/by-name; in { - packages = - (flattenPkgs "/" [] legacyPackages) - // { - inherit (docs.manual) htmlOpenTool; + packages = { + inherit (docs.manual) htmlOpenTool; + # Documentation + docs = docs.manual.html; + docs-html = docs.manual.html; + docs-manpages = docs.manPages; + docs-json = docs.options.json; + docs-linkcheck = let + site = config.packages.docs; + in + pkgs.testers.lycheeLinkCheck { + inherit site; - # Documentation - docs = docs.manual.html; - docs-html = docs.manual.html; - docs-manpages = docs.manPages; - docs-json = docs.options.json; - docs-linkcheck = let - site = config.packages.docs; - in - pkgs.testers.lycheeLinkCheck { - inherit site; - - remap = { - "https://notashelf.github.io/nvf/" = site; - }; - - extraConfig = { - exclude = []; - include_mail = true; - include_verbatim = true; - }; + remap = { + "https://notashelf.github.io/nvf/" = site; }; - # Helper utility for building the HTML manual and opening it in the - # browser with $BROWSER or using xdg-open as a fallback tool. - # Adapted from Home-Manager, available under the MIT license. - docs-html-wrapped = let - xdg-open = lib.getExe' pkgs.xdg-utils "xdg-open"; - docs-html = docs.manual.html + /share/doc/nvf; - in - pkgs.writeShellScriptBin "docs-html-wrapped" '' - set -euo pipefail + extraConfig = { + exclude = []; + include_mail = true; + include_verbatim = true; + }; + }; - if [[ ! -v BROWSER || -z $BROWSER ]]; then - for candidate in xdg-open open w3m; do - BROWSER="$(type -P $candidate || true)" - if [[ -x $BROWSER ]]; then - break; - fi - done - fi + # Helper utility for building the HTML manual and opening it in the + # browser with $BROWSER or using xdg-open as a fallback tool. + # Adapted from Home-Manager, available under the MIT license. + docs-html-wrapped = let + xdg-open = lib.getExe' pkgs.xdg-utils "xdg-open"; + docs-html = docs.manual.html + /share/doc/nvf; + in + pkgs.writeShellScriptBin "docs-html-wrapped" '' + set -euo pipefail - if [[ ! -v BROWSER || -z $BROWSER ]]; then - echo "$0: unable to start a web browser; please set \$BROWSER" - echo "$0: Trying xdg-open as a fallback" - ${xdg-open} ${docs-html}/index.xhtml - else - echo "\$BROWSER is set. Attempting to open manual" - exec "$BROWSER" "${docs-html}/index.xhtml" - fi - ''; + if [[ ! -v BROWSER || -z $BROWSER ]]; then + for candidate in xdg-open open w3m; do + BROWSER="$(type -P $candidate || true)" + if [[ -x $BROWSER ]]; then + break; + fi + done + fi - # Exposed neovim configurations - nix = buildPkg false; - maximal = buildPkg true; - default = config.packages.nix; - }; + if [[ ! -v BROWSER || -z $BROWSER ]]; then + echo "$0: unable to start a web browser; please set \$BROWSER" + echo "$0: Trying xdg-open as a fallback" + ${xdg-open} ${docs-html}/index.xhtml + else + echo "\$BROWSER is set. Attempting to open manual" + exec "$BROWSER" "${docs-html}/index.xhtml" + fi + ''; + + # Exposed neovim configurations + nix = config.legacyPackages.neovim-nix; + maximal = config.legacyPackages.neovim-maximal; + default = config.legacyPackages.neovim-nix; + }; }; } diff --git a/flake/pkgs/by-name/avante-nvim/package.nix b/flake/pkgs/by-name/avante-nvim/package.nix deleted file mode 100644 index c7b5ac76..00000000 --- a/flake/pkgs/by-name/avante-nvim/package.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ - pins, - openssl, - pkg-config, - rustPlatform, - stdenv, - vimUtils, - makeWrapper, - pkgs, - ... -}: let - # From npins - pin = pins.avante-nvim; - version = pin.branch; - src = pkgs.fetchFromGitHub { - inherit (pin.repository) owner repo; - rev = pin.revision; - sha256 = pin.hash; - }; - - avante-nvim-lib = rustPlatform.buildRustPackage { - pname = "avante-nvim-lib"; - inherit version src; - - cargoHash = "sha256-pTWCT2s820mjnfTscFnoSKC37RE7DAPKxP71QuM+JXQ="; - - nativeBuildInputs = [ - pkg-config - makeWrapper - pkgs.perl - ]; - - buildInputs = [ - openssl - ]; - - buildFeatures = ["luajit"]; - - checkFlags = [ - # Disabled because they access the network. - "--skip=test_hf" - "--skip=test_public_url" - "--skip=test_roundtrip" - "--skip=test_fetch_md" - ]; - }; -in - vimUtils.buildVimPlugin { - pname = "avante-nvim"; - inherit version src; - - doCheck = false; - - postInstall = let - ext = stdenv.hostPlatform.extensions.sharedLibrary; - in '' - mkdir -p $out/build - for lib in "avante_repo_map" "avante_templates" "avante_tokenizers" "avante_html2md"; do - ln -s ${avante-nvim-lib}/lib/lib$lib${ext} $out/build/$lib${ext} - done - ''; - - nvimSkipModules = [ - # Requires setup with corresponding provider - "avante.providers.azure" - "avante.providers.copilot" - "avante.providers.vertex_claude" - "avante.providers.ollama" - ]; - } diff --git a/flake/pkgs/by-name/blink-cmp/package.nix b/flake/pkgs/by-name/blink-cmp/package.nix deleted file mode 100644 index 5dba17a6..00000000 --- a/flake/pkgs/by-name/blink-cmp/package.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - rustPlatform, - fetchFromGitHub, - writeShellScriptBin, -}: -rustPlatform.buildRustPackage (finalAttrs: { - pname = "blink-cmp"; - version = "1.6.0"; - - src = fetchFromGitHub { - owner = "Saghen"; - repo = "blink.cmp"; - tag = "v${finalAttrs.version}"; - hash = "sha256-IHRYgKcYP+JDGu8Vtawgzlhq25vpROFqb8KmpfVMwCk="; - }; - - forceShare = [ - "man" - "info" - ]; - - postInstall = '' - cp -r {lua,plugin} "$out" - - mkdir -p "$out/doc" - cp 'doc/'*'.txt' "$out/doc/" - - mkdir -p "$out/target" - mv "$out/lib" "$out/target/release" - ''; - - cargoHash = "sha256-QsVCugYWRri4qu64wHnbJQZBhy4tQrr+gCYbXtRBlqE="; - - nativeBuildInputs = [ - (writeShellScriptBin "git" "exit 1") - ]; - - env.RUSTC_BOOTSTRAP = true; -}) diff --git a/flake/templates/standalone/flake.nix b/flake/templates/standalone/flake.nix index 1057a6d5..79617260 100644 --- a/flake/templates/standalone/flake.nix +++ b/flake/templates/standalone/flake.nix @@ -26,22 +26,12 @@ config.vim = { theme.enable = true; - lsp = { - # Enable LSP functionality globally. This is required for modules found - # in `vim.languages` to enable relevant LSPs. - enable = true; - - # You may define your own LSP configurations using `vim.lsp.servers` in - # nvf without ever needing lspconfig to do it. This will use the native - # API provided by Neovim > 0.11 - servers = {}; - }; - # Language support and automatic configuration of companion plugins. # Note that enabling, e.g., languages..diagnostics will automatically # enable top-level options such as enableLSP or enableExtraDiagnostics as # they are needed. languages = { + enableLSP = true; enableFormat = true; enableTreesitter = true; enableExtraDiagnostics = true; diff --git a/lib/default.nix b/lib/default.nix index c4388e82..952278a8 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -4,7 +4,7 @@ lib, ... }: { - types = import ./types {inherit lib self;}; + types = import ./types {inherit lib;}; config = import ./config.nix {inherit lib;}; binds = import ./binds.nix {inherit lib;}; dag = import ./dag.nix {inherit lib;}; diff --git a/lib/languages.nix b/lib/languages.nix index c4074144..a202ff14 100644 --- a/lib/languages.nix +++ b/lib/languages.nix @@ -1,11 +1,10 @@ +# From home-manager: https://github.com/nix-community/home-manager/blob/master/modules/lib/booleans.nix {lib}: let inherit (builtins) isString getAttr; inherit (lib.options) mkOption; - inherit (lib.types) listOf bool str submodule attrsOf anything either nullOr; + inherit (lib.types) bool; inherit (lib.nvim.attrsets) mapListToAttrs; - inherit (lib.nvim.types) luaInline; in { - # TODO: remove diagnosticsToLua = { lang, config, @@ -33,48 +32,4 @@ in { type = bool; description = "Turn on ${desc} for enabled languages by default"; }; - - lspOptions = submodule { - freeformType = attrsOf anything; - options = { - enable = mkOption { - type = bool; - default = true; - description = "Whether to enable this LSP server."; - }; - - capabilities = mkOption { - type = nullOr (either luaInline (attrsOf anything)); - default = null; - description = "LSP capabilitiess to pass to lspconfig"; - }; - - on_attach = mkOption { - type = nullOr luaInline; - default = null; - description = "Function to execute when an LSP server attaches to a buffer"; - }; - - filetypes = mkOption { - type = nullOr (listOf str); - default = null; - description = "Filetypes to auto-attach LSP in"; - }; - - cmd = mkOption { - type = nullOr (listOf str); - default = null; - description = "Command used to start the LSP server"; - }; - - root_markers = mkOption { - type = nullOr (listOf str); - default = null; - description = '' - "root markers" used to determine the root directory of the workspace, and - the filetypes associated with this LSP server. - ''; - }; - }; - }; } diff --git a/lib/lua.nix b/lib/lua.nix index 4106a4c2..e3f94498 100644 --- a/lib/lua.nix +++ b/lib/lua.nix @@ -2,7 +2,7 @@ {lib}: let inherit (builtins) hasAttr head throw typeOf isList isAttrs isBool isInt isString isPath isFloat toJSON; inherit (lib.attrsets) mapAttrsToList filterAttrs; - inherit (lib.strings) concatStringsSep concatMapStringsSep stringToCharacters; + inherit (lib.strings) concatStringsSep concatMapStringsSep stringToCharacters concatLines; inherit (lib.trivial) boolToString warn; in rec { # Convert a null value to lua's nil diff --git a/lib/stdlib-extended.nix b/lib/stdlib-extended.nix index 403c7b28..a85160c3 100644 --- a/lib/stdlib-extended.nix +++ b/lib/stdlib-extended.nix @@ -1,6 +1,10 @@ # Convenience function that returns the given Nixpkgs standard library # extended with our functions using `lib.extend`. -{inputs, ...} @ args: +{ + inputs, + self, + ... +} @ args: inputs.nixpkgs.lib.extend (self: super: { # WARNING: New functions should not be added here, but to files # imported by `./default.nix` under their own categories. If your diff --git a/lib/types/custom.nix b/lib/types/custom.nix index 8e8be8a2..c42cd2ce 100644 --- a/lib/types/custom.nix +++ b/lib/types/custom.nix @@ -3,11 +3,13 @@ inherit (lib.strings) isString stringLength match; inherit (lib.types) listOf mkOptionType; in { - mergelessListOf = elemType: - mkOptionType { + mergelessListOf = elemType: let + super = listOf elemType; + in + super + // { name = "mergelessListOf"; - description = "mergeless list of ${elemType.description or "values"}"; - inherit (lib.types.listOf elemType) check; + description = "mergeless ${super.description}"; merge = mergeEqualOption; }; diff --git a/lib/types/dag.nix b/lib/types/dag.nix index 6d289e27..a42ed513 100644 --- a/lib/types/dag.nix +++ b/lib/types/dag.nix @@ -62,13 +62,7 @@ in rec { inherit (elemType) getSubModules; getSubOptions = prefix: elemType.getSubOptions (prefix ++ [""]); substSubModules = m: dagOf (elemType.substSubModules m); - functor = { - name = name; - type = dagOf; - wrapped = elemType; - payload = elemType; - binOp = a: b: a; - }; + functor = (defaultFunctor name) // {wrapped = elemType;}; nestedTypes.elemType = elemType; }; } diff --git a/lib/types/default.nix b/lib/types/default.nix index 044a8221..c6239227 100644 --- a/lib/types/default.nix +++ b/lib/types/default.nix @@ -1,9 +1,6 @@ -{ - lib, - self, -}: let +{lib}: let typesDag = import ./dag.nix {inherit lib;}; - typesPlugin = import ./plugins.nix {inherit lib self;}; + typesPlugin = import ./plugins.nix {inherit lib;}; typesLanguage = import ./languages.nix {inherit lib;}; customTypes = import ./custom.nix {inherit lib;}; in { diff --git a/lib/types/plugins.nix b/lib/types/plugins.nix index 4be39289..fc2bd083 100644 --- a/lib/types/plugins.nix +++ b/lib/types/plugins.nix @@ -1,7 +1,4 @@ -{ - lib, - self, -}: let +{lib}: let inherit (lib.options) mkOption; inherit (lib.attrsets) attrNames mapAttrs' filterAttrs nameValuePair; inherit (lib.strings) hasPrefix removePrefix; @@ -15,7 +12,7 @@ mapAttrs' (n: v: nameValuePair (removePrefix prefix n) {src = v;}) (filterAttrs (n: _: hasPrefix prefix n) inputs); # Get the names of all npins - pluginInputNames = ["blink-cmp"] ++ attrNames self.pins; + pluginInputNames = attrNames (lib.importJSON ../../npins/sources.json).pins; # You can either use the name of the plugin or a package. pluginType = nullOr ( diff --git a/modules/extra/deprecations.nix b/modules/extra/deprecations.nix index 0a5733ab..86497130 100644 --- a/modules/extra/deprecations.nix +++ b/modules/extra/deprecations.nix @@ -18,7 +18,7 @@ showSignColumn = "signcolumn"; # 2025-02-07 - scrollOffset = "scrolloff"; + scrollOff = "scrolloff"; }; in { imports = concatLists [ @@ -111,15 +111,6 @@ in { under the diagnostics module. Please consider using one of 'vim.diagnostics.config' or 'vim.luaConfigRC' to configure LSP lines for Neovim through its own diagnostics API. '') - - # 2025-05-04 - (mkRemovedOptionModule ["vim" "useSystemClipboard"] '' - Clipboard behaviour should now be controlled through the new, more fine-grained module - interface found in 'vim.clipboard'. To replicate previous behaviour, you may either - add 'vim.opt.clipboard:append("unnamedplus")' in luaConfigRC, or preferably set it - in 'vim.clipboard.registers'. Please see the documentation for the new module for more - details, or open an issue if you are confused. - '') ] # Migrated via batchRenameOptions. Further batch renames must be below this line. diff --git a/modules/modules.nix b/modules/modules.nix index 1eca042a..c7e198dd 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -33,12 +33,11 @@ "minimap" "notes" "projects" - "repl" "rich-presence" "runner" "session" "snippets" - "spellcheck" + # "spellcheck" # FIXME: see neovim/init/spellcheck.nix "statusline" "tabline" "terminal" diff --git a/modules/neovim/init/autocmds.nix b/modules/neovim/init/autocmds.nix index 07656134..5da7bc55 100644 --- a/modules/neovim/init/autocmds.nix +++ b/modules/neovim/init/autocmds.nix @@ -17,7 +17,7 @@ mkEnableOption "" // { default = true; - description = "Whether to enable this autocommand."; + description = "Whether to enable this autocommand"; }; event = mkOption { @@ -31,29 +31,26 @@ type = nullOr (listOf str); default = null; example = ["*.lua" "*.vim"]; - description = "The file pattern(s) that determine when the autocommand applies."; + description = "The file pattern(s) that determine when the autocommand applies)."; }; callback = mkOption { type = nullOr luaInline; default = null; example = literalExpression '' - lib.generators.mkLuaInline ''' + mkLuaInline ''' function() print("Saving a Lua file...") end '''' ''; - description = "Lua function to be called when the event(s) are triggered."; + description = "The file pattern(s) that determine when the autocommand applies."; }; command = mkOption { type = nullOr str; default = null; - description = '' - Vim command to be executed when the event(s) are triggered. - Cannot be defined if the `callback` option is already defined. - ''; + description = "Vim command string instead of a Lua function."; }; group = mkOption { @@ -73,7 +70,7 @@ once = mkOption { type = bool; default = false; - description = "Whether to run the autocommand only once."; + description = "Whether autocommand run only once."; }; nested = mkOption { @@ -90,7 +87,7 @@ mkEnableOption "" // { default = true; - description = "Whether to enable this autocommand group."; + description = "Whether to enable this autogroup"; }; name = mkOption { @@ -121,8 +118,8 @@ in { autocommands together. Groups allow multiple autocommands to be cleared or redefined collectively, preventing duplicate definitions. - Each autogroup consists of a name and a boolean indicating whether to clear - existing autocommands. + Each autogroup consists of a name, a boolean indicating whether to clear + existing autocommands, and a list of associated autocommands. ''; }; @@ -132,8 +129,8 @@ in { description = '' A list of Neovim autocommands to be registered. - Each entry defines an autocommand, specifying events, patterns, a callback or Vim - command, an optional group, a description, and execution settings. + Each entry defines an autocommand, specifying events, patterns, optional + callbacks, commands, groups, and execution settings. ''; }; }; diff --git a/modules/neovim/init/basic.nix b/modules/neovim/init/basic.nix index 2f3934ae..47bfe500 100644 --- a/modules/neovim/init/basic.nix +++ b/modules/neovim/init/basic.nix @@ -6,10 +6,11 @@ inherit (lib.options) mkOption mkEnableOption literalMD; inherit (lib.strings) optionalString; inherit (lib.attrsets) optionalAttrs; - inherit (lib.types) enum bool str either; + inherit (lib.types) enum bool str int either; inherit (lib.generators) mkLuaInline; inherit (lib.nvim.dag) entryAfter; inherit (lib.nvim.binds) pushDownDefault; + inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.types) luaInline; cfg = config.vim; @@ -21,12 +22,24 @@ in { description = "Hide search highlight so it doesn't stay highlighted"; }; + scrollOffset = mkOption { + type = int; + default = 8; + description = "Start scrolling this number of lines from the top or bottom of the page."; + }; + syntaxHighlighting = mkOption { type = bool; default = !config.vim.treesitter.highlight.enable; description = "Enable syntax highlighting"; }; + useSystemClipboard = mkOption { + type = bool; + default = false; + description = "Make use of the clipboard for default yank and paste operations. Don't use * and +"; + }; + lineNumberMode = mkOption { type = enum ["relative" "number" "relNumber" "none"]; default = "relNumber"; @@ -131,6 +144,10 @@ in { # to pre-set Neovim options. Fear not, though as the Lua DAG is still as powerful as it # could be. luaConfigRC.basic = entryAfter ["globalsScript"] '' + ${optionalString cfg.useSystemClipboard '' + vim.opt.clipboard:append("unnamedplus") + ''} + ${optionalString cfg.syntaxHighlighting '' vim.cmd("syntax on") ''} diff --git a/modules/neovim/init/clipboard.nix b/modules/neovim/init/clipboard.nix deleted file mode 100644 index 132079b4..00000000 --- a/modules/neovim/init/clipboard.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.options) mkOption mkEnableOption mkPackageOption; - inherit (lib.types) str submodule; - inherit (lib.attrsets) mapAttrs mapAttrsToList filterAttrs; - cfg = config.vim.clipboard; -in { - options = { - vim = { - clipboard = { - enable = mkEnableOption '' - clipboard management for Neovim. Users may still choose to manage their - clipboard through [](#opt-vim.options) should they wish to avoid using - this module. - ''; - - registers = mkOption { - type = str; - default = ""; - example = "unnamedplus"; - description = '' - The register to be used by the Neovim clipboard. Recognized types are: - - * unnamed: Vim will use the clipboard register `"*"` for all yank, delete, - change and put operations which would normally go to the unnamed register. - - * unnamedplus: A variant of the "unnamed" flag which uses the clipboard register - `"+"` ({command}`:h quoteplus`) instead of register `"*"` for all yank, delete, - change and put operations which would normally go to the unnamed register. - - When `unnamed` and `unnamedplus` is included simultaneously as `"unnamed,unnamedplus"`, - yank and delete operations (but not put) will additionally copy the text into register `"*"`. - - Please see {command}`:h clipboard` for more details. - - ''; - }; - - providers = mkOption { - type = submodule { - options = let - clipboards = { - # name = "package name"; - wl-copy = "wl-clipboard"; - xclip = "xclip"; - xsel = "xsel"; - }; - in - mapAttrs (name: pname: { - enable = mkEnableOption name; - package = mkPackageOption pkgs pname {nullable = true;}; - }) - clipboards; - }; - default = {}; - description = '' - Clipboard providers for which packages will be added to nvf's - {option}`extraPackages`. The `package` field may be set to `null` - if related packages are already found in system packages to - potentially reduce closure sizes. - ''; - }; - }; - }; - }; - - config = mkIf cfg.enable { - vim = { - options.clipboard = cfg.registers; - extraPackages = mapAttrsToList (_: v: v.package) ( - filterAttrs (_: v: v.enable && v.package != null) cfg.providers - ); - }; - }; -} diff --git a/modules/neovim/init/default.nix b/modules/neovim/init/default.nix index 30a481a1..0e7a4c6b 100644 --- a/modules/neovim/init/default.nix +++ b/modules/neovim/init/default.nix @@ -2,11 +2,9 @@ imports = [ ./autocmds.nix ./basic.nix - ./clipboard.nix ./debug.nix ./diagnostics.nix ./highlight.nix - ./lsp.nix ./spellcheck.nix ]; } diff --git a/modules/neovim/init/diagnostics.nix b/modules/neovim/init/diagnostics.nix index 27f46efc..18717edf 100644 --- a/modules/neovim/init/diagnostics.nix +++ b/modules/neovim/init/diagnostics.nix @@ -57,21 +57,14 @@ signs = mkOption { type = diagnosticType; default = false; - example = literalExpression '' - signs.text = lib.generators.mkLuaInline ''' - { - [vim.diagnostic.severity.ERROR] = "σ°…š ", - [vim.diagnostic.severity.WARN] = "σ°€ͺ ", - } - '''; - ''; + example = { + signs.text = { + "vim.diagnostic.severity.ERROR" = "σ°…š "; + "vim.diagnostic.severity.WARN" = "σ°€ͺ "; + }; + }; description = '' Use signs for diagnostics. See {command}`:help diagnostic-signs`. - - :::{.note} - The code presented in that example section uses Lua expressions as object keys which - only translate well if you use `lib.generators.mkLuaInline` as in the example. - ::: ''; }; @@ -88,7 +81,7 @@ in { options.vim = { diagnostics = { - enable = mkEnableOption "diagnostics module for Neovim"; + enable = mkEnableOption "diagostics module for Neovim"; config = mkOption { type = diagnosticsSubmodule; default = {}; diff --git a/modules/neovim/init/highlight.nix b/modules/neovim/init/highlight.nix index 9c6b7214..7e992fd1 100644 --- a/modules/neovim/init/highlight.nix +++ b/modules/neovim/init/highlight.nix @@ -5,14 +5,15 @@ }: let inherit (lib.options) mkOption; inherit (lib.types) nullOr attrsOf listOf submodule bool ints str enum; - inherit (lib.strings) concatLines; + inherit (lib.strings) hasPrefix concatLines; inherit (lib.attrsets) mapAttrsToList; inherit (lib.nvim.dag) entryBetween; inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.types) hexColor; mkColorOption = target: mkOption { - type = nullOr str; + type = nullOr hexColor; default = null; example = "#ebdbb2"; description = '' diff --git a/modules/neovim/init/lsp.nix b/modules/neovim/init/lsp.nix deleted file mode 100644 index b89c3fde..00000000 --- a/modules/neovim/init/lsp.nix +++ /dev/null @@ -1,93 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (builtins) filter; - inherit (lib.modules) mkIf mkMerge mkDefault; - inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) attrsOf; - inherit (lib.strings) concatLines; - inherit (lib.attrsets) mapAttrsToList attrNames filterAttrs; - inherit (lib.generators) mkLuaInline; - inherit (lib.nvim.languages) lspOptions; - inherit (lib.nvim.dag) entryAnywhere; - inherit (lib.nvim.lua) toLuaObject; - - cfg = config.vim.lsp; - - lspConfigurations = - mapAttrsToList ( - name: value: '' - vim.lsp.config["${name}"] = ${toLuaObject value} - '' - ) - cfg.servers; - - enabledServers = filterAttrs (_: u: u.enable) cfg.servers; -in { - options = { - vim.lsp = { - enable = mkEnableOption '' - global LSP functionality for Neovim. - - This option controls whether to enable LSP functionality within modules under - {option}`vim.languages`. You do not need to set this to `true` for language - servers defined in {option}`vim.lsp.servers` to take effect, since they are - enabled automatically. - ''; - - servers = mkOption { - type = attrsOf lspOptions; - default = {}; - example = '' - { - "*" = { - root_markers = [".git"]; - capabilities = { - textDocument = { - semanticTokens = { - multilineTokenSupport = true; - }; - }; - }; - }; - - "clangd" = { - filetypes = ["c"]; - }; - } - ''; - description = '' - LSP configurations that will be managed using `vim.lsp.config()` and related - utilities added in Neovim 0.11. LSPs defined here will be added to the - resulting {file}`init.lua` using `vim.lsp.config` and enabled through - `vim.lsp.enable()` API from Neovim below the configuration table. - - You may review the generated configuration by running {command}`nvf-print-config` - in a shell. Please see {command}`:help lsp-config` for more details - on the underlying API. - ''; - }; - }; - }; - - config = mkMerge [ - { - vim.lsp.servers."*" = { - capabilities = mkDefault (mkLuaInline "capabilities"); - on_attach = mkDefault (mkLuaInline "default_on_attach"); - }; - } - - (mkIf (cfg.servers != {}) { - vim.luaConfigRC.lsp-servers = entryAnywhere '' - -- Individual LSP configurations managed by nvf. - ${concatLines lspConfigurations} - - -- Enable configured LSPs explicitly - vim.lsp.enable(${toLuaObject (filter (name: name != "*") (attrNames enabledServers))}) - ''; - }) - ]; -} diff --git a/modules/neovim/init/spellcheck.nix b/modules/neovim/init/spellcheck.nix index 5c593a65..fb0f86ea 100644 --- a/modules/neovim/init/spellcheck.nix +++ b/modules/neovim/init/spellcheck.nix @@ -94,8 +94,6 @@ in { Enabling this option will unconditionally set {option}`vim.spellcheck.enable` to true as vim-dirtytalk depends on spellchecking having been set up. - - Run {command}`:DirtytalkUpdate` on first use to download the spellfile. ::: ''; }; diff --git a/modules/neovim/mappings/config.nix b/modules/neovim/mappings/config.nix index a62a6ca2..230df030 100644 --- a/modules/neovim/mappings/config.nix +++ b/modules/neovim/mappings/config.nix @@ -3,7 +3,7 @@ lib, ... }: let - inherit (lib.modules) mkMerge; + inherit (lib.modules) mkIf mkMerge; inherit (lib.trivial) pipe; inherit (lib.attrsets) mapAttrsToList; inherit (lib.lists) flatten; diff --git a/modules/plugins/assistant/avante/avante-nvim.nix b/modules/plugins/assistant/avante/avante-nvim.nix deleted file mode 100644 index 8dfa31fc..00000000 --- a/modules/plugins/assistant/avante/avante-nvim.nix +++ /dev/null @@ -1,341 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkOption mkEnableOption literalMD; - inherit (lib.types) int str enum nullOr attrs bool; - inherit (lib.nvim.types) mkPluginSetupOption; -in { - options.vim.assistant = { - avante-nvim = { - enable = mkEnableOption "complementary Neovim plugin for avante.nvim"; - setupOpts = mkPluginSetupOption "avante-nvim" { - provider = mkOption { - type = nullOr str; - default = null; - description = "The provider used in Aider mode or in the planning phase of Cursor Planning Mode."; - }; - - providers = mkOption { - type = nullOr attrs; - default = null; - description = "Define settings for builtin and custom providers."; - example = literalMD '' - ```nix - openai = { - endpoint = "https://api.openai.com/v1"; - model = "gpt-4o"; # your desired model (or use gpt-4o, etc.) - timeout = 30000; # Timeout in milliseconds, increase this for reasoning models - extra_request_body = { - temperature = 0; - max_completion_tokens = 8192; # Increase this to include reasoning tokens (for reasoning models) - reasoning_effort = "medium"; # low|medium|high, only used for reasoning models - }; - }; - ollama = { - endpoint = "http://127.0.0.1:11434"; - timeout = 30000; # Timeout in milliseconds - extra_request_body = { - options = { - temperature = 0.75; - num_ctx = 20480; - keep_alive = "5m"; - }; - }; - }; - groq = { - __inherited_from = "openai"; - api_key_name = "GROQ_API_KEY"; - endpoint = "https://api.groq.com/openai/v1/"; - model = "llama-3.3-70b-versatile"; - disable_tools = true; - extra_request_body = { - temperature = 1; - max_tokens = 32768; # remember to increase this value, otherwise it will stop generating halfway - }; - }; - ``` - ''; - }; - - auto_suggestions_provider = mkOption { - type = str; - default = "claude"; - description = '' - Since auto-suggestions are a high-frequency operation and therefore expensive, - currently designating it as `copilot` provider is dangerous because: - https://github.com/yetone/avante.nvim/issues/1048 - Of course, you can reduce the request frequency by increasing `suggestion.debounce`. - ''; - }; - - cursor_applying_provider = mkOption { - type = nullOr str; - default = null; - description = '' - The provider used in the applying phase of Cursor Planning Mode, defaults to `nil`, - Config.provider will be used as the provider for the applying phase when `nil`. - ''; - }; - - dual_boost = { - enabled = mkEnableOption "dual_boost mode."; - - first_provider = mkOption { - type = str; - default = "openai"; - description = "The first provider to generate response."; - }; - - second_provider = mkOption { - type = str; - default = "claude"; - description = "The second provider to generate response."; - }; - - prompt = mkOption { - type = str; - default = '' - Based on the two reference outputs below, generate a response that incorporates - elements from both but reflects your own judgment and unique perspective. - Do not provide any explanation, just give the response directly. Reference Output 1: - [{{provider1_output}}], Reference Output 2: [{{provider2_output}}''; - description = "The prompt to generate response based on the two reference outputs."; - }; - - timeout = mkOption { - type = int; - default = 60000; - description = "Timeout in milliseconds."; - }; - }; - - behaviour = { - auto_suggestions = - mkEnableOption "auto suggestions."; - - auto_set_highlight_group = - mkEnableOption "automatically set the highlight group for the current line." - // { - default = true; - }; - - auto_set_keymaps = - mkEnableOption "automatically set the keymap for the current line." - // { - default = true; - }; - - auto_apply_diff_after_generation = - mkEnableOption "automatically apply diff after LLM response."; - - support_paste_from_clipboard = mkEnableOption '' - pasting image from clipboard. - This will be determined automatically based whether img-clip is available or not. - ''; - - minimize_diff = - mkEnableOption "remove unchanged lines when applying a code block." - // { - default = true; - }; - - enable_token_counting = - mkEnableOption "token counting." - // { - default = true; - }; - - enable_cursor_planning_mode = - mkEnableOption "Cursor Planning Mode."; - - enable_claude_text_editor_tool_mode = - mkEnableOption "Claude Text Editor Tool Mode."; - }; - - mappings = { - diff = mkOption { - type = nullOr attrs; - default = null; - description = "Define or override the default keymaps for diff."; - }; - - suggestion = mkOption { - type = nullOr attrs; - default = null; - description = "Define or override the default keymaps for suggestion actions."; - }; - - jump = mkOption { - type = nullOr attrs; - default = null; - description = "Define or override the default keymaps for jump actions."; - }; - - submit = mkOption { - type = nullOr attrs; - default = null; - description = "Define or override the default keymaps for submit actions."; - }; - - cancel = mkOption { - type = nullOr attrs; - default = null; - description = "Define or override the default keymaps for cancel actions."; - }; - - sidebar = mkOption { - type = nullOr attrs; - default = null; - description = "Define or override the default keymaps for sidebar actions."; - }; - }; - - hints.enabled = - mkEnableOption "" - // { - default = true; - description = '' - Whether to enable hints. - ''; - }; - - windows = { - position = mkOption { - type = enum ["right" "left" "top" "bottom"]; - default = "right"; - description = "The position of the sidebar."; - }; - - wrap = - mkEnableOption "" - // { - default = true; - description = '' - similar to vim.o.wrap. - ''; - }; - - width = mkOption { - type = int; - default = 30; - description = "Default % based on available width."; - }; - - sidebar_header = { - enabled = mkOption { - type = bool; - default = true; - description = "enable/disable the header."; - }; - - align = mkOption { - type = enum ["right" "center" "left"]; - default = "center"; - description = "Position of the title."; - }; - - rounded = mkOption { - type = bool; - default = true; - description = "Enable rounded sidebar header"; - }; - }; - - input = { - prefix = mkOption { - type = str; - default = "> "; - description = "The prefix used on the user input."; - }; - - height = mkOption { - type = int; - default = 8; - description = '' - Height of the input window in vertical layout. - ''; - }; - }; - - edit = { - border = mkOption { - type = str; - default = "rounded"; - description = "The border type on the edit window."; - }; - - start_insert = mkOption { - type = bool; - default = true; - description = '' - Start insert mode when opening the edit window. - ''; - }; - }; - - ask = { - floating = mkOption { - type = bool; - default = false; - description = '' - Open the 'AvanteAsk' prompt in a floating window. - ''; - }; - - start_insert = mkOption { - type = bool; - default = true; - description = '' - Start insert mode when opening the ask window. - ''; - }; - - border = mkOption { - type = str; - default = "rounded"; - description = "The border type on the ask window."; - }; - - focus_on_apply = mkOption { - type = enum ["ours" "theirs"]; - default = "ours"; - description = "Which diff to focus after applying."; - }; - }; - }; - - diff = { - autojump = - mkEnableOption "" - // { - default = true; - description = "Automatically jumps to the next change."; - }; - - override_timeoutlen = mkOption { - type = int; - default = 500; - example = -1; - description = '' - Override the 'timeoutlen' setting while hovering over a diff (see {command}`:help timeoutlen`). - Helps to avoid entering operator-pending mode with diff mappings starting with `c`. - Disable by setting to -1. - ''; - }; - }; - - suggestion = { - debounce = mkOption { - type = int; - default = 600; - description = "Suggestion debounce in milliseconds."; - }; - - throttle = mkOption { - type = int; - default = 600; - description = "Suggestion throttle in milliseconds."; - }; - }; - }; - }; - }; -} diff --git a/modules/plugins/assistant/avante/config.nix b/modules/plugins/assistant/avante/config.nix deleted file mode 100644 index e140de89..00000000 --- a/modules/plugins/assistant/avante/config.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.lists) optionals; - - cfg = config.vim.assistant.avante-nvim; -in { - config = mkIf cfg.enable { - vim = { - startPlugins = - [ - "nvim-treesitter" - "plenary-nvim" - "dressing-nvim" - "nui-nvim" - ] - ++ (optionals config.vim.mini.pick.enable ["mini-pick"]) - ++ (optionals config.vim.telescope.enable ["telescope"]) - ++ (optionals config.vim.autocomplete.nvim-cmp.enable ["nvim-cmp"]) - ++ (optionals config.vim.fzf-lua.enable ["fzf-lua"]) - ++ (optionals config.vim.visuals.nvim-web-devicons.enable ["nvim-web-devicons"]) - ++ (optionals config.vim.utility.images.img-clip.enable ["img-clip"]); - - lazy.plugins = { - avante-nvim = { - package = "avante-nvim"; - setupModule = "avante"; - inherit (cfg) setupOpts; - event = ["DeferredUIEnter"]; - }; - }; - - treesitter.enable = true; - - languages.markdown.extensions.render-markdown-nvim.setupOpts.file_types = lib.mkAfter ["Avante"]; - }; - }; -} diff --git a/modules/plugins/assistant/avante/default.nix b/modules/plugins/assistant/avante/default.nix deleted file mode 100644 index c8ab1a1c..00000000 --- a/modules/plugins/assistant/avante/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./config.nix - ./avante-nvim.nix - ]; -} diff --git a/modules/plugins/assistant/chatgpt/config.nix b/modules/plugins/assistant/chatgpt/config.nix index b1066e5a..95a36acf 100644 --- a/modules/plugins/assistant/chatgpt/config.nix +++ b/modules/plugins/assistant/chatgpt/config.nix @@ -30,16 +30,7 @@ in { config = mkIf cfg.enable { vim = { - startPlugins = [ - "chatgpt-nvim" - - # Dependencies - "nui-nvim" - "plenary-nvim" - ]; - - # ChatGPT.nvim explicitly depends on Telescope. - telescope.enable = true; + startPlugins = ["chatgpt-nvim"]; pluginRC.chagpt = entryAnywhere '' require("chatgpt").setup(${toLuaObject cfg.setupOpts}) diff --git a/modules/plugins/assistant/codecompanion/config.nix b/modules/plugins/assistant/codecompanion/config.nix index fa863b74..08fc8cb2 100644 --- a/modules/plugins/assistant/codecompanion/config.nix +++ b/modules/plugins/assistant/codecompanion/config.nix @@ -21,17 +21,7 @@ in { }; }; - treesitter = { - enable = true; - - # Codecompanion depends on the YAML grammar being added. Below is - # an easy way of adding an user-configurable grammar package exposed - # by the YAML language module *without* enabling the whole YAML language - # module. The package is defined even when the module is disabled. - grammars = [ - config.vim.languages.yaml.treesitter.package - ]; - }; + treesitter.enable = true; autocomplete.nvim-cmp = { sources = {codecompanion-nvim = "[codecompanion]";}; diff --git a/modules/plugins/assistant/copilot/config.nix b/modules/plugins/assistant/copilot/config.nix index 39b0d0ff..525fe3bd 100644 --- a/modules/plugins/assistant/copilot/config.nix +++ b/modules/plugins/assistant/copilot/config.nix @@ -5,6 +5,7 @@ }: let inherit (builtins) toJSON; inherit (lib.modules) mkIf; + inherit (lib.strings) optionalString; cfg = config.vim.assistant.copilot; diff --git a/modules/plugins/assistant/copilot/copilot.nix b/modules/plugins/assistant/copilot/copilot.nix index 24c4286b..b19a7d6b 100644 --- a/modules/plugins/assistant/copilot/copilot.nix +++ b/modules/plugins/assistant/copilot/copilot.nix @@ -93,7 +93,7 @@ in { accept = mkOption { type = nullOr str; default = ""; - description = "Accept suggestion"; + description = "Accept suggetion"; }; acceptWord = mkOption { diff --git a/modules/plugins/assistant/default.nix b/modules/plugins/assistant/default.nix index a4da583a..697d54f6 100644 --- a/modules/plugins/assistant/default.nix +++ b/modules/plugins/assistant/default.nix @@ -3,7 +3,5 @@ ./chatgpt ./copilot ./codecompanion - ./supermaven-nvim - ./avante ]; } diff --git a/modules/plugins/assistant/supermaven-nvim/config.nix b/modules/plugins/assistant/supermaven-nvim/config.nix deleted file mode 100644 index 55d401a5..00000000 --- a/modules/plugins/assistant/supermaven-nvim/config.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - lib, - ... -}: let - cfg = config.vim.assistant.supermaven-nvim; -in { - config = lib.mkIf cfg.enable { - vim.lazy.plugins = { - supermaven-nvim = { - package = "supermaven-nvim"; - setupModule = "supermaven-nvim"; - inherit (cfg) setupOpts; - }; - }; - }; -} diff --git a/modules/plugins/assistant/supermaven-nvim/default.nix b/modules/plugins/assistant/supermaven-nvim/default.nix deleted file mode 100644 index 0da957cb..00000000 --- a/modules/plugins/assistant/supermaven-nvim/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./supermaven-nvim.nix - ./config.nix - ]; -} diff --git a/modules/plugins/assistant/supermaven-nvim/supermaven-nvim.nix b/modules/plugins/assistant/supermaven-nvim/supermaven-nvim.nix deleted file mode 100644 index 0d1efd19..00000000 --- a/modules/plugins/assistant/supermaven-nvim/supermaven-nvim.nix +++ /dev/null @@ -1,94 +0,0 @@ -{lib, ...}: let - inherit - (lib.types) - nullOr - str - bool - attrsOf - ints - enum - ; - inherit (lib.options) mkOption mkEnableOption; - inherit (lib.nvim.types) mkPluginSetupOption luaInline; -in { - options.vim.assistant.supermaven-nvim = { - enable = mkEnableOption "Supermaven AI assistant"; - - setupOpts = mkPluginSetupOption "Supermaven" { - keymaps = { - accept_suggestion = mkOption { - type = nullOr str; - default = null; - example = ""; - description = "The key to accept a suggestion"; - }; - clear_suggestion = mkOption { - type = nullOr str; - default = null; - example = ""; - description = "The key to clear a suggestion"; - }; - accept_word = mkOption { - type = nullOr str; - default = null; - example = ""; - description = "The key to accept a word"; - }; - }; - ignore_file = mkOption { - type = nullOr (attrsOf bool); - default = null; - example = { - markdown = true; - }; - description = "List of fileto ignore"; - }; - color = { - suggestion_color = mkOption { - type = nullOr str; - default = null; - example = "#ffffff"; - description = "The hex color of the suggestion"; - }; - cterm = mkOption { - type = nullOr ints.u8; - default = null; - example = 244; - description = "The cterm color of the suggestion"; - }; - }; - log_level = mkOption { - type = nullOr (enum [ - "off" - "trace" - "debug" - "info" - "warn" - "error" - ]); - default = null; - example = "info"; - description = "The log level. Set to `\"off\"` to disable completely"; - }; - disable_inline_completion = mkOption { - type = nullOr bool; - default = null; - description = "Disable inline completion for use with cmp"; - }; - disable_keymaps = mkOption { - type = nullOr bool; - default = null; - description = "Disable built-in keymaps for more manual control"; - }; - condition = mkOption { - type = nullOr luaInline; - default = null; - description = '' - Condition function to check for stopping supermaven. - - A returned `true` means to stop supermaven - ''; - }; - }; - }; -} diff --git a/modules/plugins/completion/blink-cmp/blink-cmp.nix b/modules/plugins/completion/blink-cmp/blink-cmp.nix index d0f0328a..65b88815 100644 --- a/modules/plugins/completion/blink-cmp/blink-cmp.nix +++ b/modules/plugins/completion/blink-cmp/blink-cmp.nix @@ -1,6 +1,7 @@ {lib, ...}: let inherit (lib.options) mkEnableOption mkOption literalMD; inherit (lib.types) bool listOf str either attrsOf submodule enum anything int nullOr; + inherit (lib.generators) mkLuaInline; inherit (lib.nvim.types) mkPluginSetupOption luaInline pluginType; inherit (lib.nvim.binds) mkMappingOption; inherit (lib.nvim.config) mkBool; @@ -9,7 +10,7 @@ freeformType = attrsOf (listOf (either str luaInline)); options = { preset = mkOption { - type = enum ["inherit" "default" "none" "super-tab" "enter" "cmdline"]; + type = enum ["default" "none" "super-tab" "enter"]; default = "none"; description = "keymap presets"; }; @@ -47,7 +48,7 @@ in { cmdline = { sources = mkOption { type = nullOr (listOf str); - default = null; + default = []; description = "List of sources to enable for cmdline. Null means use default source list."; }; diff --git a/modules/plugins/completion/blink-cmp/config.nix b/modules/plugins/completion/blink-cmp/config.nix index 5789c514..9302332e 100644 --- a/modules/plugins/completion/blink-cmp/config.nix +++ b/modules/plugins/completion/blink-cmp/config.nix @@ -5,12 +5,11 @@ }: let inherit (lib.modules) mkIf; inherit (lib.strings) optionalString; - inherit (lib.attrsets) optionalAttrs; inherit (lib.generators) mkLuaInline; inherit (lib.attrsets) attrValues filterAttrs mapAttrsToList; - inherit (lib.lists) map optional optionals elem; + inherit (lib.lists) map optional elem; inherit (lib.nvim.lua) toLuaObject; - inherit (builtins) concatStringsSep typeOf tryEval attrNames mapAttrs removeAttrs; + inherit (builtins) concatStringsSep typeOf tryEval attrNames mapAttrs; cfg = config.vim.autocomplete.blink-cmp; cmpCfg = config.vim.autocomplete.nvim-cmp; @@ -56,7 +55,7 @@ in { after = # lua '' - ${optionalString (config.vim.lazy.enable && cmpCfg.enable) + ${optionalString config.vim.lazy.enable (concatStringsSep "\n" (map (package: "require('lz.n').trigger_load(${toLuaObject (getPluginName package)})") cmpCfg.sourcePlugins))} @@ -67,10 +66,7 @@ in { autocomplete = { enableSharedCmpSources = true; blink-cmp.setupOpts = { - sources = let - # We do not want nvim-cmp compat sources overriding built-in blink sources - filteredCmpSources = removeAttrs cmpCfg.sources blinkBuiltins; - in { + sources = { default = [ "lsp" @@ -78,16 +74,14 @@ in { "snippets" "buffer" ] - ++ optionals cmpCfg.enable (attrNames filteredCmpSources) + ++ (attrNames cmpCfg.sources) ++ (attrNames enabledBlinkSources); providers = - optionalAttrs cmpCfg.enable ( - mapAttrs (name: _: { - inherit name; - module = "blink.compat.source"; - }) - filteredCmpSources - ) + mapAttrs (name: _: { + inherit name; + module = "blink.compat.source"; + }) + cmpCfg.sources // (mapAttrs (name: definition: { inherit name; inherit (definition) module; @@ -128,21 +122,6 @@ in { "fallback" ]; }; - - # cmdline is not enabled by default, we're just providing keymaps in - # case the user enables them - cmdline.keymap = { - ${mappings.complete} = ["show" "fallback"]; - ${mappings.close} = ["hide" "fallback"]; - ${mappings.scrollDocsUp} = ["scroll_documentation_up" "fallback"]; - ${mappings.scrollDocsDown} = ["scroll_documentation_down" "fallback"]; - # NOTE: mappings.confirm is skipped because our default, would - # lead to accidental triggers of blink.accept instead of executing - # the cmd - - ${mappings.next} = ["select_next" "show" "fallback"]; - ${mappings.previous} = ["select_prev" "fallback"]; - }; }; }; }; diff --git a/modules/plugins/completion/nvim-cmp/config.nix b/modules/plugins/completion/nvim-cmp/config.nix index 9cceb0b7..749ebb7c 100644 --- a/modules/plugins/completion/nvim-cmp/config.nix +++ b/modules/plugins/completion/nvim-cmp/config.nix @@ -3,10 +3,11 @@ config, ... }: let - inherit (lib.modules) mkIf; + inherit (lib.modules) mkIf mkMerge; inherit (lib.strings) optionalString; inherit (lib.generators) mkLuaInline; inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.attrsets) mapListToAttrs; inherit (builtins) attrNames typeOf tryEval concatStringsSep; borders = config.vim.ui.borders.plugins.nvim-cmp; diff --git a/modules/plugins/completion/nvim-cmp/nvim-cmp.nix b/modules/plugins/completion/nvim-cmp/nvim-cmp.nix index 4391a144..2c8c77d3 100644 --- a/modules/plugins/completion/nvim-cmp/nvim-cmp.nix +++ b/modules/plugins/completion/nvim-cmp/nvim-cmp.nix @@ -3,7 +3,7 @@ config, ... }: let - inherit (lib.options) mkEnableOption mkOption literalMD; + inherit (lib.options) mkEnableOption mkOption literalExpression literalMD; inherit (lib.types) str attrsOf nullOr either listOf; inherit (lib.generators) mkLuaInline; inherit (lib.nvim.binds) mkMappingOption; diff --git a/modules/plugins/dashboard/alpha/config.nix b/modules/plugins/dashboard/alpha/config.nix index 7a29bd0b..804189b9 100644 --- a/modules/plugins/dashboard/alpha/config.nix +++ b/modules/plugins/dashboard/alpha/config.nix @@ -4,6 +4,7 @@ ... }: let inherit (lib.modules) mkIf; + inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.dashboard.alpha; diff --git a/modules/plugins/dashboard/startify/startify.nix b/modules/plugins/dashboard/startify/startify.nix index dcc1ce16..c33cfa01 100644 --- a/modules/plugins/dashboard/startify/startify.nix +++ b/modules/plugins/dashboard/startify/startify.nix @@ -3,47 +3,46 @@ inherit (lib.types) listOf attrs bool enum str oneOf int; in { options.vim.dashboard.startify = { - enable = mkEnableOption "fancy start screen for Vim [vim-startify]"; + enable = mkEnableOption "dashboard via vim-startify"; bookmarks = mkOption { - type = listOf attrs; default = []; + description = ''List of book marks to disaply on start page''; + type = listOf attrs; example = {"c" = "~/.vimrc";}; - description = "List of book marks to display on start page"; }; changeToDir = mkOption { - type = bool; default = true; - description = "Whether Vim should change to the directory of the file you open"; + description = "Should vim change to the directory of the file you open"; + type = bool; }; changeToVCRoot = mkOption { - type = bool; default = false; - description = "Whether Vim should change to the version control root when opening a file"; + description = "Should vim change to the version control root when opening a file"; + type = bool; }; changeDirCmd = mkOption { - type = enum ["cd" "lcd" "tcd"]; default = "lcd"; - description = "Command to change the current window with."; + description = "Command to change the current window with. Can be cd, lcd or tcd"; + type = enum ["cd" "lcd" "tcd"]; }; customHeader = mkOption { - type = listOf str; default = []; description = "Text to place in the header"; + type = listOf str; }; customFooter = mkOption { - type = listOf str; default = []; description = "Text to place in the footer"; + type = listOf str; }; lists = mkOption { - type = listOf attrs; default = [ { type = "files"; @@ -67,136 +66,121 @@ in { } ]; description = "Specify the lists and in what order they are displayed on startify."; + type = listOf attrs; }; skipList = mkOption { - type = listOf str; default = []; description = "List of regex patterns to exclude from MRU lists"; + type = listOf str; }; updateOldFiles = mkOption { - type = bool; - default = false; description = "Set if you want startify to always update and not just when neovim closes"; + type = bool; }; sessionAutoload = mkOption { - type = bool; - default = false; - description = "Make vim-startify auto load Session.vim files from the current directory"; + description = "Make startify auto load Session.vim files from the current directory"; + type = bool; }; commands = mkOption { - type = listOf (oneOf [str attrs (listOf str)]); default = []; description = "Commands that are presented to the user on startify page"; + type = listOf (oneOf [str attrs (listOf str)]); }; filesNumber = mkOption { - type = int; default = 10; description = "How many files to list"; + type = int; }; customIndices = mkOption { - type = listOf str; default = []; description = "Specify a list of default characters to use instead of numbers"; + type = listOf str; }; disableOnStartup = mkOption { - type = bool; default = false; - description = '' - Whether vim-startify should be disabled on startup. - - This will prevent startify from opening on startup, but it can still - be called with `:Startify` - ''; + description = "Prevent startify from opening on startup but can be called with :Startify"; + type = bool; }; unsafe = mkOption { - type = bool; default = false; - description = '' - Whether to turn on unsafe mode for Startify. - - While enabld, vim-startify will stops resolving links, checking files - are readable and filtering bookmark list - ''; + description = "Turns on unsafe mode for Startify. Stops resolving links, checking files are readable and filtering bookmark list"; + type = bool; }; paddingLeft = mkOption { - type = int; default = 3; description = "Number of spaces used for left padding."; + type = int; }; useEnv = mkOption { - type = bool; default = false; description = "Show environment variables in path if name is shorter than value"; + type = bool; }; sessionBeforeSave = mkOption { - type = listOf str; default = []; description = "Commands to run before saving a session"; + type = listOf str; }; sessionPersistence = mkOption { - type = bool; default = false; description = "Persist session before leaving vim or switching session"; + type = bool; }; sessionDeleteBuffers = mkOption { - type = bool; default = true; description = "Delete all buffers when loading or closing a session"; + type = bool; }; sessionDir = mkOption { - type = str; default = "~/.vim/session"; description = "Directory to save and load sessions from"; + type = str; }; skipListServer = mkOption { - type = listOf str; default = []; description = "List of vim servers to not load startify for"; + type = listOf str; }; sessionRemoveLines = mkOption { - type = listOf str; default = []; description = "Patterns to remove from session files"; + type = listOf str; }; sessionSavevars = mkOption { - type = listOf str; default = []; description = "List of variables to save into a session file."; + type = listOf str; }; sessionSavecmds = mkOption { - type = listOf str; default = []; description = "List of commands to run when loading a session."; + type = listOf str; }; sessionSort = mkOption { - type = bool; default = false; - example = true; - description = '' - While true, sessions will be sorted by date rather than alphabetically. - - ''; + description = "Set if you want items sorted by date rather than alphabetically"; + type = bool; }; }; } diff --git a/modules/plugins/diagnostics/nvim-lint/config.nix b/modules/plugins/diagnostics/nvim-lint/config.nix index 488bd70f..b284270b 100644 --- a/modules/plugins/diagnostics/nvim-lint/config.nix +++ b/modules/plugins/diagnostics/nvim-lint/config.nix @@ -28,8 +28,6 @@ in { end end end - - nvf_lint = ${toLuaObject cfg.lint_function} ''; }; }) @@ -40,8 +38,8 @@ in { { event = ["BufWritePost"]; callback = mkLuaInline '' - function(args) - nvf_lint(args.buf) + function() + require("lint").try_lint() end ''; } diff --git a/modules/plugins/diagnostics/nvim-lint/nvim-lint.nix b/modules/plugins/diagnostics/nvim-lint/nvim-lint.nix index 956bd76e..20f14f0b 100644 --- a/modules/plugins/diagnostics/nvim-lint/nvim-lint.nix +++ b/modules/plugins/diagnostics/nvim-lint/nvim-lint.nix @@ -1,8 +1,7 @@ {lib, ...}: let - inherit (lib.options) mkOption mkEnableOption literalExpression; + inherit (lib.options) mkOption mkEnableOption; inherit (lib.types) nullOr attrsOf listOf str either submodule bool enum; inherit (lib.nvim.types) luaInline; - inherit (lib.generators) mkLuaInline; linterType = submodule { options = { @@ -70,23 +69,6 @@ default = null; description = "Parser function"; }; - - required_files = mkOption { - type = nullOr (listOf str); - default = null; - example = ["eslint.config.js"]; - description = '' - Required files to lint. These files must exist relative to the cwd - of the linter or else this linter will be skipped - - ::: {.note} - This option is an nvf extension that only takes effect if you - use the `nvf_lint()` lua function. - - See {option}`vim.diagnostics.nvim-lint.lint_function`. - ::: - ''; - }; }; }; in { @@ -135,53 +117,5 @@ in { }; lint_after_save = mkEnableOption "autocmd to lint after each save" // {default = true;}; - - lint_function = mkOption { - type = luaInline; - default = mkLuaInline '' - function(buf) - local ft = vim.api.nvim_get_option_value("filetype", { buf = buf }) - local linters = require("lint").linters - local linters_from_ft = require("lint").linters_by_ft[ft] - - -- if no linter is configured for this filetype, stops linting - if linters_from_ft == nil then return end - - for _, name in ipairs(linters_from_ft) do - local linter = linters[name] - assert(linter, 'Linter with name `' .. name .. '` not available') - - if type(linter) == "function" then - linter = linter() - end - -- for require("lint").lint() to work, linter.name must be set - linter.name = linter.name or name - local cwd = linter.required_files - - -- if no configuration files are configured, lint - if cwd == nil then - require("lint").lint(linter) - else - -- if configuration files are configured and present in the project, lint - for _, fn in ipairs(cwd) do - local path = vim.fs.joinpath(linter.cwd or vim.fn.getcwd(), fn); - if vim.uv.fs_stat(path) then - require("lint").lint(linter) - break - end - end - end - end - end - ''; - example = literalExpression '' - mkLuaInline ''' - function(buf) - require("lint").try_lint() - end - ''' - ''; - description = "Define the global function nvf_lint which is used by nvf to lint."; - }; }; } diff --git a/modules/plugins/filetree/nvimtree/nvimtree.nix b/modules/plugins/filetree/nvimtree/nvimtree.nix index c3beb38f..9c443a6e 100644 --- a/modules/plugins/filetree/nvimtree/nvimtree.nix +++ b/modules/plugins/filetree/nvimtree/nvimtree.nix @@ -683,48 +683,15 @@ in { }; git_placement = mkOption { - type = enum ["before" "after" "signcolumn" "right_align"]; + type = enum ["before" "after" "signcolumn"]; + description = "Place where the git icons will be rendered. `signcolumn` requires `view.signcolumn` to be enabled."; default = "before"; - description = '' - Place where the git icons will be rendered. - `signcolumn` requires `view.signcolumn` to be enabled. - ''; }; modified_placement = mkOption { - type = enum ["before" "after" "signcolumn" "right_align"]; + type = enum ["before" "after" "signcolumn"]; + description = "Place where the modified icons will be rendered. `signcolumn` requires `view.signcolumn` to be enabled."; default = "after"; - description = '' - Place where the modified icons will be rendered. - `signcolumn` requires `view.signcolumn` to be enabled. - ''; - }; - - hidden_placement = mkOption { - type = enum ["before" "after" "signcolumn" "right_align"]; - default = "after"; - description = '' - Place where the hidden icons will be rendered. - `signcolumn` requires `view.signcolumn` to be enabled. - ''; - }; - - diagnostics_placement = mkOption { - type = enum ["before" "after" "signcolumn" "right_align"]; - default = "after"; - description = '' - Place where the diagnostics icons will be rendered. - `signcolumn` requires `view.signcolumn` to be enabled. - ''; - }; - - bookmarks_placement = mkOption { - type = enum ["before" "after" "signcolumn" "right_align"]; - default = "after"; - description = '' - Place where the bookmark icons will be rendered. - `signcolumn` requires `view.signcolumn` to be enabled. - ''; }; padding = mkOption { diff --git a/modules/plugins/formatter/conform-nvim/conform-nvim.nix b/modules/plugins/formatter/conform-nvim/conform-nvim.nix index cfe89bf3..727985a3 100644 --- a/modules/plugins/formatter/conform-nvim/conform-nvim.nix +++ b/modules/plugins/formatter/conform-nvim/conform-nvim.nix @@ -1,9 +1,12 @@ -{lib, ...}: let - inherit (lib.generators) mkLuaInline; - inherit (lib.options) mkOption mkEnableOption literalMD; - inherit (lib.types) attrs either nullOr; - inherit (lib.nvim.lua) toLuaObject; - inherit (lib.nvim.types) luaInline mkPluginSetupOption; +{ + pkgs, + lib, + ... +}: let + inherit (lib.options) mkOption mkEnableOption literalExpression; + inherit (lib.types) attrs enum nullOr; + inherit (lib.nvim.types) mkPluginSetupOption; + inherit (lib.nvim.lua) mkLuaInline; in { options.vim.formatter.conform-nvim = { enable = mkEnableOption "lightweight yet powerful formatter plugin for Neovim [conform-nvim]"; @@ -28,46 +31,26 @@ in { }; format_on_save = mkOption { - type = nullOr (either attrs luaInline); - default = mkLuaInline '' - function() - if not vim.g.formatsave or vim.b.disableFormatSave then - return - else - return {lsp_format = "fallback", timeout_ms = 500} - end - end - ''; - defaultText = literalMD '' - enabled by default, and respects {option}`vim.lsp.formatOnSave` and - {option}`vim.lsp.mappings.toggleFormatSave` - ''; + type = nullOr attrs; + default = { + lsp_format = "fallback"; + timeout_ms = 500; + }; description = '' - Attribute set or Lua function that will be passed to - `conform.format()`. If this is set, Conform will run the formatter - on save. + Table that will be passed to `conform.format()`. If this + is set, Conform will run the formatter on save. ''; }; - format_after_save = let - defaultFormatAfterSaveOpts = {lsp_format = "fallback";}; - in - mkOption { - type = nullOr (either attrs luaInline); - default = mkLuaInline '' - function() - if not vim.g.formatsave or vim.b.disableFormatSave then - return - else - return ${toLuaObject defaultFormatAfterSaveOpts} - end - end - ''; - description = '' - Table or function(luainline) that will be passed to `conform.format()`. If this - is set, Conform will run the formatter asynchronously after save. - ''; - }; + format_after_save = mkOption { + type = nullOr attrs; + default = {lsp_format = "fallback";}; + description = '' + Table that will be passed to `conform.format()`. If this + is set, Conform will run the formatter asynchronously after + save. + ''; + }; }; }; } diff --git a/modules/plugins/git/default.nix b/modules/plugins/git/default.nix index 76bb5786..06c80f35 100644 --- a/modules/plugins/git/default.nix +++ b/modules/plugins/git/default.nix @@ -3,11 +3,9 @@ in { imports = [ ./gitsigns - ./hunk-nvim ./vim-fugitive ./git-conflict ./gitlinker-nvim - ./neogit ]; options.vim.git = { @@ -15,9 +13,7 @@ in { git integration suite. Enabling this option will enable the following plugins: - * gitsigns - * hunk-nvim * vim-fugitive * git-conflict * gitlinker-nvim diff --git a/modules/plugins/git/gitsigns/config.nix b/modules/plugins/git/gitsigns/config.nix index e89eebcf..99927546 100644 --- a/modules/plugins/git/gitsigns/config.nix +++ b/modules/plugins/git/gitsigns/config.nix @@ -69,7 +69,7 @@ in { }; binds.whichKey.register = pushDownDefault { - "h" = "+Gitsigns"; + "g" = "+Gitsigns"; }; pluginRC.gitsigns = entryAnywhere '' @@ -81,11 +81,9 @@ in { (mkIf cfg.codeActions.enable { vim.lsp.null-ls = { enable = true; - setupOpts.sources = [ - (mkLuaInline '' - require("null-ls").builtins.code_actions.gitsigns - '') - ]; + setupOpts.sources.gitsigns-ca = mkLuaInline '' + require("null-ls").builtins.code_actions.gitsigns + ''; }; }) ]); diff --git a/modules/plugins/git/hunk-nvim/config.nix b/modules/plugins/git/hunk-nvim/config.nix deleted file mode 100644 index 5eb41448..00000000 --- a/modules/plugins/git/hunk-nvim/config.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - - cfg = config.vim.git.hunk-nvim; -in { - config = mkIf cfg.enable { - vim = { - startPlugins = [ - # dependencies - "nui-nvim" # ui library - "nvim-web-devicons" # glyphs - ]; - - lazy.plugins = { - "hunk-nvim" = { - package = "hunk-nvim"; - setupModule = "hunk"; - inherit (cfg) setupOpts; - }; - }; - }; - }; -} diff --git a/modules/plugins/git/hunk-nvim/default.nix b/modules/plugins/git/hunk-nvim/default.nix deleted file mode 100644 index 72ce88a0..00000000 --- a/modules/plugins/git/hunk-nvim/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./hunk-nvim.nix - ./config.nix - ]; -} diff --git a/modules/plugins/git/hunk-nvim/hunk-nvim.nix b/modules/plugins/git/hunk-nvim/hunk-nvim.nix deleted file mode 100644 index b11ba4ae..00000000 --- a/modules/plugins/git/hunk-nvim/hunk-nvim.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.options) mkEnableOption; - inherit (lib.nvim.types) mkPluginSetupOption; -in { - options.vim.git.hunk-nvim = { - enable = mkEnableOption "tool for splitting diffs in Neovim [hunk-nvim]" // {default = config.vim.git.enable;}; - setupOpts = mkPluginSetupOption "hunk-nvim" {}; - }; -} diff --git a/modules/plugins/git/neogit/config.nix b/modules/plugins/git/neogit/config.nix deleted file mode 100644 index 20928857..00000000 --- a/modules/plugins/git/neogit/config.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - options, - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.binds) pushDownDefault mkKeymap; - - cfg = config.vim.git.neogit; - - keys = cfg.mappings; - inherit (options.vim.git.neogit) mappings; -in { - config = mkIf cfg.enable { - vim = { - startPlugins = ["plenary-nvim"]; - - lazy.plugins.neogit = { - package = "neogit"; - setupModule = "neogit"; - inherit (cfg) setupOpts; - - cmd = ["Neogit"]; - - keys = [ - (mkKeymap "n" keys.open "Neogit" {desc = mappings.open.description;}) - (mkKeymap "n" keys.commit "Neogit commit" {desc = mappings.commit.description;}) - (mkKeymap "n" keys.pull "Neogit pull" {desc = mappings.pull.description;}) - (mkKeymap "n" keys.push "Neogit push" {desc = mappings.push.description;}) - ]; - }; - - binds.whichKey.register = pushDownDefault { - "g" = "+Git"; - }; - }; - }; -} diff --git a/modules/plugins/git/neogit/default.nix b/modules/plugins/git/neogit/default.nix deleted file mode 100644 index d3f82759..00000000 --- a/modules/plugins/git/neogit/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./config.nix - ./neogit.nix - ]; -} diff --git a/modules/plugins/git/neogit/neogit.nix b/modules/plugins/git/neogit/neogit.nix deleted file mode 100644 index fa988a32..00000000 --- a/modules/plugins/git/neogit/neogit.nix +++ /dev/null @@ -1,17 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; - inherit (lib.nvim.binds) mkMappingOption; - inherit (lib.nvim.types) mkPluginSetupOption; -in { - options.vim.git.neogit = { - enable = mkEnableOption "An Interactive and powerful Git interface [Neogit]"; - setupOpts = mkPluginSetupOption "neogit" {}; - - mappings = { - open = mkMappingOption "Git Status [Neogit]" "gs"; - commit = mkMappingOption "Git Commit [Neogit]" "gc"; - pull = mkMappingOption "Git pull [Neogit]" "gp"; - push = mkMappingOption "Git push [Neogit]" "gP"; - }; - }; -} diff --git a/modules/plugins/languages/asm.nix b/modules/plugins/languages/asm.nix index 9fe58a76..a0e96cef 100644 --- a/modules/plugins/languages/asm.nix +++ b/modules/plugins/languages/asm.nix @@ -20,7 +20,7 @@ in { }; lsp = { - enable = mkEnableOption "Assembly LSP support (asm-lsp)" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Assembly LSP support (asm-lsp)" // {default = config.vim.languages.enableLSP;}; package = mkOption { type = package; diff --git a/modules/plugins/languages/astro.nix b/modules/plugins/languages/astro.nix index 21b6e5a3..c12f6ada 100644 --- a/modules/plugins/languages/astro.nix +++ b/modules/plugins/languages/astro.nix @@ -10,6 +10,7 @@ inherit (lib.lists) isList; inherit (lib.meta) getExe; inherit (lib.types) enum either listOf package str; + inherit (lib.generators) mkLuaInline; inherit (lib.nvim.lua) expToLua; inherit (lib.nvim.types) mkGrammarOption diagnostics; @@ -37,7 +38,7 @@ defaultFormat = "prettier"; formats = { prettier = { - package = pkgs.prettier; + package = pkgs.nodePackages.prettier; }; prettierd = { @@ -52,20 +53,24 @@ # TODO: specify packages defaultDiagnosticsProvider = ["eslint_d"]; diagnosticsProviders = { - eslint_d = let - pkg = pkgs.eslint_d; - in { - package = pkg; + eslint_d = { + package = pkgs.eslint_d; config = { - cmd = getExe pkg; - required_files = [ - "eslint.config.js" - "eslint.config.mjs" - ".eslintrc" - ".eslintrc.json" - ".eslintrc.js" - ".eslintrc.yml" - ]; + # HACK: change if nvim-lint gets a dynamic enable thing + parser = mkLuaInline '' + function(output, bufnr, cwd) + local markers = { "eslint.config.js", "eslint.config.mjs", + ".eslintrc", ".eslintrc.json", ".eslintrc.js", ".eslintrc.yml", } + for _, filename in ipairs(markers) do + local path = vim.fs.joinpath(cwd, filename) + if vim.loop.fs_stat(path) then + return require("lint.linters.eslint_d").parser(output, bufnr, cwd) + end + end + + return {} + end + ''; }; }; }; @@ -80,7 +85,7 @@ in { }; lsp = { - enable = mkEnableOption "Astro LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Astro LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = enum (attrNames servers); @@ -148,9 +153,16 @@ in { vim.diagnostics.nvim-lint = { enable = true; linters_by_ft.astro = cfg.extraDiagnostics.types; - linters = - mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;}) - cfg.extraDiagnostics.types); + linters = mkMerge (map ( + name: { + ${name} = + diagnosticsProviders.${name}.config + // { + cmd = getExe diagnosticsProviders.${name}.package; + }; + } + ) + cfg.extraDiagnostics.types); }; }) ]); diff --git a/modules/plugins/languages/bash.nix b/modules/plugins/languages/bash.nix index 9a5e3e13..bfe01032 100644 --- a/modules/plugins/languages/bash.nix +++ b/modules/plugins/languages/bash.nix @@ -56,7 +56,7 @@ in { }; lsp = { - enable = mkEnableOption "Enable Bash LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Enable Bash LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Bash LSP server to use"; @@ -66,7 +66,7 @@ in { package = mkOption { description = "bash-language-server package, or the command to run as a list of strings"; - example = literalExpression ''[lib.getExe pkgs.bash-language-server "start"]''; + example = literalExpression ''[lib.getExe pkgs.nodePackages.bash-language-server "start"]''; type = either package (listOf str); default = pkgs.bash-language-server; }; diff --git a/modules/plugins/languages/clang.nix b/modules/plugins/languages/clang.nix index 2db178e9..bb30cc95 100644 --- a/modules/plugins/languages/clang.nix +++ b/modules/plugins/languages/clang.nix @@ -98,7 +98,7 @@ in { }; lsp = { - enable = mkEnableOption "clang LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "clang LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "The clang LSP server to use"; diff --git a/modules/plugins/languages/clojure.nix b/modules/plugins/languages/clojure.nix deleted file mode 100644 index 0b932708..00000000 --- a/modules/plugins/languages/clojure.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: let - inherit (lib.options) mkEnableOption mkOption; - inherit (lib.modules) mkIf mkMerge; - inherit (lib.meta) getExe; - inherit (lib.lists) isList; - inherit (lib.types) either listOf package str; - inherit (lib.nvim.types) mkGrammarOption; - inherit (lib.nvim.lua) expToLua; - - cfg = config.vim.languages.clojure; -in { - options.vim.languages.clojure = { - enable = mkEnableOption "Clojure language support"; - - treesitter = { - enable = mkEnableOption "Clojure treesitter" // {default = config.vim.languages.enableTreesitter;}; - package = mkGrammarOption pkgs "clojure"; - }; - - lsp = { - enable = mkEnableOption "Clojure LSP support" // {default = config.vim.lsp.enable;}; - package = mkOption { - type = either package (listOf str); - default = pkgs.clojure-lsp; - description = "Clojure LSP"; - }; - }; - }; - - config = mkIf cfg.enable (mkMerge [ - (mkIf cfg.lsp.enable { - vim.lsp.lspconfig.enable = true; - vim.lsp.lspconfig.sources.clojure-lsp = '' - lspconfig.clojure_lsp.setup { - capabilities = capabilities; - on_attach = default_on_attach; - cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{"${getExe cfg.lsp.package}"}'' - }; - } - ''; - }) - - (mkIf cfg.treesitter.enable { - vim.treesitter.enable = true; - vim.treesitter.grammars = [cfg.treesitter.package]; - }) - ]); -} diff --git a/modules/plugins/languages/csharp.nix b/modules/plugins/languages/csharp.nix index 49ae4985..af7f36e0 100644 --- a/modules/plugins/languages/csharp.nix +++ b/modules/plugins/languages/csharp.nix @@ -91,7 +91,7 @@ in { }; lsp = { - enable = mkEnableOption "C# LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "C# LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "C# LSP server to use"; type = enum (attrNames servers); diff --git a/modules/plugins/languages/css.nix b/modules/plugins/languages/css.nix index 1075bbc7..d103f241 100644 --- a/modules/plugins/languages/css.nix +++ b/modules/plugins/languages/css.nix @@ -42,7 +42,7 @@ defaultFormat = "prettier"; formats = { prettier = { - package = pkgs.prettier; + package = pkgs.nodePackages.prettier; }; prettierd = { @@ -80,7 +80,7 @@ in { }; lsp = { - enable = mkEnableOption "CSS LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "CSS LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "CSS LSP server to use"; diff --git a/modules/plugins/languages/cue.nix b/modules/plugins/languages/cue.nix index bd446cbf..313e3233 100644 --- a/modules/plugins/languages/cue.nix +++ b/modules/plugins/languages/cue.nix @@ -21,7 +21,7 @@ in { }; lsp = { - enable = mkEnableOption "CUE LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "CUE LSP support" // {default = config.vim.languages.enableLSP;}; package = mkOption { type = package; diff --git a/modules/plugins/languages/dart.nix b/modules/plugins/languages/dart.nix index c2a1810d..4f8a7028 100644 --- a/modules/plugins/languages/dart.nix +++ b/modules/plugins/languages/dart.nix @@ -13,7 +13,7 @@ inherit (lib.strings) optionalString; inherit (lib.nvim.lua) expToLua; inherit (lib.nvim.types) mkGrammarOption; - inherit (lib.nvim.dag) entryAfter; + inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.languages.dart; ftcfg = cfg.flutter-tools; @@ -77,29 +77,20 @@ in { flutter-tools = { enable = mkOption { type = bool; - default = config.vim.lsp.enable; + default = config.vim.languages.enableLSP; description = "Enable flutter-tools for flutter support"; }; - flutterPackage = mkOption { - type = nullOr package; - default = pkgs.flutter; - description = "Flutter package, or null to detect the flutter path at runtime instead."; - }; - enableNoResolvePatch = mkOption { type = bool; - default = false; + default = true; description = '' Whether to patch flutter-tools so that it doesn't resolve symlinks when detecting flutter path. - ::: {.note} - This is required if `flutterPackage` is set to null and the flutter - package in your `PATH` was built with Nix. If you are using a flutter - SDK installed from a different source and encounter the error "`dart` - missing from `PATH`", leave this option disabled. - ::: + This is required if you want to use a flutter package built with nix. + If you are using a flutter SDK installed from a different source + and encounter the error "`dart` missing from PATH", disable this option. ''; }; @@ -131,30 +122,25 @@ in { }; }; - config.vim = mkIf cfg.enable (mkMerge [ + config = mkIf cfg.enable (mkMerge [ (mkIf cfg.treesitter.enable { - treesitter.enable = true; - treesitter.grammars = [cfg.treesitter.package]; + vim.treesitter.enable = true; + vim.treesitter.grammars = [cfg.treesitter.package]; }) (mkIf cfg.lsp.enable { - lsp.lspconfig.enable = true; - lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig; + vim.lsp.lspconfig.enable = true; + vim.lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig; }) (mkIf ftcfg.enable { - startPlugins = [ - ( - if ftcfg.enableNoResolvePatch - then "flutter-tools-patched" - else "flutter-tools-nvim" - ) - "plenary-nvim" - ]; + vim.startPlugins = + if ftcfg.enableNoResolvePatch + then ["flutter-tools-patched"] + else ["flutter-tools-nvim"]; - pluginRC.flutter-tools = entryAfter ["lsp-setup"] '' + vim.pluginRC.flutter-tools = entryAnywhere '' require('flutter-tools').setup { - ${optionalString (ftcfg.flutterPackage != null) "flutter_path = \"${ftcfg.flutterPackage}/bin/flutter\","} lsp = { color = { -- show the derived colours for dart variables enabled = ${boolToString ftcfg.color.enable}, -- whether or not to highlight color variables at all, only supported on flutter >= 2.10 @@ -166,6 +152,7 @@ in { capabilities = capabilities, on_attach = default_on_attach; + flags = lsp_flags, }, ${optionalString cfg.dap.enable '' debugger = { diff --git a/modules/plugins/languages/default.nix b/modules/plugins/languages/default.nix index 961d7cc5..c3312135 100644 --- a/modules/plugins/languages/default.nix +++ b/modules/plugins/languages/default.nix @@ -1,5 +1,4 @@ {lib, ...}: let - inherit (lib.modules) mkRenamedOptionModule; inherit (lib.nvim.languages) mkEnable; in { imports = [ @@ -9,7 +8,6 @@ in { ./cue.nix ./dart.nix ./clang.nix - ./clojure.nix ./css.nix ./elixir.nix ./fsharp.nix @@ -46,13 +44,10 @@ in { ./wgsl.nix ./yaml.nix ./ruby.nix - - # This is now a hard deprecation. - (mkRenamedOptionModule ["vim" "languages" "enableLSP"] ["vim" "lsp" "enable"]) ]; options.vim.languages = { - # Those are still managed by plugins, and should be enabled here. + enableLSP = mkEnable "LSP"; enableDAP = mkEnable "Debug Adapter"; enableTreesitter = mkEnable "Treesitter"; enableFormat = mkEnable "Formatting"; diff --git a/modules/plugins/languages/elixir.nix b/modules/plugins/languages/elixir.nix index 241efd8e..7b3a0256 100644 --- a/modules/plugins/languages/elixir.nix +++ b/modules/plugins/languages/elixir.nix @@ -53,7 +53,7 @@ in { }; lsp = { - enable = mkEnableOption "Elixir LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Elixir LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Elixir LSP server to use"; diff --git a/modules/plugins/languages/fsharp.nix b/modules/plugins/languages/fsharp.nix index 6ed0ccab..966b0349 100644 --- a/modules/plugins/languages/fsharp.nix +++ b/modules/plugins/languages/fsharp.nix @@ -51,7 +51,7 @@ in { }; lsp = { - enable = mkEnableOption "F# LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "F# LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = enum (attrNames servers); default = defaultServer; diff --git a/modules/plugins/languages/gleam.nix b/modules/plugins/languages/gleam.nix index 272ef51e..284d3443 100644 --- a/modules/plugins/languages/gleam.nix +++ b/modules/plugins/languages/gleam.nix @@ -41,7 +41,7 @@ in { }; lsp = { - enable = mkEnableOption "Gleam LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Gleam LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = enum (attrNames servers); diff --git a/modules/plugins/languages/go.nix b/modules/plugins/languages/go.nix index bab0ff4a..9f8bca3c 100644 --- a/modules/plugins/languages/go.nix +++ b/modules/plugins/languages/go.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption literalMD; + inherit (lib.options) mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.lists) isList; @@ -67,7 +67,7 @@ in { }; lsp = { - enable = mkEnableOption "Go LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Go LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Go LSP server to use"; @@ -84,14 +84,7 @@ in { }; format = { - enable = - mkEnableOption "Go formatting" - // { - default = !cfg.lsp.enable && config.vim.languages.enableFormat; - defaultText = literalMD '' - disabled if Go LSP is enabled, otherwise follows {option}`vim.languages.enableFormat` - ''; - }; + enable = mkEnableOption "Go formatting" // {default = config.vim.languages.enableFormat;}; type = mkOption { description = "Go formatter to use"; diff --git a/modules/plugins/languages/haskell.nix b/modules/plugins/languages/haskell.nix index f50c9f09..ff6c7d78 100644 --- a/modules/plugins/languages/haskell.nix +++ b/modules/plugins/languages/haskell.nix @@ -25,7 +25,7 @@ in { }; lsp = { - enable = mkEnableOption "LSP support for Haskell" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "LSP support for Haskell" // {default = config.vim.languages.enableLSP;}; package = mkOption { description = "Haskell LSP package or command to run the Haskell LSP"; example = ''[ (lib.getExe pkgs.haskellPackages.haskell-language-server) "--debug" ]''; diff --git a/modules/plugins/languages/hcl.nix b/modules/plugins/languages/hcl.nix index e702170c..3a3db782 100644 --- a/modules/plugins/languages/hcl.nix +++ b/modules/plugins/languages/hcl.nix @@ -43,7 +43,7 @@ in { }; lsp = { - enable = mkEnableOption "HCL LSP support (terraform-ls)" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "HCL LSP support (terraform-ls)" // {default = config.vim.languages.enableLSP;}; # TODO: (maybe, is it better?) it would be cooler to use vscode-extensions.hashicorp.hcl probably, shouldn't be too hard package = mkOption { type = package; diff --git a/modules/plugins/languages/helm.nix b/modules/plugins/languages/helm.nix index ffe115c9..d3fd636e 100644 --- a/modules/plugins/languages/helm.nix +++ b/modules/plugins/languages/helm.nix @@ -54,7 +54,7 @@ in { }; lsp = { - enable = mkEnableOption "Helm LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Helm LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Helm LSP server to use"; diff --git a/modules/plugins/languages/java.nix b/modules/plugins/languages/java.nix index 2e26feea..dc46fcfe 100644 --- a/modules/plugins/languages/java.nix +++ b/modules/plugins/languages/java.nix @@ -23,7 +23,7 @@ in { }; lsp = { - enable = mkEnableOption "Java LSP support (java-language-server)" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Java LSP support (java-language-server)" // {default = config.vim.languages.enableLSP;}; package = mkOption { description = "java language server package, or the command to run as a list of strings"; example = ''[lib.getExe pkgs.jdt-language-server "-data" "~/.cache/jdtls/workspace"]''; diff --git a/modules/plugins/languages/julia.nix b/modules/plugins/languages/julia.nix index 8c48b070..aa537df9 100644 --- a/modules/plugins/languages/julia.nix +++ b/modules/plugins/languages/julia.nix @@ -78,7 +78,7 @@ in { lsp = { enable = mkOption { type = bool; - default = config.vim.lsp.enable; + default = config.vim.languages.enableLSP; description = '' Whether to enable Julia LSP support. diff --git a/modules/plugins/languages/kotlin.nix b/modules/plugins/languages/kotlin.nix index 1118afdf..2ddc63e9 100644 --- a/modules/plugins/languages/kotlin.nix +++ b/modules/plugins/languages/kotlin.nix @@ -30,7 +30,7 @@ in { }; lsp = { - enable = mkEnableOption "Kotlin LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Kotlin LSP support" // {default = config.vim.languages.enableLSP;}; package = mkOption { description = "kotlin_language_server package with Kotlin runtime"; diff --git a/modules/plugins/languages/lua.nix b/modules/plugins/languages/lua.nix index 9f56cbea..d5be4905 100644 --- a/modules/plugins/languages/lua.nix +++ b/modules/plugins/languages/lua.nix @@ -43,7 +43,7 @@ in { }; lsp = { - enable = mkEnableOption "Lua LSP support via LuaLS" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Lua LSP support via LuaLS" // {default = config.vim.languages.enableLSP;}; package = mkOption { description = "LuaLS package, or the command to run as a list of strings"; diff --git a/modules/plugins/languages/markdown.nix b/modules/plugins/languages/markdown.nix index 23848835..62081549 100644 --- a/modules/plugins/languages/markdown.nix +++ b/modules/plugins/languages/markdown.nix @@ -9,7 +9,7 @@ inherit (lib.modules) mkIf mkMerge; inherit (lib.options) mkEnableOption mkOption; inherit (lib.lists) isList; - inherit (lib.types) bool enum either package listOf str nullOr; + inherit (lib.types) bool enum either package listOf str; inherit (lib.nvim.lua) expToLua toLuaObject; inherit (lib.nvim.types) diagnostics mkGrammarOption mkPluginSetupOption; inherit (lib.nvim.dag) entryAnywhere; @@ -67,7 +67,7 @@ in { }; lsp = { - enable = mkEnableOption "Enable Markdown LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Enable Markdown LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = enum (attrNames servers); @@ -117,30 +117,7 @@ in { ''; }; - setupOpts = mkPluginSetupOption "render-markdown" { - file_types = lib.mkOption { - type = nullOr (listOf str); - default = null; - description = '' - List of buffer filetypes to enable this plugin in. - - This will cause the plugin to attach to new buffers who - have any of these filetypes. - ''; - }; - }; - }; - markview-nvim = { - enable = - mkEnableOption "" - // { - description = '' - [markview.nvim]: https://github.com/OXY2DEV/markview.nvim - - [markview.nvim] - a hackable markdown, Typst, latex, html(inline) & YAML previewer - ''; - }; - setupOpts = mkPluginSetupOption "markview-nvim" {}; + setupOpts = mkPluginSetupOption "render-markdown" {}; }; }; @@ -187,13 +164,6 @@ in { ''; }) - (mkIf cfg.extensions.markview-nvim.enable { - vim.startPlugins = ["markview-nvim"]; - vim.pluginRC.markview-nvim = entryAnywhere '' - require("markview").setup(${toLuaObject cfg.extensions.markview-nvim.setupOpts}) - ''; - }) - (mkIf cfg.extraDiagnostics.enable { vim.diagnostics.nvim-lint = { enable = true; diff --git a/modules/plugins/languages/nim.nix b/modules/plugins/languages/nim.nix index 6e5885e2..69288223 100644 --- a/modules/plugins/languages/nim.nix +++ b/modules/plugins/languages/nim.nix @@ -6,6 +6,7 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption; + inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.types) enum either listOf package str; @@ -53,7 +54,7 @@ in { }; lsp = { - enable = mkEnableOption "Nim LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Nim LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Nim LSP server to use"; type = str; diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix index 7d126e15..ad16a34e 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -60,17 +60,7 @@ ''; }; - nixd = let - settings.nixd = { - inherit (cfg.lsp) options; - formatting.command = - if !cfg.format.enable - then null - else if cfg.format.type == "alejandra" - then ["${cfg.format.package}/bin/alejandra" "--quiet"] - else ["${cfg.format.package}/bin/nixfmt"]; - }; - in { + nixd = { package = pkgs.nixd; internalFormatter = true; lspConfig = '' @@ -82,7 +72,25 @@ else noFormat }, cmd = ${packageToCmd cfg.lsp.package "nixd"}, - settings = ${toLuaObject settings}, + ${optionalString cfg.format.enable '' + settings = { + nixd = { + ${optionalString (cfg.format.type == "alejandra") + '' + formatting = { + command = {"${cfg.format.package}/bin/alejandra", "--quiet"}, + }, + ''} + ${optionalString (cfg.format.type == "nixfmt") + '' + formatting = { + command = {"${cfg.format.package}/bin/nixfmt"}, + }, + ''} + options = ${toLuaObject cfg.lsp.options}, + }, + }, + ''} } ''; }; @@ -135,7 +143,7 @@ in { }; lsp = { - enable = mkEnableOption "Nix LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Nix LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Nix LSP server to use"; type = enum (attrNames servers); diff --git a/modules/plugins/languages/nu.nix b/modules/plugins/languages/nu.nix index bd007fc8..eab0385c 100644 --- a/modules/plugins/languages/nu.nix +++ b/modules/plugins/languages/nu.nix @@ -40,7 +40,7 @@ in { }; lsp = { - enable = mkEnableOption "Nu LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Nu LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = str; default = defaultServer; diff --git a/modules/plugins/languages/ocaml.nix b/modules/plugins/languages/ocaml.nix index 995ca04d..568b846e 100644 --- a/modules/plugins/languages/ocaml.nix +++ b/modules/plugins/languages/ocaml.nix @@ -49,7 +49,7 @@ in { }; lsp = { - enable = mkEnableOption "OCaml LSP support (ocaml-lsp)" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "OCaml LSP support (ocaml-lsp)" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "OCaml LSP server to user"; type = enum (attrNames servers); diff --git a/modules/plugins/languages/odin.nix b/modules/plugins/languages/odin.nix index 6d20351c..7a32db93 100644 --- a/modules/plugins/languages/odin.nix +++ b/modules/plugins/languages/odin.nix @@ -41,7 +41,7 @@ in { }; lsp = { - enable = mkEnableOption "Odin LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Odin LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = enum (attrNames servers); diff --git a/modules/plugins/languages/php.nix b/modules/plugins/languages/php.nix index 61ff0425..4dccc8cd 100644 --- a/modules/plugins/languages/php.nix +++ b/modules/plugins/languages/php.nix @@ -95,7 +95,7 @@ in { }; lsp = { - enable = mkEnableOption "PHP LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "PHP LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "PHP LSP server to use"; diff --git a/modules/plugins/languages/python.nix b/modules/plugins/languages/python.nix index bec7ec8b..476b56ef 100644 --- a/modules/plugins/languages/python.nix +++ b/modules/plugins/languages/python.nix @@ -99,7 +99,7 @@ # idk if this is the best way to install/run debugpy package = pkgs.python3.withPackages (ps: with ps; [debugpy]); dapConfig = '' - dap.adapters.debugpy = function(cb, config) + dap.adapters.python = function(cb, config) if config.request == 'attach' then ---@diagnostic disable-next-line: undefined-field local port = (config.connect or config).port @@ -128,7 +128,7 @@ dap.configurations.python = { { -- The first three options are required by nvim-dap - type = 'debugpy'; -- the type here established the link to the adapter definition: `dap.adapters.debugpy` + type = 'python'; -- the type here established the link to the adapter definition: `dap.adapters.python` request = 'launch'; name = "Launch file"; @@ -169,7 +169,7 @@ in { }; lsp = { - enable = mkEnableOption "Python LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Python LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Python LSP server to use"; diff --git a/modules/plugins/languages/r.nix b/modules/plugins/languages/r.nix index 894c63f6..fcadcc37 100644 --- a/modules/plugins/languages/r.nix +++ b/modules/plugins/languages/r.nix @@ -79,7 +79,7 @@ in { }; lsp = { - enable = mkEnableOption "R LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "R LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "R LSP server to use"; diff --git a/modules/plugins/languages/ruby.nix b/modules/plugins/languages/ruby.nix index 1f3ce82f..2f42aa4f 100644 --- a/modules/plugins/languages/ruby.nix +++ b/modules/plugins/languages/ruby.nix @@ -9,8 +9,6 @@ inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.nvim.types) mkGrammarOption diagnostics; - inherit (lib.nvim.lua) expToLua; - inherit (lib.lists) isList; inherit (lib.types) either listOf package str enum; cfg = config.vim.languages.ruby; @@ -26,25 +24,7 @@ flags = { debounce_text_changes = 150, }, - cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{ "${cfg.lsp.package}/bin/solargraph", "stdio" }'' - } - } - ''; - }; - rubylsp = { - package = pkgs.ruby-lsp; - lspConfig = '' - lspconfig.ruby_lsp.setup { - capabilities = capabilities, - on_attach = default_on_attach, - cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{ "${cfg.lsp.package}/bin/ruby-lsp" }'' - } + cmd = { "${pkgs.solargraph}/bin/solargraph", "stdio" } } ''; }; @@ -77,7 +57,7 @@ in { }; lsp = { - enable = mkEnableOption "Ruby LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Ruby LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = enum (attrNames servers); diff --git a/modules/plugins/languages/rust.nix b/modules/plugins/languages/rust.nix index 09c54ae6..2181623a 100644 --- a/modules/plugins/languages/rust.nix +++ b/modules/plugins/languages/rust.nix @@ -7,7 +7,7 @@ inherit (builtins) attrNames; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; - inherit (lib.options) mkOption mkEnableOption literalMD; + inherit (lib.options) mkOption mkEnableOption; inherit (lib.strings) optionalString; inherit (lib.trivial) boolToString; inherit (lib.lists) isList; @@ -43,7 +43,7 @@ in { }; lsp = { - enable = mkEnableOption "Rust LSP support (rust-analyzer with extra tools)" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Rust LSP support (rust-analyzer with extra tools)" // {default = config.vim.languages.enableLSP;}; package = mkOption { description = "rust-analyzer package, or the command to run as a list of strings"; example = ''[lib.getExe pkgs.jdt-language-server "-data" "~/.cache/jdtls/workspace"]''; @@ -68,14 +68,7 @@ in { }; format = { - enable = - mkEnableOption "Rust formatting" - // { - default = !cfg.lsp.enable && config.vim.languages.enableFormat; - defaultText = literalMD '' - Disabled if Rust LSP is enabled, otherwise follows {option}`vim.languages.enableFormat` - ''; - }; + enable = mkEnableOption "Rust formatting" // {default = config.vim.languages.enableFormat;}; type = mkOption { description = "Rust formatter to use"; diff --git a/modules/plugins/languages/scala.nix b/modules/plugins/languages/scala.nix index b5382415..f769d092 100644 --- a/modules/plugins/languages/scala.nix +++ b/modules/plugins/languages/scala.nix @@ -33,7 +33,7 @@ in { }; lsp = { - enable = mkEnableOption "Scala LSP support (metals)" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Scala LSP support (metals)" // {default = config.vim.languages.enableLSP;}; package = mkPackageOption pkgs "metals" { default = ["metals"]; }; diff --git a/modules/plugins/languages/sql.nix b/modules/plugins/languages/sql.nix index add46c15..277dbeef 100644 --- a/modules/plugins/languages/sql.nix +++ b/modules/plugins/languages/sql.nix @@ -79,7 +79,7 @@ in { }; lsp = { - enable = mkEnableOption "SQL LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "SQL LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "SQL LSP server to use"; diff --git a/modules/plugins/languages/svelte.nix b/modules/plugins/languages/svelte.nix index 4cc9ffe9..e01ec427 100644 --- a/modules/plugins/languages/svelte.nix +++ b/modules/plugins/languages/svelte.nix @@ -9,6 +9,7 @@ inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.meta) getExe; + inherit (lib.generators) mkLuaInline; inherit (lib.types) enum either listOf package str; inherit (lib.nvim.lua) expToLua; inherit (lib.nvim.types) mkGrammarOption diagnostics; @@ -18,7 +19,7 @@ defaultServer = "svelte"; servers = { svelte = { - package = pkgs.svelte-language-server; + package = pkgs.nodePackages.svelte-language-server; lspConfig = '' lspconfig.svelte.setup { capabilities = capabilities; @@ -37,7 +38,7 @@ defaultFormat = "prettier"; formats = { prettier = { - package = pkgs.prettier; + package = pkgs.nodePackages.prettier; }; biome = { @@ -54,14 +55,21 @@ package = pkg; config = { cmd = getExe pkg; - required_files = [ - "eslint.config.js" - "eslint.config.mjs" - ".eslintrc" - ".eslintrc.json" - ".eslintrc.js" - ".eslintrc.yml" - ]; + # HACK: change if nvim-lint gets a dynamic enable thing + parser = mkLuaInline '' + function(output, bufnr, cwd) + local markers = { "eslint.config.js", "eslint.config.mjs", + ".eslintrc", ".eslintrc.json", ".eslintrc.js", ".eslintrc.yml", } + for _, filename in ipairs(markers) do + local path = vim.fs.joinpath(cwd, filename) + if vim.loop.fs_stat(path) then + return require("lint.linters.eslint_d").parser(output, bufnr, cwd) + end + end + + return {} + end + ''; }; }; }; @@ -76,7 +84,7 @@ in { }; lsp = { - enable = mkEnableOption "Svelte LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Svelte LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Svelte LSP server to use"; diff --git a/modules/plugins/languages/tailwind.nix b/modules/plugins/languages/tailwind.nix index fbe707ba..594f6d9d 100644 --- a/modules/plugins/languages/tailwind.nix +++ b/modules/plugins/languages/tailwind.nix @@ -35,7 +35,7 @@ in { enable = mkEnableOption "Tailwindcss language support"; lsp = { - enable = mkEnableOption "Tailwindcss LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Tailwindcss LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Tailwindcss LSP server to use"; diff --git a/modules/plugins/languages/terraform.nix b/modules/plugins/languages/terraform.nix index 095da072..33bb9357 100644 --- a/modules/plugins/languages/terraform.nix +++ b/modules/plugins/languages/terraform.nix @@ -20,7 +20,7 @@ in { }; lsp = { - enable = mkEnableOption "Terraform LSP support (terraform-ls)" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Terraform LSP support (terraform-ls)" // {default = config.vim.languages.enableLSP;}; package = mkOption { description = "terraform-ls package"; diff --git a/modules/plugins/languages/ts.nix b/modules/plugins/languages/ts.nix index 6064da98..ffab265b 100644 --- a/modules/plugins/languages/ts.nix +++ b/modules/plugins/languages/ts.nix @@ -9,6 +9,7 @@ inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.meta) getExe; + inherit (lib.generators) mkLuaInline; inherit (lib.types) enum either listOf package str bool; inherit (lib.nvim.lua) expToLua toLuaObject; inherit (lib.nvim.types) mkGrammarOption diagnostics mkPluginSetupOption; @@ -75,7 +76,7 @@ defaultFormat = "prettier"; formats = { prettier = { - package = pkgs.prettier; + package = pkgs.nodePackages.prettier; }; prettierd = { @@ -90,21 +91,27 @@ # TODO: specify packages defaultDiagnosticsProvider = ["eslint_d"]; diagnosticsProviders = { - eslint_d = let - pkg = pkgs.eslint_d; - in { - package = pkg; - config = { + eslint_d = { + package = pkgs.eslint_d; + config = let + pkg = pkgs.eslint_d; + in { cmd = getExe pkg; - required_files = [ - "eslint.config.js" - "eslint.config.mjs" - ".eslintrc" - ".eslintrc.cjs" - ".eslintrc.json" - ".eslintrc.js" - ".eslintrc.yml" - ]; + # HACK: change if nvim-lint gets a dynamic enable thing + parser = mkLuaInline '' + function(output, bufnr, cwd) + local markers = { "eslint.config.js", "eslint.config.mjs", + ".eslintrc", ".eslintrc.json", ".eslintrc.js", ".eslintrc.yml", } + for _, filename in ipairs(markers) do + local path = vim.fs.joinpath(cwd, filename) + if vim.loop.fs_stat(path) then + return require("lint.linters.eslint_d").parser(output, bufnr, cwd) + end + end + + return {} + end + ''; }; }; }; @@ -120,7 +127,7 @@ in { }; lsp = { - enable = mkEnableOption "Typescript/Javascript LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Typescript/Javascript LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Typescript/Javascript LSP server to use"; @@ -214,9 +221,10 @@ in { linters_by_ft.typescript = cfg.extraDiagnostics.types; linters_by_ft.typescriptreact = cfg.extraDiagnostics.types; - linters = - mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;}) - cfg.extraDiagnostics.types); + linters = mkMerge (map (name: { + ${name}.cmd = getExe diagnosticsProviders.${name}.package; + }) + cfg.extraDiagnostics.types); }; }) diff --git a/modules/plugins/languages/typst.nix b/modules/plugins/languages/typst.nix index 77f0e504..8c65ae2c 100644 --- a/modules/plugins/languages/typst.nix +++ b/modules/plugins/languages/typst.nix @@ -7,10 +7,9 @@ inherit (lib.options) mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; - inherit (lib.types) nullOr enum either attrsOf listOf package str bool int; + inherit (lib.types) nullOr enum either attrsOf listOf package str; inherit (lib.attrsets) attrNames; inherit (lib.meta) getExe; - inherit (lib.nvim.binds) mkMappingOption mkKeymap; inherit (lib.nvim.lua) expToLua toLuaObject; inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption; inherit (lib.nvim.dag) entryAnywhere; @@ -57,8 +56,11 @@ }; }; - defaultFormat = "typstyle"; + defaultFormat = "typstfmt"; formats = { + typstfmt = { + package = pkgs.typstfmt; + }; # https://github.com/Enter-tainer/typstyle typstyle = { package = pkgs.typstyle; @@ -74,7 +76,7 @@ in { }; lsp = { - enable = mkEnableOption "Typst LSP support (typst-lsp)" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Typst LSP support (typst-lsp)" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Typst LSP server to use"; @@ -148,57 +150,6 @@ in { }; }; }; - typst-concealer = { - enable = mkEnableOption '' - [typst-concealer]: https://github.com/PartyWumpus/typst-concealer - - Inline typst preview for Neovim via [typst-concealer] - ''; - - mappings = { - toggleConcealing = mkMappingOption "Enable typst-concealer in buffer" "TT"; - }; - - setupOpts = mkPluginSetupOption "typst-concealer" { - do_diagnostics = mkOption { - type = nullOr bool; - default = !cfg.lsp.enable; - description = "Should typst-concealer provide diagnostics on error?"; - }; - color = mkOption { - type = nullOr str; - default = null; - example = "rgb(\"#f012be\")"; - description = "What color should typst-concealer render text/stroke with? (only applies when styling_type is 'colorscheme')"; - }; - enabled_by_default = mkOption { - type = nullOr bool; - default = null; - description = "Should typst-concealer conceal newly opened buffers by default?"; - }; - styling_type = mkOption { - type = nullOr (enum ["simple" "none" "colorscheme"]); - default = null; - description = "What kind of styling should typst-concealer apply to your typst?"; - }; - ppi = mkOption { - type = nullOr int; - default = null; - description = "What PPI should typst render at. Plugin default is 300, typst's normal default is 144."; - }; - typst_location = mkOption { - type = str; - default = getExe pkgs.typst; - description = "Where should typst-concealer look for your typst binary?"; - example = ''lib.getExe pkgs.typst''; - }; - conceal_in_normal = mkOption { - type = nullOr bool; - default = null; - description = "Should typst-concealer still conceal when the normal mode cursor goes over a line."; - }; - }; - }; }; }; config = mkIf cfg.enable (mkMerge [ @@ -229,18 +180,5 @@ in { require("typst-preview").setup(${toLuaObject cfg.extensions.typst-preview-nvim.setupOpts}) ''; }) - - (mkIf cfg.extensions.typst-concealer.enable { - vim.lazy.plugins.typst-concealer = { - event = "BufRead *.typ"; - package = "typst-concealer"; - setupModule = "typst-concealer"; - setupOpts = cfg.extensions.typst-concealer.setupOpts; - - keys = [ - (mkKeymap "n" cfg.extensions.typst-concealer.mappings.toggleConcealing "lua require('typst-concealer').toggle_buf()" {desc = "Toggle typst-concealer in buffer";}) - ]; - }; - }) ]); } diff --git a/modules/plugins/languages/vala.nix b/modules/plugins/languages/vala.nix index 220926d0..da65a372 100644 --- a/modules/plugins/languages/vala.nix +++ b/modules/plugins/languages/vala.nix @@ -50,7 +50,7 @@ in { }; lsp = { - enable = mkEnableOption "Vala LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Vala LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { description = "Vala LSP server to use"; type = enum (attrNames servers); diff --git a/modules/plugins/languages/wgsl.nix b/modules/plugins/languages/wgsl.nix index 44323092..7c8a1016 100644 --- a/modules/plugins/languages/wgsl.nix +++ b/modules/plugins/languages/wgsl.nix @@ -26,7 +26,7 @@ cmd = ${ if isList cfg.lsp.package then expToLua cfg.lsp.package - else "{'${cfg.lsp.package}/bin/wgsl-analyzer'}" + else "{'${cfg.lsp.package}/bin/wgsl_analyzer'}" } } ''; @@ -42,7 +42,7 @@ in { }; lsp = { - enable = mkEnableOption "WGSL LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "WGSL LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = enum (attrNames servers); diff --git a/modules/plugins/languages/yaml.nix b/modules/plugins/languages/yaml.nix index a75a921f..c84b17cd 100644 --- a/modules/plugins/languages/yaml.nix +++ b/modules/plugins/languages/yaml.nix @@ -28,7 +28,7 @@ defaultServer = "yaml-language-server"; servers = { yaml-language-server = { - package = pkgs.yaml-language-server; + package = pkgs.nodePackages.yaml-language-server; lspConfig = '' @@ -55,7 +55,7 @@ in { }; lsp = { - enable = mkEnableOption "YAML LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "YAML LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = enum (attrNames servers); diff --git a/modules/plugins/languages/zig.nix b/modules/plugins/languages/zig.nix index 89307eab..2aa0e2b6 100644 --- a/modules/plugins/languages/zig.nix +++ b/modules/plugins/languages/zig.nix @@ -72,7 +72,7 @@ in { }; lsp = { - enable = mkEnableOption "Zig LSP support" // {default = config.vim.lsp.enable;}; + enable = mkEnableOption "Zig LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { type = enum (attrNames servers); diff --git a/modules/plugins/lsp/config.nix b/modules/plugins/lsp/config.nix index e7b67c8e..3702ac5f 100644 --- a/modules/plugins/lsp/config.nix +++ b/modules/plugins/lsp/config.nix @@ -6,7 +6,6 @@ }: let inherit (lib.generators) mkLuaInline; inherit (lib.modules) mkIf; - inherit (lib.lists) optional; inherit (lib.strings) optionalString; inherit (lib.trivial) boolToString; inherit (lib.nvim.binds) addDescriptionsToMappings; @@ -15,10 +14,7 @@ usingNvimCmp = config.vim.autocomplete.nvim-cmp.enable; usingBlinkCmp = config.vim.autocomplete.blink-cmp.enable; self = import ./module.nix {inherit config lib pkgs;}; - conformCfg = config.vim.formatter.conform-nvim; - conformFormatOnSave = conformCfg.enable && conformCfg.setupOpts.format_on_save != null; - augroup = "nvf_lsp"; mappingDefinitions = self.options.vim.lsp.mappings; mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; mkBinding = binding: action: @@ -33,59 +29,24 @@ in { sourcePlugins = ["cmp-nvim-lsp"]; }; - augroups = [{name = augroup;}]; autocmds = - (optional cfg.inlayHints.enable { - group = augroup; - event = ["LspAttach"]; - desc = "LSP on-attach enable inlay hints autocmd"; - callback = mkLuaInline '' - function(event) - local bufnr = event.buf - local client = vim.lsp.get_client_by_id(event.data.client_id) - if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then - vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = bufnr }), { bufnr = bufnr }) - end - end - ''; - }) - ++ (optional (!conformFormatOnSave) { - group = augroup; - event = ["BufWritePre"]; - desc = "LSP on-attach create format on save autocmd"; - callback = mkLuaInline '' - function(ev) - if vim.b.disableFormatSave or not vim.g.formatsave then - return - end - - local bufnr = ev.buf - - ${optionalString cfg.null-ls.enable '' - -- prefer null_ls formatter - do - local clients = vim.lsp.get_clients({ - bufnr = bufnr, - name = "null-ls", - method = "textDocument/formatting", - }) - if clients[1] then - vim.lsp.buf.format({ bufnr = bufnr, id = clients[1].id }) - return + if cfg.inlayHints.enable + then [ + { + callback = mkLuaInline '' + function(event) + local bufnr = event.buf + local client = vim.lsp.get_client_by_id(event.data.client_id) + if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = bufnr }), { bufnr = bufnr }) end end - ''} - - local clients = vim.lsp.get_clients({ - bufnr = bufnr, - method = "textDocument/formatting", - }) - if clients[1] then - vim.lsp.buf.format({ bufnr = bufnr, id = clients[1].id }) - end - end - ''; - }); + ''; + desc = "LSP on-attach enable inlay hints autocmd"; + event = ["LspAttach"]; + } + ] + else []; pluginRC.lsp-setup = '' vim.g.formatsave = ${boolToString cfg.formatOnSave}; @@ -113,9 +74,60 @@ in { ${mkBinding mappings.toggleFormatOnSave "function() vim.b.disableFormatSave = not vim.b.disableFormatSave end"} end + -- Enable formatting + local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) + + format_callback = function(client, bufnr) + if vim.g.formatsave then + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + ${ + if config.vim.lsp.null-ls.enable + then '' + if vim.b.disableFormatSave then + return + end + + local function is_null_ls_formatting_enabled(bufnr) + local file_type = vim.api.nvim_buf_get_option(bufnr, "filetype") + local generators = require("null-ls.generators").get_available( + file_type, + require("null-ls.methods").internal.FORMATTING + ) + return #generators > 0 + end + + if is_null_ls_formatting_enabled(bufnr) then + vim.lsp.buf.format({ + bufnr = bufnr, + filter = function(client) + return client.name == "null-ls" + end + }) + else + vim.lsp.buf.format({ + bufnr = bufnr, + }) + end + '' + else " + vim.lsp.buf.format({ + bufnr = bufnr, + }) + " + } + end, + }) + end + end + ${optionalString config.vim.ui.breadcrumbs.enable ''local navic = require("nvim-navic")''} default_on_attach = function(client, bufnr) attach_keymaps(client, bufnr) + format_callback(client, bufnr) ${optionalString config.vim.ui.breadcrumbs.enable '' -- let navic attach to buffers if client.server_capabilities.documentSymbolProvider then @@ -126,7 +138,6 @@ in { local capabilities = vim.lsp.protocol.make_client_capabilities() ${optionalString usingNvimCmp '' - -- TODO(horriblename): migrate to vim.lsp.config['*'] -- HACK: copied from cmp-nvim-lsp. If we ever lazy load lspconfig we -- should re-evaluate whether we can just use `default_capabilities` capabilities = { diff --git a/modules/plugins/lsp/lspconfig/config.nix b/modules/plugins/lsp/lspconfig/config.nix index 16cba488..1c1f0a0a 100644 --- a/modules/plugins/lsp/lspconfig/config.nix +++ b/modules/plugins/lsp/lspconfig/config.nix @@ -14,6 +14,8 @@ in { config = mkIf cfg.lspconfig.enable (mkMerge [ { vim = { + lsp.enable = true; + startPlugins = ["nvim-lspconfig"]; pluginRC.lspconfig = entryAfter ["lsp-setup"] '' diff --git a/modules/plugins/lsp/module.nix b/modules/plugins/lsp/module.nix index 6b63d725..f408d873 100644 --- a/modules/plugins/lsp/module.nix +++ b/modules/plugins/lsp/module.nix @@ -3,12 +3,11 @@ inherit (lib.nvim.binds) mkMappingOption; in { options.vim.lsp = { + enable = mkEnableOption "LSP, also enabled automatically through null-ls and lspconfig options"; formatOnSave = mkEnableOption "format on save"; - inlayHints = { enable = mkEnableOption "inlay hints"; }; - mappings = { goToDefinition = mkMappingOption "Go to definition" diff --git a/modules/plugins/lsp/null-ls/null-ls.nix b/modules/plugins/lsp/null-ls/null-ls.nix index ba02df9c..3a10bac7 100644 --- a/modules/plugins/lsp/null-ls/null-ls.nix +++ b/modules/plugins/lsp/null-ls/null-ls.nix @@ -1,6 +1,6 @@ {lib, ...}: let inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) listOf str int nullOr; + inherit (lib.types) attrsOf str int nullOr; inherit (lib.generators) mkLuaInline; inherit (lib.nvim.types) luaInline mkPluginSetupOption; inherit (lib.nvim.config) batchRenameOptions; @@ -70,7 +70,7 @@ in { }; sources = mkOption { - type = nullOr (listOf luaInline); + type = nullOr (attrsOf luaInline); default = null; description = "Sources for null-ls to register"; }; diff --git a/modules/plugins/lsp/otter/config.nix b/modules/plugins/lsp/otter/config.nix index 85f24c70..b1b045d8 100644 --- a/modules/plugins/lsp/otter/config.nix +++ b/modules/plugins/lsp/otter/config.nix @@ -15,6 +15,13 @@ mappings = addDescriptionsToMappings cfg.otter-nvim.mappings mappingDefinitions; in { config = mkIf (cfg.enable && cfg.otter-nvim.enable) { + warnings = [ + # TODO: remove warning when we update to nvim 0.11 + (mkIf config.vim.utility.ccc.enable '' + ccc and otter occasionally have small conflicts that will disappear with nvim 0.11. + In the meantime, otter handles it by throwing a warning, but both plugins will work. + '') + ]; vim = { startPlugins = ["otter-nvim"]; diff --git a/modules/plugins/lsp/otter/otter.nix b/modules/plugins/lsp/otter/otter.nix index 2ccc393b..0b0c2c4c 100644 --- a/modules/plugins/lsp/otter/otter.nix +++ b/modules/plugins/lsp/otter/otter.nix @@ -25,6 +25,15 @@ in { }; }; buffers = { + set_filetype = mkOption { + type = bool; + default = false; + description = '' + if set to true, the filetype of the otterbuffers will be set. Other wide only + the autocommand of lspconfig that attaches the language server will be + executed without setting the filetype + ''; + }; write_to_disk = mkOption { type = bool; default = false; diff --git a/modules/plugins/mini/ai/ai.nix b/modules/plugins/mini/ai/ai.nix index d4c43941..d0da31d7 100644 --- a/modules/plugins/mini/ai/ai.nix +++ b/modules/plugins/mini/ai/ai.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/align/align.nix b/modules/plugins/mini/align/align.nix index 56a68c1f..96c82947 100644 --- a/modules/plugins/mini/align/align.nix +++ b/modules/plugins/mini/align/align.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/animate/animate.nix b/modules/plugins/mini/animate/animate.nix index d35f7461..fb17c0bd 100644 --- a/modules/plugins/mini/animate/animate.nix +++ b/modules/plugins/mini/animate/animate.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/basics/basics.nix b/modules/plugins/mini/basics/basics.nix index 9bac3b1c..e855caa6 100644 --- a/modules/plugins/mini/basics/basics.nix +++ b/modules/plugins/mini/basics/basics.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/bracketed/bracketed.nix b/modules/plugins/mini/bracketed/bracketed.nix index 454328e9..3152f046 100644 --- a/modules/plugins/mini/bracketed/bracketed.nix +++ b/modules/plugins/mini/bracketed/bracketed.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/bufremove/bufremove.nix b/modules/plugins/mini/bufremove/bufremove.nix index 82819df9..5e04609d 100644 --- a/modules/plugins/mini/bufremove/bufremove.nix +++ b/modules/plugins/mini/bufremove/bufremove.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/clue/clue.nix b/modules/plugins/mini/clue/clue.nix index 825aa697..50d33c65 100644 --- a/modules/plugins/mini/clue/clue.nix +++ b/modules/plugins/mini/clue/clue.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/colors/colors.nix b/modules/plugins/mini/colors/colors.nix index b65c86aa..7d56cd49 100644 --- a/modules/plugins/mini/colors/colors.nix +++ b/modules/plugins/mini/colors/colors.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; in { options.vim.mini.colors = { diff --git a/modules/plugins/mini/comment/comment.nix b/modules/plugins/mini/comment/comment.nix index e3e03833..c46c0a58 100644 --- a/modules/plugins/mini/comment/comment.nix +++ b/modules/plugins/mini/comment/comment.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/completion/completion.nix b/modules/plugins/mini/completion/completion.nix index 7c70e5e2..fc36ed84 100644 --- a/modules/plugins/mini/completion/completion.nix +++ b/modules/plugins/mini/completion/completion.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/cursorword/config.nix b/modules/plugins/mini/cursorword/config.nix deleted file mode 100644 index bc5ab2cb..00000000 --- a/modules/plugins/mini/cursorword/config.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.dag) entryAnywhere; - inherit (lib.nvim.lua) toLuaObject; - - cfg = config.vim.mini.cursorword; -in { - vim = mkIf cfg.enable { - startPlugins = ["mini-cursorword"]; - - pluginRC.mini-ai = entryAnywhere '' - require("mini.cursorword").setup(${toLuaObject cfg.setupOpts}) - ''; - }; -} diff --git a/modules/plugins/mini/cursorword/cursorword.nix b/modules/plugins/mini/cursorword/cursorword.nix deleted file mode 100644 index f2b8903a..00000000 --- a/modules/plugins/mini/cursorword/cursorword.nix +++ /dev/null @@ -1,9 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; - inherit (lib.nvim.types) mkPluginSetupOption; -in { - options.vim.mini.cursorword = { - enable = mkEnableOption "mini.cursorword"; - setupOpts = mkPluginSetupOption "mini.cursorword" {}; - }; -} diff --git a/modules/plugins/mini/cursorword/default.nix b/modules/plugins/mini/cursorword/default.nix deleted file mode 100644 index f0aae6c8..00000000 --- a/modules/plugins/mini/cursorword/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./cursorword.nix - ./config.nix - ]; -} diff --git a/modules/plugins/mini/default.nix b/modules/plugins/mini/default.nix index f066b172..8f035285 100644 --- a/modules/plugins/mini/default.nix +++ b/modules/plugins/mini/default.nix @@ -11,7 +11,6 @@ ./colors ./comment ./completion - ./cursorword ./diff ./doc ./extra diff --git a/modules/plugins/mini/diff/diff.nix b/modules/plugins/mini/diff/diff.nix index 9df564a4..4a72fda2 100644 --- a/modules/plugins/mini/diff/diff.nix +++ b/modules/plugins/mini/diff/diff.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/doc/doc.nix b/modules/plugins/mini/doc/doc.nix index 2b302475..8699fa11 100644 --- a/modules/plugins/mini/doc/doc.nix +++ b/modules/plugins/mini/doc/doc.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/extra/extra.nix b/modules/plugins/mini/extra/extra.nix index f0c4133e..c697fdd6 100644 --- a/modules/plugins/mini/extra/extra.nix +++ b/modules/plugins/mini/extra/extra.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; in { options.vim.mini.extra = { diff --git a/modules/plugins/mini/files/files.nix b/modules/plugins/mini/files/files.nix index 80d68589..4ba5fcc4 100644 --- a/modules/plugins/mini/files/files.nix +++ b/modules/plugins/mini/files/files.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/fuzzy/fuzzy.nix b/modules/plugins/mini/fuzzy/fuzzy.nix index 64a3f42f..977a1763 100644 --- a/modules/plugins/mini/fuzzy/fuzzy.nix +++ b/modules/plugins/mini/fuzzy/fuzzy.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/git/git.nix b/modules/plugins/mini/git/git.nix index 6c64bbf7..ebbf4282 100644 --- a/modules/plugins/mini/git/git.nix +++ b/modules/plugins/mini/git/git.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/hipatterns/hipatterns.nix b/modules/plugins/mini/hipatterns/hipatterns.nix index 943ad9e5..019626cf 100644 --- a/modules/plugins/mini/hipatterns/hipatterns.nix +++ b/modules/plugins/mini/hipatterns/hipatterns.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/hues/hues.nix b/modules/plugins/mini/hues/hues.nix index 060d0eca..13de5116 100644 --- a/modules/plugins/mini/hues/hues.nix +++ b/modules/plugins/mini/hues/hues.nix @@ -1,5 +1,10 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption mkOption; + inherit (lib.strings) hasPrefix; inherit (lib.nvim.types) mkPluginSetupOption; inherit (lib.nvim.types) hexColor; in { diff --git a/modules/plugins/mini/icons/icons.nix b/modules/plugins/mini/icons/icons.nix index 4f201cc1..27928a93 100644 --- a/modules/plugins/mini/icons/icons.nix +++ b/modules/plugins/mini/icons/icons.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/jump/jump.nix b/modules/plugins/mini/jump/jump.nix index 5a6b0d08..1e16ae7a 100644 --- a/modules/plugins/mini/jump/jump.nix +++ b/modules/plugins/mini/jump/jump.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/jump2d/jump2d.nix b/modules/plugins/mini/jump2d/jump2d.nix index f1e76570..59f7c2ba 100644 --- a/modules/plugins/mini/jump2d/jump2d.nix +++ b/modules/plugins/mini/jump2d/jump2d.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/map/map.nix b/modules/plugins/mini/map/map.nix index 31735d08..2d42fe70 100644 --- a/modules/plugins/mini/map/map.nix +++ b/modules/plugins/mini/map/map.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/misc/misc.nix b/modules/plugins/mini/misc/misc.nix index 4e82dd6f..1f4dcf55 100644 --- a/modules/plugins/mini/misc/misc.nix +++ b/modules/plugins/mini/misc/misc.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/move/move.nix b/modules/plugins/mini/move/move.nix index 4e598126..ec9eccac 100644 --- a/modules/plugins/mini/move/move.nix +++ b/modules/plugins/mini/move/move.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/operators/operators.nix b/modules/plugins/mini/operators/operators.nix index 1401e939..639229bf 100644 --- a/modules/plugins/mini/operators/operators.nix +++ b/modules/plugins/mini/operators/operators.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/pairs/pairs.nix b/modules/plugins/mini/pairs/pairs.nix index da599cc5..926c93d3 100644 --- a/modules/plugins/mini/pairs/pairs.nix +++ b/modules/plugins/mini/pairs/pairs.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/pick/pick.nix b/modules/plugins/mini/pick/pick.nix index 159d007b..d8ccbfd5 100644 --- a/modules/plugins/mini/pick/pick.nix +++ b/modules/plugins/mini/pick/pick.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/sessions/sessions.nix b/modules/plugins/mini/sessions/sessions.nix index 61f235a8..0ceba595 100644 --- a/modules/plugins/mini/sessions/sessions.nix +++ b/modules/plugins/mini/sessions/sessions.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/snippets/snippets.nix b/modules/plugins/mini/snippets/snippets.nix index 05109e87..d7f0355c 100644 --- a/modules/plugins/mini/snippets/snippets.nix +++ b/modules/plugins/mini/snippets/snippets.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/splitjoin/splitjoin.nix b/modules/plugins/mini/splitjoin/splitjoin.nix index b553bbb3..44b2f23f 100644 --- a/modules/plugins/mini/splitjoin/splitjoin.nix +++ b/modules/plugins/mini/splitjoin/splitjoin.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/starter/starter.nix b/modules/plugins/mini/starter/starter.nix index d0041382..df550857 100644 --- a/modules/plugins/mini/starter/starter.nix +++ b/modules/plugins/mini/starter/starter.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/statusline/statusline.nix b/modules/plugins/mini/statusline/statusline.nix index 23f43af1..2c850ae1 100644 --- a/modules/plugins/mini/statusline/statusline.nix +++ b/modules/plugins/mini/statusline/statusline.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/surround/surround.nix b/modules/plugins/mini/surround/surround.nix index 537293a8..726bf3f9 100644 --- a/modules/plugins/mini/surround/surround.nix +++ b/modules/plugins/mini/surround/surround.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/tabline/tabline.nix b/modules/plugins/mini/tabline/tabline.nix index ae924e27..936273db 100644 --- a/modules/plugins/mini/tabline/tabline.nix +++ b/modules/plugins/mini/tabline/tabline.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/test/test.nix b/modules/plugins/mini/test/test.nix index f6ca5f51..28135a26 100644 --- a/modules/plugins/mini/test/test.nix +++ b/modules/plugins/mini/test/test.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/trailspace/trailspace.nix b/modules/plugins/mini/trailspace/trailspace.nix index 5d540d41..19757bfb 100644 --- a/modules/plugins/mini/trailspace/trailspace.nix +++ b/modules/plugins/mini/trailspace/trailspace.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/mini/visits/visits.nix b/modules/plugins/mini/visits/visits.nix index 5f9c6c1f..c01e8ebf 100644 --- a/modules/plugins/mini/visits/visits.nix +++ b/modules/plugins/mini/visits/visits.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/plugins/notes/neorg/config.nix b/modules/plugins/notes/neorg/config.nix index f8c18ea9..fab5079d 100644 --- a/modules/plugins/notes/neorg/config.nix +++ b/modules/plugins/notes/neorg/config.nix @@ -35,7 +35,7 @@ in { (mkIf cfg.treesitter.enable { vim.treesitter.enable = true; - vim.treesitter.grammars = [cfg.treesitter.norgPackage cfg.treesitter.norgMetaPackage]; + vim.treesitter.grammars = [cfg.treesitter.norgPackage]; }) ]); } diff --git a/modules/plugins/notes/neorg/neorg.nix b/modules/plugins/notes/neorg/neorg.nix index 684519c9..6b5cf18e 100644 --- a/modules/plugins/notes/neorg/neorg.nix +++ b/modules/plugins/notes/neorg/neorg.nix @@ -4,9 +4,9 @@ pkgs, ... }: let - inherit (lib.options) mkPackageOption mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption; inherit (lib.types) submodule listOf str; - inherit (lib.nvim.types) mkPluginSetupOption; + inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption; in { options.vim.notes.neorg = { enable = mkEnableOption '' @@ -44,12 +44,7 @@ in { treesitter = { enable = mkEnableOption "Neorg treesitter" // {default = config.vim.languages.enableTreesitter;}; - norgPackage = mkPackageOption pkgs ["norg-meta treesitter"] { - default = ["tree-sitter-grammars" "tree-sitter-norg"]; - }; - norgMetaPackage = mkPackageOption pkgs ["norg-meta treesitter"] { - default = ["tree-sitter-grammars" "tree-sitter-norg-meta"]; - }; + norgPackage = mkGrammarOption pkgs "norg"; }; }; } diff --git a/modules/plugins/repl/conjure/conjure.nix b/modules/plugins/repl/conjure/conjure.nix deleted file mode 100644 index 83481af2..00000000 --- a/modules/plugins/repl/conjure/conjure.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: let - inherit (lib.options) mkEnableOption; - inherit (lib.modules) mkIf; - - cfg = config.vim.repl.conjure; -in { - options.vim.repl.conjure = { - enable = mkEnableOption "Conjure"; - }; - - config = mkIf cfg.enable { - vim.startPlugins = [pkgs.vimPlugins.conjure]; - }; -} diff --git a/modules/plugins/repl/conjure/default.nix b/modules/plugins/repl/conjure/default.nix deleted file mode 100644 index de8c3190..00000000 --- a/modules/plugins/repl/conjure/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ./conjure.nix - ]; -} diff --git a/modules/plugins/repl/default.nix b/modules/plugins/repl/default.nix deleted file mode 100644 index ba03a390..00000000 --- a/modules/plugins/repl/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ./conjure - ]; -} diff --git a/modules/plugins/session/nvim-session-manager/nvim-session-manager.nix b/modules/plugins/session/nvim-session-manager/nvim-session-manager.nix index 8390d1ce..e60a4a5d 100644 --- a/modules/plugins/session/nvim-session-manager/nvim-session-manager.nix +++ b/modules/plugins/session/nvim-session-manager/nvim-session-manager.nix @@ -77,7 +77,7 @@ in { }; autoload_mode = mkOption { - type = either (enum ["Disabled" "CurrentDir" "LastSession" "GitSession"]) luaInline; + type = either (enum ["Disabled" "CurrentDir" "LastSession"]) luaInline; # Variable 'sm' is defined in the pluginRC of nvim-session-manager. The # definition is as follows: `local sm = require('session_manager.config')` apply = val: @@ -88,7 +88,7 @@ in { description = '' Define what to do when Neovim is started without arguments. - Takes either one of `"Disabled"`, `"CurrentDir"`, `"LastSession"`, `"GitSession"` in which case the value + Takes either one of `"Disabled"`, `"CurrentDir"`, `"LastSession` in which case the value will be inserted into `sm.AutoloadMode.`, or an inline Lua value. ''; }; diff --git a/modules/plugins/snippets/luasnip/config.nix b/modules/plugins/snippets/luasnip/config.nix index 48b1f40d..11be37c1 100644 --- a/modules/plugins/snippets/luasnip/config.nix +++ b/modules/plugins/snippets/luasnip/config.nix @@ -1,48 +1,11 @@ { config, lib, - pkgs, ... }: let inherit (lib.modules) mkIf; - inherit (lib.lists) replicate; - inherit - (lib.strings) - optionalString - removeSuffix - concatStrings - stringAsChars - concatMapStringsSep - ; - inherit (lib.attrsets) mapAttrsToList; - inherit (pkgs) writeTextFile; cfg = config.vim.snippets.luasnip; - # LuaSnip freaks out if the indentation is wrong in snippets - indent = n: s: let - indentString = concatStrings (replicate n " "); - sep = "\n" + indentString; - in - indentString - + stringAsChars (c: - if c == "\n" - then sep - else c) (removeSuffix "\n" s); - customSnipmateSnippetFiles = - mapAttrsToList ( - name: value: - writeTextFile { - name = "${name}.snippets"; - text = - concatMapStringsSep "\n" (x: '' - snippet ${x.trigger} ${x.description} - ${indent 2 x.body} - '') - value; - destination = "/snippets/${name}.snippets"; - } - ) - cfg.customSnippets.snipmate; in { config = mkIf cfg.enable { vim = { @@ -56,19 +19,11 @@ in { after = cfg.loaders; }; - startPlugins = cfg.providers ++ customSnipmateSnippetFiles; + startPlugins = cfg.providers; autocomplete.nvim-cmp = mkIf config.vim.autocomplete.nvim-cmp.enable { sources = {luasnip = "[LuaSnip]";}; sourcePlugins = ["cmp-luasnip"]; }; - snippets.luasnip.loaders = '' - ${optionalString ( - cfg.customSnippets.snipmate != {} - ) "require('luasnip.loaders.from_snipmate').lazy_load()"} - ${optionalString ( - config.vim.autocomplete.nvim-cmp.enable || config.vim.autocomplete.blink-cmp.friendly-snippets.enable - ) "require('luasnip.loaders.from_vscode').lazy_load()"} - ''; }; }; } diff --git a/modules/plugins/snippets/luasnip/luasnip.nix b/modules/plugins/snippets/luasnip/luasnip.nix index 601dc109..6b189b61 100644 --- a/modules/plugins/snippets/luasnip/luasnip.nix +++ b/modules/plugins/snippets/luasnip/luasnip.nix @@ -1,6 +1,6 @@ {lib, ...}: let inherit (lib.options) mkEnableOption mkOption literalExpression literalMD; - inherit (lib.types) listOf lines submodule str attrsOf; + inherit (lib.types) listOf lines; inherit (lib.nvim.types) pluginType mkPluginSetupOption; in { options.vim.snippets.luasnip = { @@ -36,61 +36,5 @@ in { setupOpts = mkPluginSetupOption "LuaSnip" { enable_autosnippets = mkEnableOption "autosnippets"; }; - - customSnippets.snipmate = mkOption { - type = attrsOf ( - listOf (submodule { - options = { - trigger = mkOption { - type = str; - description = '' - The trigger used to activate this snippet. - ''; - }; - description = mkOption { - type = str; - default = ""; - description = '' - The description shown for this snippet. - ''; - }; - body = mkOption { - type = str; - description = '' - [LuaSnip Documentation]: https://github.com/L3MON4D3/LuaSnip#add-snippets - The body of the snippet in SnipMate format (see [LuaSnip Documentation]). - ''; - }; - }; - }) - ); - default = {}; - example = '' - { - all = [ - { - trigger = "if"; - body = "if $1 else $2"; - } - ]; - nix = [ - { - trigger = "mkOption"; - body = ''' - mkOption { - type = $1; - default = $2; - description = $3; - example = $4; - } - '''; - } - ]; - } - ''; - description = '' - A list containing custom snippets in the SnipMate format to be loaded by LuaSnip. - ''; - }; }; } diff --git a/modules/plugins/spellcheck/vim-dirtytalk/config.nix b/modules/plugins/spellcheck/vim-dirtytalk/config.nix index 7fd32d61..51ccfb81 100644 --- a/modules/plugins/spellcheck/vim-dirtytalk/config.nix +++ b/modules/plugins/spellcheck/vim-dirtytalk/config.nix @@ -17,7 +17,7 @@ in { # like to append programming to spelllangs as soon as # possible while the plugin is enabled and the state # directory can be found. - luaConfigRC.vim-dirtytalk = entryAfter ["spellcheck"] '' + pluginRC.vim-dirtytalk = entryAfter ["spellcheck"] '' -- If Neovim can find (or access) the state directory -- then append "programming" wordlist from vim-dirtytalk -- to spelllang table. If path cannot be found, display diff --git a/modules/plugins/statusline/lualine/config.nix b/modules/plugins/statusline/lualine/config.nix index 010b6cd2..b8334bfd 100644 --- a/modules/plugins/statusline/lualine/config.nix +++ b/modules/plugins/statusline/lualine/config.nix @@ -14,28 +14,17 @@ bCfg = config.vim.ui.breadcrumbs; in { config = mkMerge [ - { - vim.statusline.lualine.setupOpts.extensions = - (lib.optionals config.vim.filetree.nvimTree.enable ["nvim-tree"]) - ++ (lib.optionals config.vim.filetree.neo-tree.enable ["neo-tree"]) - ++ (lib.optionals config.vim.utility.snacks-nvim.enable [ - { - # same extensions as nerdtree / neo-tree - # https://github.com/nvim-lualine/lualine.nvim/blob/master/lua/lualine/extensions/nerdtree.lua - # https://github.com/nvim-lualine/lualine.nvim/blob/master/lua/lualine/extensions/neo-tree.lua - sections = { - lualine_a = mkLuaInline '' - { - function() - return vim.fn.fnamemodify(vim.fn.getcwd(), ":~") - end, - } - ''; - }; - filetypes = ["snacks_picker_list" "snacks_picker_input"]; - } - ]); - } + (mkIf config.vim.filetree.nvimTree.enable { + vim.statusline.lualine.setupOpts = { + extensions = ["nvim-tree"]; + }; + }) + + (mkIf config.vim.filetree.neo-tree.enable { + vim.statusline.lualine.setupOpts = { + extensions = ["neo-tree"]; + }; + }) (mkIf (bCfg.enable && bCfg.lualine.winbar.enable && bCfg.source == "nvim-navic") { vim.statusline.lualine.setupOpts = { @@ -63,8 +52,8 @@ in { options = { icons_enabled = mkDefault cfg.icons.enable; theme = mkDefault cfg.theme; - component_separators = mkDefault cfg.componentSeparator; - section_separators = mkDefault cfg.sectionSeparator; + component_separators = mkDefault [cfg.componentSeparator.left cfg.componentSeparator.right]; + section_separators = mkDefault [cfg.sectionSeparator.left cfg.sectionSeparator.right]; globalstatus = mkDefault cfg.globalStatus; refresh = mkDefault cfg.refresh; always_divide_middle = mkDefault cfg.alwaysDivideMiddle; diff --git a/modules/plugins/tabline/nvim-bufferline/config.nix b/modules/plugins/tabline/nvim-bufferline/config.nix index 250425d3..965f81f0 100644 --- a/modules/plugins/tabline/nvim-bufferline/config.nix +++ b/modules/plugins/tabline/nvim-bufferline/config.nix @@ -15,7 +15,7 @@ in { config = mkIf cfg.enable { vim = { startPlugins = [ - "bufferline-nvim" + "nvim-bufferline-lua" "bufdelete-nvim" ]; diff --git a/modules/plugins/tabline/nvim-bufferline/nvim-bufferline.nix b/modules/plugins/tabline/nvim-bufferline/nvim-bufferline.nix index 384899de..997c9ba3 100644 --- a/modules/plugins/tabline/nvim-bufferline/nvim-bufferline.nix +++ b/modules/plugins/tabline/nvim-bufferline/nvim-bufferline.nix @@ -3,7 +3,7 @@ lib, ... }: let - inherit (lib.options) mkOption mkEnableOption literalExpression literalMD; + inherit (lib.options) mkOption mkEnableOption literalExpression; inherit (lib.types) enum bool either nullOr str int listOf attrs; inherit (lib.generators) mkLuaInline; inherit (lib.nvim.binds) mkMappingOption; @@ -24,28 +24,17 @@ in { movePrevious = mkMappingOption "Move previous buffer" "bmp"; }; - setupOpts = mkPluginSetupOption "bufferline-nvim" { + setupOpts = mkPluginSetupOption "Bufferline-nvim" { highlights = mkOption { type = either attrs luaInline; default = if config.vim.theme.enable && config.vim.theme.name == "catppuccin" then - mkLuaInline '' - (function() - local integration = require("catppuccin.special.bufferline") - return (integration.get_theme or integration.get)() - end)() + mkLuaInline + '' + require("catppuccin.groups.integrations.bufferline").get() '' else {}; - defaultText = literalMD '' - ```lua - (function() - local integration = require("catppuccin.special.bufferline") - return (integration.get_theme or integration.get)() - end)() - ``` - if the active theme is Catppuccin, `{}` otherwise. - ''; description = '' Overrides the highlight groups of bufferline. @@ -70,11 +59,10 @@ in { themable = mkOption { type = bool; default = true; - example = false; description = '' Whether or not to allow highlight groups to be overridden. - While `false`, bufferline.nvim sets highlights as default. + While false, bufferline.nvim sets highlights as default. ''; }; @@ -121,7 +109,7 @@ in { type = nullOr str; default = null; description = '' - The indicator icon to use for the current buffer. + The indicatotor icon to use for the current buffer. ::: {.warning} This **must** be omitted while style is not `icon` @@ -284,12 +272,20 @@ in { offsets = mkOption { type = listOf attrs; - default = map (filetype: { - inherit filetype; - text = "File Explorer"; - highlight = "Directory"; - separator = true; - }) ["NvimTree" "neo-tree" "snacks_layout_box"]; + default = [ + { + filetype = "NvimTree"; + text = "File Explorer"; + highlight = "Directory"; + separator = true; + } + { + filetype = "neo-tree"; + text = "File Explorer"; + highlight = "Directory"; + separator = true; + } + ]; description = "The windows to offset bufferline above, see `:help bufferline-offset`"; }; diff --git a/modules/plugins/theme/supported-themes.nix b/modules/plugins/theme/supported-themes.nix index 6419ba14..2b427871 100644 --- a/modules/plugins/theme/supported-themes.nix +++ b/modules/plugins/theme/supported-themes.nix @@ -2,9 +2,7 @@ config, lib, }: let - inherit (lib.strings) optionalString splitString; - inherit (lib.attrsets) mapCartesianProduct; - inherit (lib.lists) intersectLists; + inherit (lib.strings) optionalString; inherit (lib.trivial) boolToString warnIf; inherit (lib.nvim.lua) toLuaObject; in { @@ -23,14 +21,9 @@ in { ''; }; onedark = { - setup = { - style ? "dark", - transparent, - ... - }: '' + setup = {style ? "dark", ...}: '' -- OneDark theme require('onedark').setup { - transparent = ${boolToString transparent}, style = "${style}" } require('onedark').load() @@ -46,18 +39,6 @@ in { }: '' require('tokyonight').setup { transparent = ${boolToString transparent}; - styles = { - sidebars = ${ - if transparent - then ''"transparent"'' - else ''"dark"'' - }, - floats = ${ - if transparent - then ''"transparent"'' - else ''"dark"'' - }, - }, } vim.cmd[[colorscheme tokyonight-${style}]] ''; @@ -83,9 +64,6 @@ in { require('catppuccin').setup { flavour = "${style}", transparent_background = ${boolToString transparent}, - float = { - transparent = ${boolToString transparent}, - }, term_colors = true, integrations = { nvimtree = { @@ -117,7 +95,7 @@ in { -- setup must be called before loading vim.cmd.colorscheme "catppuccin" ''; - styles = ["auto" "latte" "frappe" "macchiato" "mocha"]; + styles = ["latte" "frappe" "macchiato" "mocha"]; }; oxocarbon = { @@ -234,85 +212,4 @@ in { ''; styles = ["dark" "light" "dark_dimmed" "dark_default" "light_default" "dark_high_contrast" "light_high_contrast" "dark_colorblind" "light_colorblind" "dark_tritanopia" "light_tritanopia"]; }; - - solarized = let - backgrounds = ["light" "dark"]; - palettes = ["solarized" "selenized"]; - variants = ["spring" "summer" "autumn" "winter"]; - in { - setup = { - style ? "", # use plugin defaults - transparent ? false, - ... - }: let - parts = splitString "-" style; - detect = list: let - intersection = intersectLists parts list; - in - if intersection == [] - then null - else builtins.head intersection; - background = detect backgrounds; - palette = detect palettes; - variant = detect variants; - in '' - -- Solarized theme - require('solarized').setup { - transparent = { - enabled = ${boolToString transparent}, - }, - ${optionalString (palette != null) ''palette = "${palette}",''} - ${optionalString (variant != null) ''variant = "${variant}",''} - } - ${optionalString (background != null) ''vim.opt.background = "${background}"''} - vim.cmd.colorscheme "solarized" - ''; - styles = let - joinWithDashes = parts: lib.concatStringsSep "-" (lib.filter (s: s != "") parts); - combinations = mapCartesianProduct ({ - bg, - pal, - var, - }: - joinWithDashes [bg pal var]) { - bg = [""] ++ backgrounds; - pal = [""] ++ palettes; - var = [""] ++ variants; - }; - in - lib.filter (s: s != "") combinations; - }; - - solarized-osaka = { - setup = {transparent ? false, ...}: '' - require("solarized-osaka").setup({ - transparent = ${boolToString transparent}, - styles = { - comments = { italic = false }, - keywords = { italic = false }, - } - }) - - vim.cmd.colorscheme("solarized-osaka") - ''; - }; - - everforest = { - setup = { - style ? "medium", - transparent ? false, - ... - }: '' - vim.g.everforest_background = "${style}" - vim.g.everforest_transparent_background = ${ - if transparent - then "1" - else "0" - } - - vim.cmd.colorscheme("everforest") - ''; - - styles = ["hard" "medium" "soft"]; - }; } diff --git a/modules/plugins/treesitter/default.nix b/modules/plugins/treesitter/default.nix index ea8ac9cd..a859f3af 100644 --- a/modules/plugins/treesitter/default.nix +++ b/modules/plugins/treesitter/default.nix @@ -2,7 +2,6 @@ imports = [ # treesitter extras ./ts-context - ./ts-textobjects ./treesitter.nix ./config.nix diff --git a/modules/plugins/treesitter/treesitter.nix b/modules/plugins/treesitter/treesitter.nix index d761d6b3..d88cc1a9 100644 --- a/modules/plugins/treesitter/treesitter.nix +++ b/modules/plugins/treesitter/treesitter.nix @@ -25,7 +25,7 @@ in { type = listOf package; default = []; example = literalExpression '' - with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ + pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ regex kdl ]; @@ -33,7 +33,6 @@ in { description = '' List of treesitter grammars to install. For grammars to be installed properly, you must use grammars from `pkgs.vimPlugins.nvim-treesitter.builtGrammars`. - You can use `pkgs.vimPlugins.nvim-treesitter.allGrammars` to install all grammars. For languages already supported by nvf, you may use {option}`vim.language..treesitter` options, which will automatically add @@ -107,7 +106,7 @@ in { -- Disable slow treesitter highlight for large files function(lang, buf) local max_filesize = 1000 * 1024 -- 1MB - local ok, stats = pcall(vim.uv.fs_stat, vim.api.nvim_buf_get_name(buf)) + local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) if ok and stats and stats.size > max_filesize then return true end diff --git a/modules/plugins/treesitter/ts-textobjects/config.nix b/modules/plugins/treesitter/ts-textobjects/config.nix deleted file mode 100644 index 7a9239d1..00000000 --- a/modules/plugins/treesitter/ts-textobjects/config.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.lua) toLuaObject; - inherit (lib.nvim.dag) entryAfter; - - inherit (config.vim) treesitter; - cfg = treesitter.textobjects; -in { - config = mkIf (treesitter.enable && cfg.enable) { - vim = { - startPlugins = ["nvim-treesitter-textobjects"]; - - # set up treesitter-textobjects after Treesitter, whose config we're adding to. - pluginRC.treesitter-textobjects = entryAfter ["treesitter"] '' - require("nvim-treesitter.configs").setup({textobjects = ${toLuaObject cfg.setupOpts}}) - ''; - }; - }; -} diff --git a/modules/plugins/treesitter/ts-textobjects/default.nix b/modules/plugins/treesitter/ts-textobjects/default.nix deleted file mode 100644 index d0ae48a3..00000000 --- a/modules/plugins/treesitter/ts-textobjects/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./textobjects.nix - ./config.nix - ]; -} diff --git a/modules/plugins/treesitter/ts-textobjects/textobjects.nix b/modules/plugins/treesitter/ts-textobjects/textobjects.nix deleted file mode 100644 index 07e72135..00000000 --- a/modules/plugins/treesitter/ts-textobjects/textobjects.nix +++ /dev/null @@ -1,21 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; - inherit (lib.nvim.types) mkPluginSetupOption; -in { - options.vim.treesitter.textobjects = { - enable = mkEnableOption "Treesitter textobjects"; - setupOpts = - mkPluginSetupOption "treesitter-textobjects" {} - // { - example = { - select = { - enable = true; - lookahead = true; - keymaps = { - af = "@function.outer"; - }; - }; - }; - }; - }; -} diff --git a/modules/plugins/ui/breadcrumbs/breadcrumbs.nix b/modules/plugins/ui/breadcrumbs/breadcrumbs.nix index 72351ecc..2faee6c8 100644 --- a/modules/plugins/ui/breadcrumbs/breadcrumbs.nix +++ b/modules/plugins/ui/breadcrumbs/breadcrumbs.nix @@ -4,7 +4,7 @@ ... }: let inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) nullOr listOf enum bool str int; + inherit (lib.types) nullOr listOf enum bool str int either; inherit (lib.modules) mkRenamedOptionModule; inherit (lib.nvim.types) mkPluginSetupOption borderType; mkSimpleIconOption = default: @@ -74,7 +74,7 @@ in { ::: {.note} This will pass `draw_empty` to the `nvim_navic` winbar component, which causes the component to be drawn even - if it's empty. + if it's empty ::: ''; }; @@ -86,163 +86,145 @@ in { close = mkOption { type = str; default = ""; - description = "Close and return the cursor to its original location."; + description = "keybinding to close Navbuddy UI"; }; nextSibling = mkOption { type = str; default = "j"; - description = "Navigate to the next sibling node."; + description = "keybinding to navigate to the next sibling node"; }; previousSibling = mkOption { type = str; default = "k"; - description = "Navigate to the previous sibling node."; + description = "keybinding to navigate to the previous sibling node"; }; parent = mkOption { type = str; default = "h"; - description = "Navigate to the parent node."; + description = "keybinding to navigate to the parent node"; }; children = mkOption { type = str; default = "l"; - description = "Navigate to the child node."; + description = "keybinding to navigate to the child node"; }; root = mkOption { type = str; default = "0"; - description = "Navigate to the root node."; + description = "keybinding to navigate to the root node"; }; visualName = mkOption { type = str; default = "v"; - description = "Select the name visually."; + description = "visual selection of name"; }; visualScope = mkOption { type = str; default = "V"; - description = "Select the scope visually."; + description = "visual selection of scope"; }; yankName = mkOption { type = str; default = "y"; - description = "Yank the name to system clipboard."; + description = "yank the name to system clipboard"; }; yankScope = mkOption { type = str; default = "Y"; - description = "Yank the scope to system clipboard."; + description = "yank the scope to system clipboard"; }; insertName = mkOption { type = str; default = "i"; - description = "Insert at the start of name."; + description = "insert at start of name"; }; insertScope = mkOption { type = str; default = "I"; - description = "Insert at the start of scope."; + description = "insert at start of scope"; }; appendName = mkOption { type = str; default = "a"; - description = "Insert at the end of name."; + description = "insert at end of name"; }; appendScope = mkOption { type = str; default = "A"; - description = "Insert at the end of scope."; + description = "insert at end of scope"; }; rename = mkOption { type = str; default = "r"; - description = "Rename the node."; + description = "rename the node"; }; delete = mkOption { type = str; default = "d"; - description = "Delete the node."; + description = "delete the node"; }; foldCreate = mkOption { type = str; default = "f"; - description = "Create a new fold of the node."; + description = "create a new fold"; }; foldDelete = mkOption { type = str; default = "F"; - description = "Delete the current fold of the node."; + description = "delete the current fold"; }; comment = mkOption { type = str; default = "c"; - description = "Comment the node."; + description = "comment the node"; }; select = mkOption { type = str; default = ""; - description = "Goto the node."; + description = "goto selected symbol"; }; moveDown = mkOption { type = str; default = "J"; - description = "Move the node down."; + description = "move focused node down"; }; moveUp = mkOption { type = str; default = "K"; - description = "Move the node up."; - }; - - togglePreview = mkOption { - type = str; - default = "s"; - description = "Toggle the preview."; - }; - - vsplit = mkOption { - type = str; - default = ""; - description = "Open the node in a vertical split."; - }; - - hsplit = mkOption { - type = str; - default = ""; - description = "Open the node in a horizontal split."; + description = "move focused node up"; }; telescope = mkOption { type = str; default = "t"; - description = "Start fuzzy finder at the current level."; + description = "fuzzy finder at current level"; }; help = mkOption { type = str; default = "g?"; - description = "Open the mappings help window."; + description = "open mapping help window"; }; }; @@ -250,7 +232,7 @@ in { useDefaultMappings = mkOption { type = bool; default = true; - description = "Add the default Navbuddy keybindings in addition to the keybinding added by this module."; + description = "use default Navbuddy keybindings (disables user-specified keybinds)"; }; window = { @@ -260,13 +242,13 @@ in { border = mkOption { type = borderType; default = config.vim.ui.borders.globalStyle; - description = "The border style to use."; + description = "border style to use"; }; scrolloff = mkOption { type = nullOr int; default = null; - description = "The scrolloff value within a navbuddy window."; + description = "Scrolloff value within navbuddy window"; }; sections = { @@ -283,7 +265,7 @@ in { border = mkOption { type = borderType; default = config.vim.ui.borders.globalStyle; - description = "The border style to use for the left section of the Navbuddy UI."; + description = "border style to use for the left section of Navbuddy UI"; }; }; @@ -300,7 +282,7 @@ in { border = mkOption { type = borderType; default = config.vim.ui.borders.globalStyle; - description = "The border style to use for the middle section of the Navbuddy UI."; + description = "border style to use for the middle section of Navbuddy UI"; }; }; @@ -310,13 +292,13 @@ in { border = mkOption { type = borderType; default = config.vim.ui.borders.globalStyle; - description = "The border style to use for the right section of the Navbuddy UI."; + description = "border style to use for the right section of Navbuddy UI"; }; preview = mkOption { type = enum ["leaf" "always" "never"]; default = "leaf"; - description = "The display mode of the preview on the right section."; + description = "display mode of the preview on the right section"; }; }; }; @@ -335,13 +317,13 @@ in { auto_attach = mkOption { type = bool; default = true; - description = "Whether to attach to LSP server manually."; + description = "Whether to attach to LSP server manually"; }; preference = mkOption { type = nullOr (listOf str); default = null; - description = "The preference list ranking LSP servers."; + description = "list of lsp server names in order of preference"; }; }; @@ -349,25 +331,25 @@ in { followNode = mkOption { type = bool; default = true; - description = "Whether to keep the current node in focus in the source buffer."; + description = "keep the current node in focus on the source buffer"; }; highlight = mkOption { type = bool; default = true; - description = "Whether to highlight the currently focused node in the source buffer."; + description = "highlight the currently focused node"; }; reorient = mkOption { type = enum ["smart" "top" "mid" "none"]; default = "smart"; - description = "The mode for reorienting the source buffer after moving nodes."; + description = "reorient buffer after changing nodes"; }; scrolloff = mkOption { type = nullOr int; default = null; - description = "The scrolloff value in the source buffer when Navbuddy is open."; + description = "scrolloff value when navbuddy is open"; }; }; diff --git a/modules/plugins/ui/breadcrumbs/config.nix b/modules/plugins/ui/breadcrumbs/config.nix index 324501a5..747a7773 100644 --- a/modules/plugins/ui/breadcrumbs/config.nix +++ b/modules/plugins/ui/breadcrumbs/config.nix @@ -64,11 +64,6 @@ in { ${cfg.navbuddy.mappings.moveDown} = mkLuaInline "actions.move_down()"; ${cfg.navbuddy.mappings.moveUp} = mkLuaInline "actions.move_up()"; - ${cfg.navbuddy.mappings.togglePreview} = mkLuaInline "actions.toggle_preview()"; - - ${cfg.navbuddy.mappings.vsplit} = mkLuaInline "actions.vsplit()"; - ${cfg.navbuddy.mappings.hsplit} = mkLuaInline "actions.hsplit()"; - ${cfg.navbuddy.mappings.telescope} = mkLuaInline '' actions.telescope({ layout_strategy = "horizontal", diff --git a/modules/plugins/ui/colorful-menu-nvim/colorful-menu-nvim.nix b/modules/plugins/ui/colorful-menu-nvim/colorful-menu-nvim.nix deleted file mode 100644 index 075b3d9a..00000000 --- a/modules/plugins/ui/colorful-menu-nvim/colorful-menu-nvim.nix +++ /dev/null @@ -1,9 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; - inherit (lib.nvim.types) mkPluginSetupOption; -in { - options.vim.ui.colorful-menu-nvim = { - enable = mkEnableOption "treesitter highlighted completion menus [colorful-menu.nvim]"; - setupOpts = mkPluginSetupOption "colorful-menu-nvim" {}; - }; -} diff --git a/modules/plugins/ui/colorful-menu-nvim/config.nix b/modules/plugins/ui/colorful-menu-nvim/config.nix deleted file mode 100644 index da300274..00000000 --- a/modules/plugins/ui/colorful-menu-nvim/config.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.dag) entryAnywhere; - inherit (lib.nvim.lua) toLuaObject; - - cfg = config.vim.ui.colorful-menu-nvim; -in { - config = mkIf cfg.enable { - vim = { - startPlugins = ["colorful-menu-nvim"]; - pluginRC.colorful-menu-nvim = entryAnywhere '' - require("colorful-menu").setup(${toLuaObject cfg.setupOpts}) - ''; - }; - }; -} diff --git a/modules/plugins/ui/colorful-menu-nvim/default.nix b/modules/plugins/ui/colorful-menu-nvim/default.nix deleted file mode 100644 index 198e844e..00000000 --- a/modules/plugins/ui/colorful-menu-nvim/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./config.nix - ./colorful-menu-nvim.nix - ]; -} diff --git a/modules/plugins/ui/default.nix b/modules/plugins/ui/default.nix index d7d7592f..e9489e9b 100644 --- a/modules/plugins/ui/default.nix +++ b/modules/plugins/ui/default.nix @@ -1,16 +1,14 @@ { imports = [ - ./borders - ./breadcrumbs - ./colorful-menu-nvim - ./nvim-highlight-colors - ./colorizer - ./fastaction - ./illuminate - ./modes ./noice - ./notifications + ./modes ./nvim-ufo + ./notifications ./smartcolumn + ./colorizer + ./illuminate + ./breadcrumbs + ./borders + ./fastaction ]; } diff --git a/modules/plugins/ui/nvim-highlight-colors/config.nix b/modules/plugins/ui/nvim-highlight-colors/config.nix deleted file mode 100644 index 117c6922..00000000 --- a/modules/plugins/ui/nvim-highlight-colors/config.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.dag) entryAnywhere; - inherit (lib.nvim.lua) toLuaObject; - - cfg = config.vim.ui.nvim-highlight-colors; -in { - config = mkIf cfg.enable { - vim = { - startPlugins = [ - "nvim-highlight-colors" - ]; - - # enable display of 24-bit RGB colors in neovim - # via the terminal. This is required for nvim-highlight-colors - # to display arbitrary RGB highlights. - options.termguicolors = true; - - pluginRC.nvim-highlight-colors = entryAnywhere '' - require('nvim-highlight-colors').setup(${toLuaObject cfg.setupOpts}) - ''; - }; - }; -} diff --git a/modules/plugins/ui/nvim-highlight-colors/default.nix b/modules/plugins/ui/nvim-highlight-colors/default.nix deleted file mode 100644 index 85e03a89..00000000 --- a/modules/plugins/ui/nvim-highlight-colors/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./nvim-highlight-colors.nix - ./config.nix - ]; -} diff --git a/modules/plugins/ui/nvim-highlight-colors/nvim-highlight-colors.nix b/modules/plugins/ui/nvim-highlight-colors/nvim-highlight-colors.nix deleted file mode 100644 index c5ccc854..00000000 --- a/modules/plugins/ui/nvim-highlight-colors/nvim-highlight-colors.nix +++ /dev/null @@ -1,71 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) attrsOf enum nullOr submodule bool str; - inherit (lib.modules) mkRenamedOptionModule; - inherit (lib.nvim.types) mkPluginSetupOption; - inherit (lib.nvim.config) mkBool; -in { - options.vim.ui.nvim-highlight-colors = { - enable = mkEnableOption "color highlighting [nvim-highlight-colors.lua]"; - - setupOpts = mkPluginSetupOption "nvim-highlight-colors" { - render = mkOption { - type = enum ["background" "foreground" "virtual"]; - default = "background"; - example = "virtual"; - description = '' - Style to render color highlighting with. - - ::: {.note} - Each render style works as follows: - - 'background' sets the background - highlight of the matched color string - to the RGB color it describes. - - - 'foreground' sets the foreground - highlight of the matched color string - to the RGB color it describes. - - - 'virtual' displays the matched color - with virtual text alongside the color - string in the buffer. Virtual text can - be configured to display the color in - various ways, i.e custom virtual symbol - (via `virtual_symbol`) positioning - relative to string, suffix/prefix, etc. - ::: - ''; - }; - - virtual_symbol_position = mkOption { - type = enum ["inline" "eol" "eow"]; - default = "inline"; - example = "eol"; - description = '' - Where to render the virtual symbol in - relation to the color string. - - ::: {.note} - Each render style works as follows: - - 'inline' render virtual text inline, - similar to the style of VSCode color - hinting. - - - 'eol' render virtual text at the end - of the line which the color string - occurs (last column). Recommended to - set `virtual_symbol_suffix` to an - empty string when used. - - - 'eow' render virtual text at the end - of the word where the color string - occurs. Recommended to set - `virtual_symbol_prefix` to a single - space for padding and the suffix to - an empty string for no padding. - ::: - ''; - }; - }; - }; -} diff --git a/modules/plugins/utility/binds/default.nix b/modules/plugins/utility/binds/default.nix index 43666cc9..229423b8 100644 --- a/modules/plugins/utility/binds/default.nix +++ b/modules/plugins/utility/binds/default.nix @@ -2,6 +2,5 @@ _: { imports = [ ./which-key ./cheatsheet - ./hardtime ]; } diff --git a/modules/plugins/utility/binds/hardtime/config.nix b/modules/plugins/utility/binds/hardtime/config.nix deleted file mode 100644 index 66b1f063..00000000 --- a/modules/plugins/utility/binds/hardtime/config.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.lua) toLuaObject; - inherit (lib.nvim.dag) entryAnywhere; - - cfg = config.vim.binds.hardtime-nvim; -in { - config = mkIf cfg.enable { - vim = { - startPlugins = ["hardtime-nvim"]; - - pluginRC.hardtime = entryAnywhere '' - require("hardtime").setup(${toLuaObject cfg.setupOpts}) - ''; - }; - }; -} diff --git a/modules/plugins/utility/binds/hardtime/default.nix b/modules/plugins/utility/binds/hardtime/default.nix deleted file mode 100644 index 89aa11d3..00000000 --- a/modules/plugins/utility/binds/hardtime/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./hardtime.nix - ./config.nix - ]; -} diff --git a/modules/plugins/utility/binds/hardtime/hardtime.nix b/modules/plugins/utility/binds/hardtime/hardtime.nix deleted file mode 100644 index b671ddcd..00000000 --- a/modules/plugins/utility/binds/hardtime/hardtime.nix +++ /dev/null @@ -1,10 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; - inherit (lib.nvim.types) mkPluginSetupOption; -in { - options.vim.binds.hardtime-nvim = { - enable = mkEnableOption "hardtime helper for no repeat keybinds"; - - setupOpts = mkPluginSetupOption "hardtime-nvim" {}; - }; -} diff --git a/modules/plugins/utility/binds/which-key/config.nix b/modules/plugins/utility/binds/which-key/config.nix index 7d5ef6c1..68dbbfbf 100644 --- a/modules/plugins/utility/binds/which-key/config.nix +++ b/modules/plugins/utility/binds/which-key/config.nix @@ -10,7 +10,7 @@ inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.binds.whichKey; - register = mapAttrsToList (n: v: lib.lists.optional (v != null) (mkLuaInline "{ '${n}', desc = '${v}' }")) cfg.register; + register = mapAttrsToList (n: v: mkLuaInline "{ '${n}', desc = '${v}' }") cfg.register; in { config = mkIf cfg.enable { vim = { diff --git a/modules/plugins/utility/default.nix b/modules/plugins/utility/default.nix index 349fb47a..62b07574 100644 --- a/modules/plugins/utility/default.nix +++ b/modules/plugins/utility/default.nix @@ -15,18 +15,14 @@ ./multicursors ./new-file-template ./nix-develop - ./nvim-biscuits ./oil-nvim ./outline ./preview - ./sleuth - ./smart-splits ./snacks-nvim ./surround ./telescope ./wakatime ./yanky-nvim ./yazi-nvim - ./undotree ]; } diff --git a/modules/plugins/utility/harpoon/harpoon.nix b/modules/plugins/utility/harpoon/harpoon.nix index 6f5b8d0a..4478c938 100644 --- a/modules/plugins/utility/harpoon/harpoon.nix +++ b/modules/plugins/utility/harpoon/harpoon.nix @@ -39,7 +39,7 @@ in { type = luaInline; default = mkLuaInline '' function() - return vim.uv.cwd() + return vim.loop.cwd() end ''; description = '' diff --git a/modules/plugins/utility/images/default.nix b/modules/plugins/utility/images/default.nix index 1f398aa8..5b876e0a 100644 --- a/modules/plugins/utility/images/default.nix +++ b/modules/plugins/utility/images/default.nix @@ -1,6 +1,5 @@ { imports = [ ./image-nvim - ./img-clip ]; } diff --git a/modules/plugins/utility/images/image-nvim/image-nvim.nix b/modules/plugins/utility/images/image-nvim/image-nvim.nix index f6998f55..5fa7fdb9 100644 --- a/modules/plugins/utility/images/image-nvim/image-nvim.nix +++ b/modules/plugins/utility/images/image-nvim/image-nvim.nix @@ -9,16 +9,14 @@ in { setupOpts = mkPluginSetupOption "image.nvim" { backend = mkOption { - type = enum ["kitty" "ueberzug" "sixel"]; + type = enum ["kitty" "ueberzug"]; default = "ueberzug"; description = '' The backend to use for rendering images. - * `kitty` - best in class, works great and is very snappy. Recommended - by upstream. - * `ueberzug` - backed by ueberzugpp, supports any terminal, + - kitty - best in class, works great and is very snappy + - ueberzug - backed by ueberzugpp, supports any terminal, but has lower performance - * `sixel` - uses the Sixel graphics protocol, widely supported by many terminals ''; }; diff --git a/modules/plugins/utility/images/img-clip/config.nix b/modules/plugins/utility/images/img-clip/config.nix deleted file mode 100644 index cadd815f..00000000 --- a/modules/plugins/utility/images/img-clip/config.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.dag) entryAnywhere; - inherit (lib.nvim.lua) toLuaObject; - - cfg = config.vim.utility.images.img-clip; -in { - config = mkIf cfg.enable { - vim = { - startPlugins = [ - "img-clip" - ]; - - pluginRC.image-nvim = entryAnywhere '' - require("img-clip").setup(${toLuaObject cfg.setupOpts}) - ''; - }; - }; -} diff --git a/modules/plugins/utility/images/img-clip/default.nix b/modules/plugins/utility/images/img-clip/default.nix deleted file mode 100644 index 70c15604..00000000 --- a/modules/plugins/utility/images/img-clip/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./config.nix - ./img-clip.nix - ]; -} diff --git a/modules/plugins/utility/images/img-clip/img-clip.nix b/modules/plugins/utility/images/img-clip/img-clip.nix deleted file mode 100644 index ce07feae..00000000 --- a/modules/plugins/utility/images/img-clip/img-clip.nix +++ /dev/null @@ -1,11 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; - - inherit (lib.nvim.types) mkPluginSetupOption; -in { - options.vim.utility.images.img-clip = { - enable = mkEnableOption "img-clip to paste images into any markup language"; - - setupOpts = mkPluginSetupOption "img-clip" {}; - }; -} diff --git a/modules/plugins/utility/leetcode-nvim/leetcode-nvim.nix b/modules/plugins/utility/leetcode-nvim/leetcode-nvim.nix index feb61570..f71da02a 100644 --- a/modules/plugins/utility/leetcode-nvim/leetcode-nvim.nix +++ b/modules/plugins/utility/leetcode-nvim/leetcode-nvim.nix @@ -1,6 +1,6 @@ {lib, ...}: let inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) enum str; + inherit (lib.types) enum str bool; inherit (lib.generators) mkLuaInline; inherit (lib.nvim.types) mkPluginSetupOption luaInline; in { diff --git a/modules/plugins/utility/motion/flash/config.nix b/modules/plugins/utility/motion/flash/config.nix index 83ddd0b9..3adf0de8 100644 --- a/modules/plugins/utility/motion/flash/config.nix +++ b/modules/plugins/utility/motion/flash/config.nix @@ -5,6 +5,8 @@ }: let inherit (lib.modules) mkIf; inherit (lib.nvim.binds) mkKeymap; + inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.utility.motion.flash-nvim; in { diff --git a/modules/plugins/utility/nvim-biscuits/config.nix b/modules/plugins/utility/nvim-biscuits/config.nix deleted file mode 100644 index a0574aa6..00000000 --- a/modules/plugins/utility/nvim-biscuits/config.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.dag) entryAnywhere; - inherit (lib.nvim.lua) toLuaObject; - cfg = config.vim.utility.nvim-biscuits; -in { - config = mkIf cfg.enable { - vim = { - startPlugins = ["nvim-biscuits"]; - - pluginRC.nvim-biscuits = entryAnywhere '' - require('nvim-biscuits').setup(${toLuaObject cfg.setupOpts}) - ''; - }; - }; -} diff --git a/modules/plugins/utility/nvim-biscuits/default.nix b/modules/plugins/utility/nvim-biscuits/default.nix deleted file mode 100644 index 07ccecb4..00000000 --- a/modules/plugins/utility/nvim-biscuits/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./config.nix - ./nvim-biscuits.nix - ]; -} diff --git a/modules/plugins/utility/nvim-biscuits/nvim-biscuits.nix b/modules/plugins/utility/nvim-biscuits/nvim-biscuits.nix deleted file mode 100644 index 3db7acea..00000000 --- a/modules/plugins/utility/nvim-biscuits/nvim-biscuits.nix +++ /dev/null @@ -1,10 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; - inherit (lib.nvim.types) mkPluginSetupOption; -in { - options.vim.utility.nvim-biscuits = { - enable = mkEnableOption "a Neovim port of Assorted Biscuits [nvim-biscuits]"; - - setupOpts = mkPluginSetupOption "nvim-biscuits" {}; - }; -} diff --git a/modules/plugins/utility/sleuth/config.nix b/modules/plugins/utility/sleuth/config.nix deleted file mode 100644 index d25cc140..00000000 --- a/modules/plugins/utility/sleuth/config.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - cfg = config.vim.utility.sleuth; -in { - vim.startPlugins = mkIf cfg.enable ["vim-sleuth"]; -} diff --git a/modules/plugins/utility/sleuth/default.nix b/modules/plugins/utility/sleuth/default.nix deleted file mode 100644 index 04cb4158..00000000 --- a/modules/plugins/utility/sleuth/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./config.nix - ./sleuth.nix - ]; -} diff --git a/modules/plugins/utility/sleuth/sleuth.nix b/modules/plugins/utility/sleuth/sleuth.nix deleted file mode 100644 index a86d414d..00000000 --- a/modules/plugins/utility/sleuth/sleuth.nix +++ /dev/null @@ -1,7 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; -in { - options.vim.utility.sleuth.enable = mkEnableOption '' - automatically adjusting options such as `shiftwidth` or `expandtab`, using `vim-sleuth` - ''; -} diff --git a/modules/plugins/utility/smart-splits/config.nix b/modules/plugins/utility/smart-splits/config.nix deleted file mode 100644 index 82c43bac..00000000 --- a/modules/plugins/utility/smart-splits/config.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ - config, - options, - lib, - ... -}: let - inherit (lib.modules) mkIf; - - cfg = config.vim.utility.smart-splits; - inherit (options.vim.utility.smart-splits) keymaps; - mkSmartSplitKey = act: let - key = cfg.keymaps.${act}; - in - lib.optional (key != null) { - inherit key; - desc = keymaps.${act}.description; - action = ''function() require('smart-splits').${act}() end''; - mode = "n"; - lua = true; - }; -in { - config = mkIf cfg.enable { - vim = { - lazy.plugins.smart-splits = { - package = "smart-splits"; - setupModule = "smart-splits"; - inherit (cfg) setupOpts; - - # plugin needs to be loaded right after startup so that the multiplexer detects vim running in the pane - event = ["DeferredUIEnter"]; - - keys = lib.flatten [ - (mkSmartSplitKey "resize_left") - (mkSmartSplitKey "resize_down") - (mkSmartSplitKey "resize_up") - (mkSmartSplitKey "resize_right") - (mkSmartSplitKey "move_cursor_left") - (mkSmartSplitKey "move_cursor_down") - (mkSmartSplitKey "move_cursor_up") - (mkSmartSplitKey "move_cursor_right") - (mkSmartSplitKey "move_cursor_previous") - (mkSmartSplitKey "swap_buf_left") - (mkSmartSplitKey "swap_buf_down") - (mkSmartSplitKey "swap_buf_up") - (mkSmartSplitKey "swap_buf_right") - ]; - }; - }; - }; -} diff --git a/modules/plugins/utility/smart-splits/default.nix b/modules/plugins/utility/smart-splits/default.nix deleted file mode 100644 index 2b38462e..00000000 --- a/modules/plugins/utility/smart-splits/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./config.nix - ./smart-splits.nix - ]; -} diff --git a/modules/plugins/utility/smart-splits/smart-splits.nix b/modules/plugins/utility/smart-splits/smart-splits.nix deleted file mode 100644 index dd5c55a3..00000000 --- a/modules/plugins/utility/smart-splits/smart-splits.nix +++ /dev/null @@ -1,37 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkOption; - inherit (lib.types) bool; - inherit (lib.nvim.types) mkPluginSetupOption; - inherit (lib.nvim.binds) mkMappingOption; -in { - options.vim.utility.smart-splits = { - enable = mkOption { - type = bool; - default = false; - description = '' - Whether to enable smart-splits.nvim, a Neovim plugin for smart, - seamless, directional navigation and resizing of splits. - - Supports tmux, Wezterm, Kitty, and Zellij multiplexer integrations. - ''; - }; - - setupOpts = mkPluginSetupOption "smart-splits" {}; - - keymaps = { - resize_left = mkMappingOption "Resize Window/Pane Left" ""; - resize_down = mkMappingOption "Resize Window/Pane Down" ""; - resize_up = mkMappingOption "Resize Window/Pane Up" ""; - resize_right = mkMappingOption "Resize Window/Pane Right" ""; - move_cursor_left = mkMappingOption "Focus Window/Pane on the Left" ""; - move_cursor_down = mkMappingOption "Focus Window/Pane Below" ""; - move_cursor_up = mkMappingOption "Focus Window/Pane Above" ""; - move_cursor_right = mkMappingOption "Focus Window/Pane on the Right" ""; - move_cursor_previous = mkMappingOption "Focus Previous Window/Pane" ""; - swap_buf_left = mkMappingOption "Swap Buffer Left" "h"; - swap_buf_down = mkMappingOption "Swap Buffer Down" "j"; - swap_buf_up = mkMappingOption "Swap Buffer Up" "k"; - swap_buf_right = mkMappingOption "Swap Buffer Right" "l"; - }; - }; -} diff --git a/modules/plugins/utility/telescope/config.nix b/modules/plugins/utility/telescope/config.nix index 73d5e517..95f81327 100644 --- a/modules/plugins/utility/telescope/config.nix +++ b/modules/plugins/utility/telescope/config.nix @@ -5,8 +5,8 @@ ... }: let inherit (lib.modules) mkIf; - inherit (lib.strings) optionalString concatMapStringsSep; - inherit (lib.lists) optionals concatLists; + inherit (lib.strings) optionalString; + inherit (lib.lists) optionals; inherit (lib.nvim.binds) pushDownDefault mkKeymap; cfg = config.vim.telescope; @@ -16,7 +16,7 @@ in { config = mkIf cfg.enable { vim = { - startPlugins = ["plenary-nvim"] ++ concatLists (map (x: x.packages) cfg.extensions); + startPlugins = ["plenary-nvim"]; lazy.plugins.telescope = { package = "telescope"; @@ -28,14 +28,11 @@ in { vim.g.loaded_telescope = nil ''; - after = let - enabledExtensions = map (x: x.name) cfg.extensions; - in '' + after = '' local telescope = require("telescope") ${optionalString config.vim.ui.noice.enable "telescope.load_extension('noice')"} ${optionalString config.vim.notify.nvim-notify.enable "telescope.load_extension('notify')"} ${optionalString config.vim.projects.project-nvim.enable "telescope.load_extension('projects')"} - ${concatMapStringsSep "\n" (x: "telescope.load_extension('${x}')") enabledExtensions} ''; cmd = ["Telescope"]; diff --git a/modules/plugins/utility/telescope/telescope.nix b/modules/plugins/utility/telescope/telescope.nix index 9ed6f263..9d63c3cf 100644 --- a/modules/plugins/utility/telescope/telescope.nix +++ b/modules/plugins/utility/telescope/telescope.nix @@ -1,15 +1,12 @@ { - config, pkgs, lib, ... }: let - inherit (lib.options) mkOption mkEnableOption literalExpression; - inherit (lib.types) int str listOf float bool either enum submodule attrsOf anything package; + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.types) int str listOf float bool either enum submodule attrsOf; inherit (lib.nvim.binds) mkMappingOption; inherit (lib.nvim.types) mkPluginSetupOption luaInline; - - cfg = config.vim.telescope; setupOptions = { pickers.find_files.find_command = mkOption { description = "cmd to use for finding files"; @@ -19,6 +16,10 @@ defaults = { vimgrep_arguments = mkOption { + description = '' + Defines the command that will be used for `live_grep` and `grep_string` pickers. + Make sure that color is set to `never` because telescope does not yet interpret color codes. + ''; type = listOf str; default = [ "${pkgs.ripgrep}/bin/rg" @@ -31,169 +32,114 @@ "--hidden" "--no-ignore" ]; - - description = '' - Defines the command that will be used for `live_grep` and `grep_string` pickers. - Make sure that color is set to `never` because telescope does not yet interpret color codes. - ''; }; - - pickers.find_command = mkOption { - type = either (listOf str) luaInline; - default = ["${pkgs.fd}/bin/fd"]; - description = '' - Command to use for finding files. If using an executable from {env}`PATH` then you must - make sure that the package is available in [](#opt-vim.extraPackages). - ''; - }; - prompt_prefix = mkOption { + description = "Shown in front of Telescope's prompt"; type = str; default = "  "; - description = "Shown in front of Telescope's prompt"; }; - selection_caret = mkOption { - type = str; - default = " "; description = "Character(s) to show in front of the current selection"; - }; - - entry_prefix = mkOption { type = str; default = " "; - description = "Prefix in front of each result entry. Current selection not included."; }; - + entry_prefix = mkOption { + description = "Prefix in front of each result entry. Current selection not included."; + type = str; + default = " "; + }; initial_mode = mkOption { + description = "Determines in which mode telescope starts."; type = enum ["insert" "normal"]; default = "insert"; - description = "Determines in which mode telescope starts."; }; - selection_strategy = mkOption { + description = "Determines how the cursor acts after each sort iteration."; type = enum ["reset" "follow" "row" "closest" "none"]; default = "reset"; - description = "Determines how the cursor acts after each sort iteration."; }; - sorting_strategy = mkOption { + description = ''Determines the direction "better" results are sorted towards.''; type = enum ["descending" "ascending"]; default = "ascending"; - description = ''Determines the direction "better" results are sorted towards.''; }; - layout_strategy = mkOption { + description = "Determines the default layout of Telescope pickers. See `:help telescope.layout`."; type = str; default = "horizontal"; - description = "Determines the default layout of Telescope pickers. See `:help telescope.layout`."; }; - layout_config = mkOption { + description = '' + Determines the default configuration values for layout strategies. + See telescope.layout for details of the configurations options for + each strategy. + ''; default = {}; type = submodule { options = { horizontal = { prompt_position = mkOption { - type = enum ["top" "bottom"]; + description = ""; + type = str; default = "top"; - description = "Where to place prompt window"; }; - preview_width = mkOption { + description = ""; type = float; default = 0.55; - description = "Change the width of Telescope's preview window"; }; }; - vertical = { mirror = mkOption { + description = ""; type = bool; default = false; - description = "Flip the location of the results/prompt and preview windows"; }; }; - width = mkOption { + description = ""; type = float; default = 0.8; - description = "How wide to make Telescope's entire layout"; }; - height = mkOption { + description = ""; type = float; default = 0.8; - description = "How tall to make Telescope's entire layout"; }; - preview_cutoff = mkOption { + description = ""; type = int; default = 120; - description = "When lines are less than this value, the preview will be disabled"; }; }; }; - - description = '' - Determines the default configuration values for layout strategies. - See `telescope.layout` for details of the configurations options for - each strategy. - ''; }; - file_ignore_patterns = mkOption { + description = "A table of lua regex that define the files that should be ignored."; type = listOf str; default = ["node_modules" "%.git/" "dist/" "build/" "target/" "result/"]; - description = "File patterns to omit from Telescope results"; }; - - color_devicons = mkEnableOption "colored devicons"; - + color_devicons = mkOption { + description = "Boolean if devicons should be enabled or not."; + type = bool; + default = true; + }; path_display = mkOption { + description = "Determines how file paths are displayed."; type = listOf (enum ["hidden" "tail" "absolute" "smart" "shorten" "truncate"]); default = ["absolute"]; - description = "Determines how file paths are displayed."; }; - set_env = mkOption { - type = attrsOf str; - default = {COLORTERM = "truecolor";}; description = "Set an environment for term_previewer"; + type = attrsOf str; + default = { + COLORTERM = "truecolor"; + }; }; - winblend = mkOption { + description = "pseudo-transparency of keymap hints floating window"; type = int; default = 0; - description = "Pseudo-transparency of keymap hints floating window"; - }; - - extensions = mkOption { - type = attrsOf anything; - default = builtins.foldl' (acc: x: acc // (x.setup or {})) {} cfg.extensions; - description = "Attribute set containing per-extension settings for Telescope"; - }; - }; - }; - - extensionOpts = { - options = { - name = mkOption { - type = str; - description = "Name of the extension, will be used to load it with a `require`"; - }; - - packages = mkOption { - type = listOf (either str package); - default = []; - description = "Package or packages providing the Telescope extension to be loaded."; - }; - - setup = mkOption { - type = attrsOf anything; - default = {}; - example = {fzf = {fuzzy = true;};}; - description = "Named attribute set to be inserted into Telescope's extensions table."; }; }; }; @@ -228,24 +174,5 @@ in { enable = mkEnableOption "telescope.nvim: multi-purpose search and picker utility"; setupOpts = mkPluginSetupOption "Telescope" setupOptions; - - extensions = mkOption { - type = listOf (submodule extensionOpts); - default = []; - example = literalExpression '' - [ - { - name = "fzf"; - packages = [pkgs.vimPlugins.telescope-fzf-native-nvim]; - setup = {fzf = {fuzzy = true;};}; - } - ] - ''; - description = '' - Individual extension configurations containing **name**, **packages** and **setup** - fields to resolve dependencies, handle `load_extension` calls and add the `setup` - table into the `extensions` portion of Telescope's setup table. - ''; - }; }; } diff --git a/modules/plugins/utility/undotree/config.nix b/modules/plugins/utility/undotree/config.nix deleted file mode 100644 index 06343e6a..00000000 --- a/modules/plugins/utility/undotree/config.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - lib, - config, - ... -}: let - inherit (lib.modules) mkIf; - - cfg = config.vim.utility.undotree; -in { - config = mkIf cfg.enable { - vim.lazy.plugins.undotree = { - package = "undotree"; - cmd = [ - "UndotreeToggle" - "UndotreeShow" - "UndotreeHide" - "UndotreePersistUndo" - "UndotreeFocus" - ]; - }; - }; -} diff --git a/modules/plugins/utility/undotree/default.nix b/modules/plugins/utility/undotree/default.nix deleted file mode 100644 index 012d8454..00000000 --- a/modules/plugins/utility/undotree/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./undotree.nix - ./config.nix - ]; -} diff --git a/modules/plugins/utility/undotree/undotree.nix b/modules/plugins/utility/undotree/undotree.nix deleted file mode 100644 index 70846737..00000000 --- a/modules/plugins/utility/undotree/undotree.nix +++ /dev/null @@ -1,7 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; -in { - options.vim.utility.undotree = { - enable = mkEnableOption "undo history visualizer for Vim [undotree]"; - }; -} diff --git a/modules/plugins/utility/yanky-nvim/config.nix b/modules/plugins/utility/yanky-nvim/config.nix index c5e89477..4a74fa75 100644 --- a/modules/plugins/utility/yanky-nvim/config.nix +++ b/modules/plugins/utility/yanky-nvim/config.nix @@ -32,7 +32,7 @@ in { assertions = [ { - assertion = usingShada -> (config.vim.options.shada or "") != ""; + assertion = usingShada && ((config.vim.options.shada or "") == ""); message = '' Yanky.nvim is configured to use 'shada' for the storage backend, but shada is disabled in 'vim.options'. Please re-enable shada, or switch to a different backend. diff --git a/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix b/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix index 2173e3be..109b06f0 100644 --- a/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix +++ b/modules/plugins/visuals/cinnamon-nvim/cinnamon-nvim.nix @@ -1,7 +1,7 @@ {lib, ...}: let inherit (lib.modules) mkRemovedOptionModule; inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) attrs; + inherit (lib.types) submodule attrs attrsOf; inherit (lib.nvim.types) mkPluginSetupOption; in { imports = [ diff --git a/modules/plugins/visuals/nvim-web-devicons/nvim-web-devicons.nix b/modules/plugins/visuals/nvim-web-devicons/nvim-web-devicons.nix index 6ff22614..2796a5e6 100644 --- a/modules/plugins/visuals/nvim-web-devicons/nvim-web-devicons.nix +++ b/modules/plugins/visuals/nvim-web-devicons/nvim-web-devicons.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.modules) mkRenamedOptionModule; inherit (lib.options) mkOption mkEnableOption literalExpression; inherit (lib.types) nullOr attrsOf attrs enum; diff --git a/modules/plugins/visuals/rainbow-delimiters/rainbow-delimiters.nix b/modules/plugins/visuals/rainbow-delimiters/rainbow-delimiters.nix index 4f316cf3..3fed4a64 100644 --- a/modules/plugins/visuals/rainbow-delimiters/rainbow-delimiters.nix +++ b/modules/plugins/visuals/rainbow-delimiters/rainbow-delimiters.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; in { diff --git a/modules/wrapper/build/config.nix b/modules/wrapper/build/config.nix index a1807388..3b147571 100644 --- a/modules/wrapper/build/config.nix +++ b/modules/wrapper/build/config.nix @@ -7,20 +7,23 @@ }: let inherit (pkgs) vimPlugins; inherit (lib.trivial) flip; - inherit (builtins) filter isString hasAttr getAttr; + inherit (builtins) path filter isString; - getPin = flip getAttr (pkgs.callPackages ../../../npins/sources.nix {}); + getPin = name: ((pkgs.callPackages ../../../npins/sources.nix {}) // config.vim.pluginOverrides).${name}; noBuildPlug = pname: let pin = getPin pname; - version = builtins.substring 0 8 pin.revision; - in - pin.outPath.overrideAttrs { - inherit pname version; - name = "${pname}-${version}"; - - passthru.vimPlugin = false; + version = pin.revision or "dirty"; + in { + # vim.lazy.plugins relies on pname, so we only set that here + # version isn't needed for anything, but inherit it anyway for correctness + inherit pname version; + outPath = path { + name = "${pname}-0-unstable-${version}"; + path = pin.outPath; }; + passthru.vimPlugin = false; + }; # build a vim plugin with the given name and arguments # if the plugin is nvim-treesitter, warn the user to use buildTreesitterPlug @@ -48,34 +51,28 @@ doCheck = false; }; - inherit (inputs.self.packages.${pkgs.stdenv.system}) blink-cmp avante-nvim; + inherit (inputs.self.legacyPackages.${pkgs.stdenv.system}) blink-cmp; }; buildConfigPlugins = plugins: map (plug: if (isString plug) - then - if hasAttr plug config.vim.pluginOverrides - then - (let - plugin = config.vim.pluginOverrides.${plug}; - in - if (lib.isType "flake" plugin) - then plugin // {name = plug;} - else plugin) - else pluginBuilders.${plug} or (noBuildPlug plug) + then pluginBuilders.${plug} or (noBuildPlug plug) else plug) ( filter (f: f != null) plugins ); + # built (or "normalized") plugins that are modified + builtStartPlugins = buildConfigPlugins config.vim.startPlugins; + builtOptPlugins = map (package: package // {optional = true;}) ( + buildConfigPlugins config.vim.optPlugins + ); + # Wrap the user's desired (unwrapped) Neovim package with arguments that'll be used to # generate a wrapped Neovim package. - neovim-wrapped = inputs.mnw.lib.wrap {inherit pkgs;} { + neovim-wrapped = inputs.mnw.lib.wrap pkgs { neovim = config.vim.package; - plugins = { - start = buildConfigPlugins config.vim.startPlugins; - opt = buildConfigPlugins config.vim.optPlugins; - }; + plugins = builtStartPlugins ++ builtOptPlugins; appName = "nvf"; extraBinPath = config.vim.extraPackages; initLua = config.vim.builtLuaConfigRC; diff --git a/modules/wrapper/lazy/config.nix b/modules/wrapper/lazy/config.nix index 026b165c..c1bd8829 100644 --- a/modules/wrapper/lazy/config.nix +++ b/modules/wrapper/lazy/config.nix @@ -145,7 +145,7 @@ in { ]; lazy.builtLazyConfig = '' - ${optionalString (length lznSpecs > 0) "require('lz.n').load(${toLuaObject lznSpecs})"} + require('lz.n').load(${toLuaObject lznSpecs}) ${optionalString cfg.enableLznAutoRequire "require('lzn-auto-require').enable()"} ''; }) diff --git a/modules/wrapper/rc/config.nix b/modules/wrapper/rc/config.nix index 77a62d58..ff8a4585 100644 --- a/modules/wrapper/rc/config.nix +++ b/modules/wrapper/rc/config.nix @@ -5,7 +5,7 @@ }: let inherit (builtins) map mapAttrs filter; inherit (lib.attrsets) mapAttrsToList; - inherit (lib.strings) concatLines concatMapStringsSep optionalString; + inherit (lib.strings) concatLines concatMapStringsSep; inherit (lib.trivial) showWarnings; inherit (lib.generators) mkLuaInline; inherit (lib.nvim.dag) entryAfter mkLuarcSection resolveDag entryAnywhere; @@ -72,14 +72,6 @@ in { dag = cfg.luaConfigRC; mapResult = result: concatLines [ - (optionalString (cfg.additionalRuntimePaths != []) '' - vim.opt.runtimepath:append(${toLuaObject cfg.additionalRuntimePaths}) - '') - (optionalString cfg.enableLuaLoader '' - if vim.loader then - vim.loader.enable() - end - '') cfg.luaConfigPre (concatMapStringsSep "\n" mkLuarcSection result) cfg.luaConfigPost diff --git a/modules/wrapper/rc/options.nix b/modules/wrapper/rc/options.nix index c0bb6915..4cd3026f 100644 --- a/modules/wrapper/rc/options.nix +++ b/modules/wrapper/rc/options.nix @@ -1,7 +1,15 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkOption literalMD literalExpression; + inherit (lib.strings) optionalString; inherit (lib.types) str bool int enum attrsOf lines listOf either path submodule anything; inherit (lib.nvim.types) dagOf; + inherit (lib.nvim.lua) listToLuaTable; + + cfg = config.vim; in { options.vim = { enableLuaLoader = mkOption { @@ -11,14 +19,13 @@ in { description = '' [official documentation]: https://neovim.io/doc/user/lua.html#vim.loader.enable() - Whether to enable the experimental Lua module loader to speed up the start - up process. If `true`, this will enable the experimental Lua module loader - which: + the experimental Lua module loader to speed up the start up process - * overrides loadfile - * adds the lua loader using the byte-compilation cache - * adds the libs loader - * removes the default Neovim loader + If `true`, this will enable the experimental Lua module loader which: + - overrides loadfile + - adds the lua loader using the byte-compilation cache + - adds the libs loader + - removes the default Neovim loader ::: {.note} The Lua module loader is *disabled* by default. Before setting this option, please @@ -33,33 +40,32 @@ in { default = []; example = literalExpression '' [ - # Absolute path, as a string. This is the impure option. + # absolute path, as a string - impure "$HOME/.config/nvim-extra" - # Relative path inside your configuration. If your config - # is version controlled, then this is pure and reproducible. + # relative path, as a path - pure ./nvim - # Source type path. This pure and reproducible. - # See `:doc builtins.path` inside a Nix repl for more options. - (builtins.path { - path = ./runtime; # this must be a relative path - name = "nvim-runtime"; # name is arbitrary + # source type path - pure and reproducible + (builtins.source { + path = ./runtime; + name = "nvim-runtime"; }) ] ''; description = '' - Additional runtime paths that will be appended to the active - runtimepath of the Neovim. This can be used to add additional - lookup paths for configs, plugins, spell languages and other - things you would generally place in your {file}`$HOME/.config/nvim`. + Additional runtime paths that will be appended to the + active runtimepath of the Neovim. This can be used to + add additional lookup paths for configs, plugins, spell + languages and other things you would generally place in + your {file}`$HOME/.config/nvim`. - This is meant as a declarative alternative to throwing files into - {file}`~/.config/nvim` and having the Neovim wrapper pick them up. - - For more details on `vim.o.runtimepath`, and what paths to use, please see - [the official documentation](https://neovim.io/doc/user/options.html#'runtimepath'). + This is meant as a declarative alternative to throwing + files into {file}`~/.config/nvim` and having the Neovim + wrapper pick them up. For more details on + `vim.o.runtimepath`, and what paths to use; please see + [the official documentation](https://neovim.io/doc/user/options.html#'runtimepath') ''; }; @@ -68,13 +74,13 @@ in { default = []; example = literalExpression '' [ - # Absolute path, as a string - impure + # absolute path, as a string - impure "$HOME/.config/nvim/my-lua-file.lua" - # Relative path, as a path - pure + # relative path, as a path - pure ./nvim/my-lua-file.lua - # Source type path - pure and reproducible + # source type path - pure and reproducible (builtins.path { path = ./nvim/my-lua-file.lua; name = "my-lua-file"; @@ -83,10 +89,9 @@ in { ''; description = '' - Additional Lua files that will be sourced by Neovim. - - Takes both absolute and relative paths, all of which will be called - via the `luafile` command in Neovim. + Additional lua files that will be sourced by Neovim. + Takes both absolute and relative paths, all of which + will be called via the `luafile` command in Neovim. See [lua-commands](https://neovim.io/doc/user/lua.html#lua-commands) on the Neovim documentation for more details. @@ -281,7 +286,21 @@ in { luaConfigPre = mkOption { type = str; - default = ""; + default = '' + ${optionalString (cfg.additionalRuntimePaths != []) '' + -- The following list is generated from `vim.additionalRuntimePaths` + -- and is used to append additional runtime paths to the + -- `runtimepath` option. + vim.opt.runtimepath:append(${listToLuaTable cfg.additionalRuntimePaths}) + ''} + + ${optionalString cfg.enableLuaLoader '' + if vim.loader then + vim.loader.enable() + end + ''} + ''; + defaultText = literalMD '' By default, this option will **append** paths in [](#opt-vim.additionalRuntimePaths) diff --git a/npins/sources.json b/npins/sources.json index e97ce170..d11d16c4 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -9,9 +9,9 @@ }, "branch": "master", "submodules": false, - "revision": "5e687b5a14004fa2dd9eccbee042b96869fe1557", - "url": "https://github.com/stevearc/aerial.nvim/archive/5e687b5a14004fa2dd9eccbee042b96869fe1557.tar.gz", - "hash": "10y8kbiigh9j3wpigb800wg287xllg76kk7k8rv9a64mhrfm2v7w" + "revision": "44684bf429dc40e97a6d00ffa09043ac3f692186", + "url": "https://github.com/stevearc/aerial.nvim/archive/44684bf429dc40e97a6d00ffa09043ac3f692186.tar.gz", + "hash": "02zd23np2pn7hivi8sl63lcdn85cfbvsapkyghkwh9prxg8a81zn" }, "alpha-nvim": { "type": "Git", @@ -22,22 +22,9 @@ }, "branch": "main", "submodules": false, - "revision": "2b3cbcdd980cae1e022409289245053f62fb50f6", - "url": "https://github.com/goolord/alpha-nvim/archive/2b3cbcdd980cae1e022409289245053f62fb50f6.tar.gz", - "hash": "1ngim3ia9qbv1sxkscryvbn8xkw95rna5iy724yxgnq5sqxxg1jc" - }, - "avante-nvim": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "yetone", - "repo": "avante.nvim" - }, - "branch": "main", - "submodules": false, - "revision": "5e4bb50ddaa8c4688675df6f437712c0e793a51c", - "url": "https://github.com/yetone/avante.nvim/archive/5e4bb50ddaa8c4688675df6f437712c0e793a51c.tar.gz", - "hash": "0z3h8vb73rrmqcd6373pbqc5swbwxpfpd92yhly0256hw5a9jjm2" + "revision": "de72250e054e5e691b9736ee30db72c65d560771", + "url": "https://github.com/goolord/alpha-nvim/archive/de72250e054e5e691b9736ee30db72c65d560771.tar.gz", + "hash": "0c1jkhxamfn2md7m1r5b2wpxa26y90b98yzjwf68m3fymalvkn5h" }, "base16": { "type": "Git", @@ -48,9 +35,25 @@ }, "branch": "master", "submodules": false, - "revision": "a2907cc3cd661e0f89f7db1f4fc304782a676a7d", - "url": "https://github.com/rrethy/base16-nvim/archive/a2907cc3cd661e0f89f7db1f4fc304782a676a7d.tar.gz", - "hash": "0acqa0b5n4l01ac9mbbxz2nbg8k8a50s0ajngg72l68q6m5z9mkm" + "revision": "3f13e15c53ea2aaf79c24ceab725309d87f0619c", + "url": "https://github.com/rrethy/base16-nvim/archive/3f13e15c53ea2aaf79c24ceab725309d87f0619c.tar.gz", + "hash": "1z6pdf707r2rpmzi057dhcmd045695v03215asn1hdn8r294zcmg" + }, + "blink-cmp": { + "type": "GitRelease", + "repository": { + "type": "GitHub", + "owner": "saghen", + "repo": "blink.cmp" + }, + "pre_releases": false, + "version_upper_bound": null, + "release_prefix": null, + "submodules": false, + "version": "v1.1.1", + "revision": "fe2e1d3e4498d60c5ce7440ff60f79f0920e34bf", + "url": "https://api.github.com/repos/saghen/blink.cmp/tarball/v1.1.1", + "hash": "0l2m4162vk6xqrx5v0zh1b5p6wrr1jailq1995f101isyjygikan" }, "blink-cmp-spell": { "type": "Git", @@ -61,9 +64,9 @@ }, "branch": "master", "submodules": false, - "revision": "2bd0e0d5e7735c047e72b6918a0458f3e8fadaba", - "url": "https://github.com/ribru17/blink-cmp-spell/archive/2bd0e0d5e7735c047e72b6918a0458f3e8fadaba.tar.gz", - "hash": "1h84kmyxnyq9nrv3z6rvsfiabx2cdl54h86r5xxs5zacaygpha67" + "revision": "782bc76be09c0c5dd08e3edd04e4ec1054c3158e", + "url": "https://github.com/ribru17/blink-cmp-spell/archive/782bc76be09c0c5dd08e3edd04e4ec1054c3158e.tar.gz", + "hash": "13adgj9qxfmbwzvx348kpkm70h0jli9qv3bqhkwh8p6zkfajm607" }, "blink-compat": { "type": "Git", @@ -74,9 +77,9 @@ }, "branch": "main", "submodules": false, - "revision": "1454f14a8d855a578ceeba77c62538fa1459a67c", - "url": "https://github.com/saghen/blink.compat/archive/1454f14a8d855a578ceeba77c62538fa1459a67c.tar.gz", - "hash": "132w0z919fvj5wmjyfkpr59f6pidg522l4hsf2c03033d3xh5i0h" + "revision": "2ed6d9a28b07fa6f3bface818470605f8896408c", + "url": "https://github.com/saghen/blink.compat/archive/2ed6d9a28b07fa6f3bface818470605f8896408c.tar.gz", + "hash": "009475xy41l4dpayswhx65q6a7djzw7rz2ycbrbpyg041y0qynqs" }, "blink-emoji-nvim": { "type": "Git", @@ -87,9 +90,9 @@ }, "branch": "master", "submodules": false, - "revision": "f22ce8cac02a6ece05368220f1e38bd34fe376f9", - "url": "https://github.com/moyiz/blink-emoji.nvim/archive/f22ce8cac02a6ece05368220f1e38bd34fe376f9.tar.gz", - "hash": "1vnx779arsm4n1sjjwhraczp07am0i2n4m13jqv7ij01vd4c9wd4" + "revision": "a77aebc092ebece1eed108f301452ae774d6b67a", + "url": "https://github.com/moyiz/blink-emoji.nvim/archive/a77aebc092ebece1eed108f301452ae774d6b67a.tar.gz", + "hash": "0n4qv2mk7zx910gnwf9ri2w5qxwx8szx99nqqzik4yyvl4axm41d" }, "blink-ripgrep-nvim": { "type": "Git", @@ -100,9 +103,9 @@ }, "branch": "main", "submodules": false, - "revision": "932a8e568b2dc4f42268cfcc885ff2d701dd8bb7", - "url": "https://github.com/mikavilpas/blink-ripgrep.nvim/archive/932a8e568b2dc4f42268cfcc885ff2d701dd8bb7.tar.gz", - "hash": "0qafiwdisz21fi2hjima4aqz8qsjiq48pnfpp7nr8a9a15ix83sb" + "revision": "56084d1f45c8621d23d4bac724c2dc50b1eb75db", + "url": "https://github.com/mikavilpas/blink-ripgrep.nvim/archive/56084d1f45c8621d23d4bac724c2dc50b1eb75db.tar.gz", + "hash": "1lyczjvwpi5f1mjgw059yzkxxjrk48vcvhdjzkjgakhsq76s125x" }, "bufdelete-nvim": { "type": "Git", @@ -117,22 +120,6 @@ "url": "https://github.com/famiu/bufdelete.nvim/archive/f6bcea78afb3060b198125256f897040538bcb81.tar.gz", "hash": "0xfzk3zgnxbwnr55n3lglsb8nmhnchpiqz9d152xr6j8d9z0sdcn" }, - "bufferline-nvim": { - "type": "GitRelease", - "repository": { - "type": "GitHub", - "owner": "akinsho", - "repo": "bufferline.nvim" - }, - "pre_releases": false, - "version_upper_bound": null, - "release_prefix": null, - "submodules": false, - "version": "v4.9.1", - "revision": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3", - "url": "https://api.github.com/repos/akinsho/bufferline.nvim/tarball/v4.9.1", - "hash": "0m5363rpbjgvsnbhp9yrivbqj17lmrb5m57lpnq7dgxsmw3hrvk9" - }, "catppuccin": { "type": "Git", "repository": { @@ -142,9 +129,9 @@ }, "branch": "main", "submodules": false, - "revision": "c89184526212e04feffbddda9d06b041a8fca416", - "url": "https://github.com/catppuccin/nvim/archive/c89184526212e04feffbddda9d06b041a8fca416.tar.gz", - "hash": "0f3ykavynyplp0npkijq8psrzn79jfz916l0vm9rc16bvv8c43bn" + "revision": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429", + "url": "https://github.com/catppuccin/nvim/archive/5b5e3aef9ad7af84f463d17b5479f06b87d5c429.tar.gz", + "hash": "0jmrwag2dx4b1g9x32xwxcr8y0l159hqks09z5miy99wav6dy7z2" }, "ccc-nvim": { "type": "Git", @@ -155,9 +142,9 @@ }, "branch": "main", "submodules": false, - "revision": "9d1a256e006decc574789dfc7d628ca11644d4c2", - "url": "https://github.com/uga-rosa/ccc.nvim/archive/9d1a256e006decc574789dfc7d628ca11644d4c2.tar.gz", - "hash": "0a2fc4bw88kf1dpp0k07aj8i9qp0xcnz1fvrxdkhz0fxddb7qdnx" + "revision": "af2cf5a963f401aad868c065222ee13d4bbc9050", + "url": "https://github.com/uga-rosa/ccc.nvim/archive/af2cf5a963f401aad868c065222ee13d4bbc9050.tar.gz", + "hash": "0h43m2rz9jcckif036n6ybyv2zhgr25l0wpdg3fdfl7xkfs7sa1i" }, "cellular-automaton-nvim": { "type": "Git", @@ -246,9 +233,9 @@ }, "branch": "main", "submodules": false, - "revision": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3", - "url": "https://github.com/hrsh7th/cmp-nvim-lsp/archive/bd5a7d6db125d4654b50eeae9f5217f24bb22fd3.tar.gz", - "hash": "0yqcnpb6qkjyw1fk4zk66q2c9schxvascxqzk3mi7i7n0ykyjnjz" + "revision": "a8912b88ce488f411177fc8aed358b04dc246d7b", + "url": "https://github.com/hrsh7th/cmp-nvim-lsp/archive/a8912b88ce488f411177fc8aed358b04dc246d7b.tar.gz", + "hash": "08q5mf5jrqjjcl1s4h9zj2vd1kcizz0a5a6p65wv1rc5s1fa3a49" }, "cmp-path": { "type": "Git", @@ -259,9 +246,9 @@ }, "branch": "main", "submodules": false, - "revision": "c642487086dbd9a93160e1679a1327be111cbc25", - "url": "https://github.com/hrsh7th/cmp-path/archive/c642487086dbd9a93160e1679a1327be111cbc25.tar.gz", - "hash": "0p6rc6bv68qz0pd200f8ayg8313sjik4rsc6d9xllyjn5pdmv13v" + "revision": "c6635aae33a50d6010bf1aa756ac2398a2d54c32", + "url": "https://github.com/hrsh7th/cmp-path/archive/c6635aae33a50d6010bf1aa756ac2398a2d54c32.tar.gz", + "hash": "18ixx14ibc7qrv32nj0ylxrx8w4ggg49l5vhcqd35hkp4n56j6mn" }, "cmp-treesitter": { "type": "Git", @@ -285,9 +272,9 @@ }, "branch": "main", "submodules": false, - "revision": "38db66c4e20032821bd166f7012291fe99f1e8f3", - "url": "https://github.com/olimorris/codecompanion.nvim/archive/38db66c4e20032821bd166f7012291fe99f1e8f3.tar.gz", - "hash": "1iqqgcj7vdsif0fj0pf6ifn3nh05aznk2gnas7l3lg8b5g103vb8" + "revision": "9654cb31f10c9eda3e777d03d32b29df606ab0fe", + "url": "https://github.com/olimorris/codecompanion.nvim/archive/9654cb31f10c9eda3e777d03d32b29df606ab0fe.tar.gz", + "hash": "0ff4mbfim0kj5prv9xfqp8gsk1fw0y2d0kmazfivkhg04my8m89l" }, "codewindow-nvim": { "type": "Git", @@ -298,22 +285,9 @@ }, "branch": "master", "submodules": false, - "revision": "a8e175043ce3baaa89e0a6b5171bcd920aab3dad", - "url": "https://github.com/gorbit99/codewindow.nvim/archive/a8e175043ce3baaa89e0a6b5171bcd920aab3dad.tar.gz", - "hash": "12nsdynpym15fl9qwjzlzhxr2mbpa0l6sp2r1rrc300jr59q0gkr" - }, - "colorful-menu-nvim": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "xzbdmw", - "repo": "colorful-menu.nvim" - }, - "branch": "master", - "submodules": false, - "revision": "d5b97d247528be308b6b69d96b5950a30e470f3d", - "url": "https://github.com/xzbdmw/colorful-menu.nvim/archive/d5b97d247528be308b6b69d96b5950a30e470f3d.tar.gz", - "hash": "1j1nbkjrcys0zjbhzxxgxdcaf9pk2wx9k0xkcp808rwd8ym641ha" + "revision": "dd7017617962943eb1d152fc58940f11c6775a4a", + "url": "https://github.com/gorbit99/codewindow.nvim/archive/dd7017617962943eb1d152fc58940f11c6775a4a.tar.gz", + "hash": "1kxkf50rkqrzqz03jvygbwxb1yfmqh0gskr00vpmyrq51569a2hw" }, "comment-nvim": { "type": "Git", @@ -337,9 +311,9 @@ }, "branch": "master", "submodules": false, - "revision": "9d6f881a4047a51c7709223dcf24e967633c6523", - "url": "https://github.com/stevearc/conform.nvim/archive/9d6f881a4047a51c7709223dcf24e967633c6523.tar.gz", - "hash": "0ww4xapysmkpzcvzs6prwh1lx3vg84g5sicdpskjd2nlwv507n09" + "revision": "eebc724d12c5579d733d1f801386e0ceb909d001", + "url": "https://github.com/stevearc/conform.nvim/archive/eebc724d12c5579d733d1f801386e0ceb909d001.tar.gz", + "hash": "122v0svrsss8g4gzy9fz2ppzm2lxf85l4m8wincxsy75x9v3ywgn" }, "copilot-cmp": { "type": "Git", @@ -363,9 +337,9 @@ }, "branch": "master", "submodules": false, - "revision": "3cd5086c28c5769f5db147721f457a3e081de254", - "url": "https://github.com/zbirenbaum/copilot.lua/archive/3cd5086c28c5769f5db147721f457a3e081de254.tar.gz", - "hash": "018q6qy2k357prxg5sz8i73gyxa7f47idr79ihwx7hf31m7ax2pd" + "revision": "c62a2a7616a9789a7676b6b7a8d9263b1082cdc8", + "url": "https://github.com/zbirenbaum/copilot.lua/archive/c62a2a7616a9789a7676b6b7a8d9263b1082cdc8.tar.gz", + "hash": "1agbxzq43wsga9szgaz45s638my8d7cxqwg2aa3rizyf7g8f7szy" }, "crates-nvim": { "type": "Git", @@ -376,9 +350,9 @@ }, "branch": "main", "submodules": false, - "revision": "ac9fa498a9edb96dc3056724ff69d5f40b898453", - "url": "https://github.com/Saecki/crates.nvim/archive/ac9fa498a9edb96dc3056724ff69d5f40b898453.tar.gz", - "hash": "10hc28r9k4syay1pir24mk6kjj96llilqkyz8ch6rjmxyi7r5ycd" + "revision": "73d2c590c74a0c582144987a4decb4a642755859", + "url": "https://github.com/Saecki/crates.nvim/archive/73d2c590c74a0c582144987a4decb4a642755859.tar.gz", + "hash": "08dyl4blgi0lb3s0jbl4jcpr4j1ncyrdvxjkrqmhqcg6bmwl7iqy" }, "csharpls-extended-lsp-nvim": { "type": "Git", @@ -389,9 +363,9 @@ }, "branch": "master", "submodules": false, - "revision": "9cd24d7be42bd138f287baf6300a55d5797ab33e", - "url": "https://github.com/Decodetalkers/csharpls-extended-lsp.nvim/archive/9cd24d7be42bd138f287baf6300a55d5797ab33e.tar.gz", - "hash": "1jh528jvzja4l213r1fqgvgfrwhmchd5caxg5qaxnp9bmgm85pfi" + "revision": "53c6dfc9790d262edd3d6a4483294bedf53d70f5", + "url": "https://github.com/Decodetalkers/csharpls-extended-lsp.nvim/archive/53c6dfc9790d262edd3d6a4483294bedf53d70f5.tar.gz", + "hash": "0hy3jaq5lq72yfvy77hijp8wzpbad7a1xfwrdljzbpm4w5j59dm2" }, "dashboard-nvim": { "type": "Git", @@ -402,9 +376,9 @@ }, "branch": "master", "submodules": false, - "revision": "0775e567b6c0be96d01a61795f7b64c1758262f6", - "url": "https://github.com/glepnir/dashboard-nvim/archive/0775e567b6c0be96d01a61795f7b64c1758262f6.tar.gz", - "hash": "0h46n9hgyivqm43p8jq6dwnaln0y7ilayvd04vfb0mc8bmxcmrfi" + "revision": "000448d837f6e7a47f8f342f29526c4d7e49e9ce", + "url": "https://github.com/glepnir/dashboard-nvim/archive/000448d837f6e7a47f8f342f29526c4d7e49e9ce.tar.gz", + "hash": "11kh15qp819dhr2r3q78dv9pzxrswzzpjqmdpa5nlba9mvgjzzy3" }, "diffview-nvim": { "type": "Git", @@ -441,9 +415,9 @@ }, "branch": "main", "submodules": false, - "revision": "041d923368d540a1e438989ce8f915628081a56a", - "url": "https://github.com/Mofiqul/dracula.nvim/archive/041d923368d540a1e438989ce8f915628081a56a.tar.gz", - "hash": "0bl6hggv01pg5970nsi0vaf23mb46xzpjrkasi7134465lh0m1m3" + "revision": "96c9d19ce81b26053055ad6f688277d655b3f7d2", + "url": "https://github.com/Mofiqul/dracula.nvim/archive/96c9d19ce81b26053055ad6f688277d655b3f7d2.tar.gz", + "hash": "0w8r0h9sk3gspahiv203wxj744cry70sra2gf230x2pfrysp09g0" }, "dressing-nvim": { "type": "Git", @@ -467,25 +441,9 @@ }, "branch": "main", "submodules": false, - "revision": "51b026c1ed5fe32396e1cd94c2b67435b066a4fb", - "url": "https://github.com/elixir-tools/elixir-tools.nvim/archive/51b026c1ed5fe32396e1cd94c2b67435b066a4fb.tar.gz", - "hash": "0prns04rrygyw722afph4893vpc5i20vpc2aakf3bmxfag8f7ksm" - }, - "everforest": { - "type": "GitRelease", - "repository": { - "type": "GitHub", - "owner": "sainnhe", - "repo": "everforest" - }, - "pre_releases": false, - "version_upper_bound": null, - "release_prefix": null, - "submodules": false, - "version": "v0.3.0", - "revision": "1e625639362661972821e83d8bbe528b8981a05f", - "url": "https://api.github.com/repos/sainnhe/everforest/tarball/v0.3.0", - "hash": "18h7mwr9lpsdsdi90vn4nc868g50li27xvylrs2srppfjr7kvl7w" + "revision": "6beae8194152e2d8b4a59de19a3e60c1f7ffcff5", + "url": "https://github.com/elixir-tools/elixir-tools.nvim/archive/6beae8194152e2d8b4a59de19a3e60c1f7ffcff5.tar.gz", + "hash": "0kncq60x3kvy4plszq4zygrsy6cyzf43g2xgzqwif88i85ki7zq6" }, "fastaction-nvim": { "type": "Git", @@ -496,9 +454,9 @@ }, "branch": "main", "submodules": false, - "revision": "b147d91727cb35be4f722f17e7d4ed5b4a5801d8", - "url": "https://github.com/Chaitanyabsprip/fastaction.nvim/archive/b147d91727cb35be4f722f17e7d4ed5b4a5801d8.tar.gz", - "hash": "0brks0ia2z6ahwqg5xad5h53552qm68c7w25d5gry0inlfr39bdx" + "revision": "c43684448470e732387beccaff12e6667a534800", + "url": "https://github.com/Chaitanyabsprip/fastaction.nvim/archive/c43684448470e732387beccaff12e6667a534800.tar.gz", + "hash": "1ihh07j9q4089m4iw7sb33zg106g1m84bd2nk81gixfl76vg3vbi" }, "fidget-nvim": { "type": "Git", @@ -509,9 +467,9 @@ }, "branch": "main", "submodules": false, - "revision": "3f5475949679953af6d78654db29b944fa826e6a", - "url": "https://github.com/j-hui/fidget.nvim/archive/3f5475949679953af6d78654db29b944fa826e6a.tar.gz", - "hash": "1frrrq0bc9r4lh723hvy38g1bab1r1gmpqlkfvddrj80lk6kgrl9" + "revision": "d9ba6b7bfe29b3119a610892af67602641da778e", + "url": "https://github.com/j-hui/fidget.nvim/archive/d9ba6b7bfe29b3119a610892af67602641da778e.tar.gz", + "hash": "070jadci8x6zgxnsqaldjah1gm1p78wscsb9wpn5wn8mjkyk2m80" }, "flash-nvim": { "type": "Git", @@ -522,9 +480,9 @@ }, "branch": "main", "submodules": false, - "revision": "b68bda044d68e4026c4e1ec6df3c5afd7eb8e341", - "url": "https://github.com/folke/flash.nvim/archive/b68bda044d68e4026c4e1ec6df3c5afd7eb8e341.tar.gz", - "hash": "1blfqyipmn876dkw0v8gm4gw5gnv9dfca4szws503835v9jj0azf" + "revision": "3c942666f115e2811e959eabbdd361a025db8b63", + "url": "https://github.com/folke/flash.nvim/archive/3c942666f115e2811e959eabbdd361a025db8b63.tar.gz", + "hash": "1xil2lkyr404zni1qmkwrl9hvbwjjk52fmncg59vqmvdybwsnqni" }, "flutter-tools-nvim": { "type": "Git", @@ -535,9 +493,9 @@ }, "branch": "main", "submodules": false, - "revision": "65b7399804315a1160933b64292d3c5330aa4e9f", - "url": "https://github.com/akinsho/flutter-tools.nvim/archive/65b7399804315a1160933b64292d3c5330aa4e9f.tar.gz", - "hash": "1wbw5k5a7iw6dqznv8z1xpg6yyx6sqb1cmspl18pa23cayvcsf12" + "revision": "6faf2c70bd56f1fe78620591a2bb73f4dc6f4870", + "url": "https://github.com/akinsho/flutter-tools.nvim/archive/6faf2c70bd56f1fe78620591a2bb73f4dc6f4870.tar.gz", + "hash": "0mhqzicm56xp20mm8swmick63p9sbbby394v0qykzb9l73wpqdka" }, "friendly-snippets": { "type": "Git", @@ -548,9 +506,9 @@ }, "branch": "main", "submodules": false, - "revision": "572f5660cf05f8cd8834e096d7b4c921ba18e175", - "url": "https://github.com/rafamadriz/friendly-snippets/archive/572f5660cf05f8cd8834e096d7b4c921ba18e175.tar.gz", - "hash": "08q7vs7p4grav819b6hl5y9zla8bbb461b6m1w0mjz6n6rqjjc0p" + "revision": "efff286dd74c22f731cdec26a70b46e5b203c619", + "url": "https://github.com/rafamadriz/friendly-snippets/archive/efff286dd74c22f731cdec26a70b46e5b203c619.tar.gz", + "hash": "1vb5l8ipfjwsrqffbq8v2z5p1cpg035b3gk57692wd7835kr3i13" }, "fzf-lua": { "type": "Git", @@ -561,9 +519,9 @@ }, "branch": "main", "submodules": false, - "revision": "e9d95a29514c1a239c570c9d4077b7adca419161", - "url": "https://github.com/ibhagwan/fzf-lua/archive/e9d95a29514c1a239c570c9d4077b7adca419161.tar.gz", - "hash": "1ry58pmd9aphqd7klrmscyhdsgp4j60dd5hcv2qjp7sp424kirlg" + "revision": "dc693475c4463463d84a0c7c43d463b8a8cd3aea", + "url": "https://github.com/ibhagwan/fzf-lua/archive/dc693475c4463463d84a0c7c43d463b8a8cd3aea.tar.gz", + "hash": "1his2nwjrb9xbjmz5i6nln7v5mk2f85dla10qn5xwji9zgnfy24l" }, "gesture-nvim": { "type": "Git", @@ -574,9 +532,9 @@ }, "branch": "master", "submodules": false, - "revision": "9e37ef08a878e39689c0a952d982ec9ae51318b2", - "url": "https://github.com/notomo/gesture.nvim/archive/9e37ef08a878e39689c0a952d982ec9ae51318b2.tar.gz", - "hash": "1lk08idp49ixm0jd7vz961hcxmj36wjrp2z2p302a57m6k1gjimr" + "revision": "eee4a4c9f108b40cb63766e96e0fe28fe5968127", + "url": "https://github.com/notomo/gesture.nvim/archive/eee4a4c9f108b40cb63766e96e0fe28fe5968127.tar.gz", + "hash": "0h6f4s39q1kzsgc3wx6kanmhada00av1nj1ngzmgbafsxl2ax0bw" }, "git-conflict-nvim": { "type": "Git", @@ -613,9 +571,9 @@ }, "branch": "master", "submodules": false, - "revision": "7c1fae10e39fba627a433a0d7126683c79af289f", - "url": "https://github.com/linrongbin16/gitlinker.nvim/archive/7c1fae10e39fba627a433a0d7126683c79af289f.tar.gz", - "hash": "0c4qa7yqf200zxh7iy510kid0gvlsfy07q7ami5d68qm3b9qdd97" + "revision": "23982c86f50a9c3f4bc531d41b7a4a68ddd12355", + "url": "https://github.com/linrongbin16/gitlinker.nvim/archive/23982c86f50a9c3f4bc531d41b7a4a68ddd12355.tar.gz", + "hash": "1kz3gpdysxzpb27izhq0jgk59xw01mmnfvg5yrqvxnfhyjblxvqh" }, "gitsigns-nvim": { "type": "Git", @@ -626,9 +584,9 @@ }, "branch": "main", "submodules": false, - "revision": "1ee5c1fd068c81f9dd06483e639c2aa4587dc197", - "url": "https://github.com/lewis6991/gitsigns.nvim/archive/1ee5c1fd068c81f9dd06483e639c2aa4587dc197.tar.gz", - "hash": "1dag4560vdw4ldb4grzmda68mgfhq9qb51nzwxg2ciwdfhivschq" + "revision": "fcfa7a989cd6fed10abf02d9880dc76d7a38167d", + "url": "https://github.com/lewis6991/gitsigns.nvim/archive/fcfa7a989cd6fed10abf02d9880dc76d7a38167d.tar.gz", + "hash": "1grkw8x1fycw1hbppy0zakwwkk7h2f8x5qy4wh34yj5f5g9jn3vj" }, "glow-nvim": { "type": "Git", @@ -652,22 +610,9 @@ }, "branch": "main", "submodules": false, - "revision": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437", - "url": "https://github.com/ellisonleao/gruvbox.nvim/archive/5e0a460d8e0f7f669c158dedd5f9ae2bcac31437.tar.gz", - "hash": "0x56900ihp83izaai660bvb5b5qq04bjc9qmafjis4jz1qqv948h" - }, - "hardtime-nvim": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "m4xshen", - "repo": "hardtime.nvim" - }, - "branch": "main", - "submodules": false, - "revision": "b4e431934af1fe224a3a801f632c008278cb7628", - "url": "https://github.com/m4xshen/hardtime.nvim/archive/b4e431934af1fe224a3a801f632c008278cb7628.tar.gz", - "hash": "03df6kd6srwj6yb3pvmdpbj6jg269dw4ns0w9flj9myl852l0br7" + "revision": "12b5420b665e8053d74eb075d8a589477333f67d", + "url": "https://github.com/ellisonleao/gruvbox.nvim/archive/12b5420b665e8053d74eb075d8a589477333f67d.tar.gz", + "hash": "16fa841cv0dbn7pkcs44r5ch241vhax8jfxgcxwwd0z4srlbj6gy" }, "harpoon": { "type": "Git", @@ -691,9 +636,9 @@ }, "branch": "master", "submodules": false, - "revision": "641b06beab01bb85e4d4bb1f4a22d9f82938a8d4", - "url": "https://github.com/mrcjkb/haskell-tools.nvim/archive/641b06beab01bb85e4d4bb1f4a22d9f82938a8d4.tar.gz", - "hash": "07i19al7vx9dcd7ch5gcxxp68ii7fpvxyigq69x3nyj1vlxzrzf1" + "revision": "18fef08cba01de6b5022e85ac4468f74edc45259", + "url": "https://github.com/mrcjkb/haskell-tools.nvim/archive/18fef08cba01de6b5022e85ac4468f74edc45259.tar.gz", + "hash": "1bhr9w58hy63zilbqdwfvwzca6sk667yagjbzf13acl306nvgnhd" }, "highlight-undo-nvim": { "type": "Git", @@ -704,9 +649,9 @@ }, "branch": "main", "submodules": false, - "revision": "ee32e12693d70e66f954d09a504a7371d110fc27", - "url": "https://github.com/tzachar/highlight-undo.nvim/archive/ee32e12693d70e66f954d09a504a7371d110fc27.tar.gz", - "hash": "09byybwyl61jxlfii9vsi4i21vy6ngm3mbypqlhsivn8wgg24kn9" + "revision": "a5e2e2d43f6d131bf526619baeeeec32397b0789", + "url": "https://github.com/tzachar/highlight-undo.nvim/archive/a5e2e2d43f6d131bf526619baeeeec32397b0789.tar.gz", + "hash": "0gvd45mpkhd7hj8hvm20z036vr178hzzwhknj0l5bfnnnwl8xnjc" }, "hop-nvim": { "type": "Git", @@ -721,22 +666,6 @@ "url": "https://github.com/phaazon/hop.nvim/archive/1a1eceafe54b5081eae4cb91c723abd1d450f34b.tar.gz", "hash": "08h18cam2yr57qvfsnf1bra28vbl6013wlchnr5crb757xw8aysa" }, - "hunk-nvim": { - "type": "GitRelease", - "repository": { - "type": "GitHub", - "owner": "julienvincent", - "repo": "hunk.nvim" - }, - "pre_releases": false, - "version_upper_bound": null, - "release_prefix": null, - "submodules": false, - "version": "v1.9.0", - "revision": "c21f15dbe78ddf23a4e1528a9a5370958c28b608", - "url": "https://api.github.com/repos/julienvincent/hunk.nvim/tarball/v1.9.0", - "hash": "1yifb94kdx9dhk478j9cf7npzpi5iafh35ys2pl5y0jkb6rkg9n5" - }, "hydra-nvim": { "type": "GitRelease", "repository": { @@ -775,22 +704,9 @@ }, "branch": "master", "submodules": false, - "revision": "446a8a5cc7a3eae3185ee0c697732c32a5547a0b", - "url": "https://github.com/3rd/image.nvim/archive/446a8a5cc7a3eae3185ee0c697732c32a5547a0b.tar.gz", - "hash": "18hgp9qkm596rl0k1n4rrri8y6k84fkacphf9x3mrqwgqrixx80i" - }, - "img-clip": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "hakonharnes", - "repo": "img-clip.nvim" - }, - "branch": "main", - "submodules": false, - "revision": "f33f3af9ba50f99d70f8fcb1a8575750ada4ea4a", - "url": "https://github.com/hakonharnes/img-clip.nvim/archive/f33f3af9ba50f99d70f8fcb1a8575750ada4ea4a.tar.gz", - "hash": "056ikjx8q2aw5pwmsp7lg6k38bsyv3pmy5q3h0293c3pfy03bgx3" + "revision": "2e2d28b7734b5efdfc1219f4da8a46c761587bc2", + "url": "https://github.com/3rd/image.nvim/archive/2e2d28b7734b5efdfc1219f4da8a46c761587bc2.tar.gz", + "hash": "1k2bch2l9bvy4ian6l3jymddcy7p4mvblpmbq0qvn8rzxdi65fy1" }, "indent-blankline-nvim": { "type": "Git", @@ -814,9 +730,9 @@ }, "branch": "main", "submodules": false, - "revision": "258d2a5ef4a3e3d6d9ba9da72c9725c53e9afcbd", - "url": "https://github.com/folke/lazydev.nvim/archive/258d2a5ef4a3e3d6d9ba9da72c9725c53e9afcbd.tar.gz", - "hash": "0qn50y6zdw1vad82km1zlkn0g30v1jhr6y56sqg98xlf45kf3yfg" + "revision": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c", + "url": "https://github.com/folke/lazydev.nvim/archive/2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c.tar.gz", + "hash": "1v4m18j270rfbjrcn99fkbiwhlmmr9bm9lcbagp533kx4n57731f" }, "leap-nvim": { "type": "Git", @@ -827,9 +743,9 @@ }, "branch": "main", "submodules": false, - "revision": "07304103f6bd923004fdef9262d9a4d7925fb70a", - "url": "https://github.com/ggandor/leap.nvim/archive/07304103f6bd923004fdef9262d9a4d7925fb70a.tar.gz", - "hash": "1n21jmh13f2ms7s6qhk623wa7kqpjjfvg4sp40sx01fn8br8m280" + "revision": "03eaa2e0c0ec9436dea0e954bc47564ff3ca9196", + "url": "https://github.com/ggandor/leap.nvim/archive/03eaa2e0c0ec9436dea0e954bc47564ff3ca9196.tar.gz", + "hash": "1lskih4hvf1c57d0f6gibc36c926lqky0y2h6ypmkgh8gmcdazdw" }, "leetcode-nvim": { "type": "Git", @@ -840,9 +756,9 @@ }, "branch": "master", "submodules": false, - "revision": "fdd3f91800b3983e27bc9fcfb99cfa7293d7f11a", - "url": "https://github.com/kawre/leetcode.nvim/archive/fdd3f91800b3983e27bc9fcfb99cfa7293d7f11a.tar.gz", - "hash": "0pqjg3bdsj6x0w0pf35fd676nkmhhc14kh9g48nswcx268yw79ry" + "revision": "db7e1cd6b9191b34b4c1f2f96e4e3949cde9f951", + "url": "https://github.com/kawre/leetcode.nvim/archive/db7e1cd6b9191b34b4c1f2f96e4e3949cde9f951.tar.gz", + "hash": "1d3lb7625b2qdzqm74mzrac66rxqc0qgjd3mb37l4v8wqyiyv6pp" }, "lsp-signature-nvim": { "type": "Git", @@ -853,9 +769,9 @@ }, "branch": "master", "submodules": false, - "revision": "62cadce83aaceed677ffe7a2d6a57141af7131ea", - "url": "https://github.com/ray-x/lsp_signature.nvim/archive/62cadce83aaceed677ffe7a2d6a57141af7131ea.tar.gz", - "hash": "131l83vfaj5b1yrsscrlbgs7rxl5n77275c1mpfbvafyy59ypg8f" + "revision": "15bb33cdb47e85278e168cad11acb1b6fa9c6488", + "url": "https://github.com/ray-x/lsp_signature.nvim/archive/15bb33cdb47e85278e168cad11acb1b6fa9c6488.tar.gz", + "hash": "0acynlgd7vg3cn08136ky1j2qayq1f7x6fl1562cby6hl47rsnck" }, "lspkind-nvim": { "type": "Git", @@ -866,9 +782,9 @@ }, "branch": "master", "submodules": false, - "revision": "3ddd1b4edefa425fda5a9f95a4f25578727c0bb3", - "url": "https://github.com/onsails/lspkind-nvim/archive/3ddd1b4edefa425fda5a9f95a4f25578727c0bb3.tar.gz", - "hash": "0yyf2vac4y424kn1vl7bkf5zazs0hd8v3106gl54ib69vav9hljd" + "revision": "d79a1c3299ad0ef94e255d045bed9fa26025dab6", + "url": "https://github.com/onsails/lspkind-nvim/archive/d79a1c3299ad0ef94e255d045bed9fa26025dab6.tar.gz", + "hash": "1wdavqmwadby9lyw415jw79kxynxv4fxg2v376y0rkxf258clarq" }, "lspsaga-nvim": { "type": "Git", @@ -879,9 +795,9 @@ }, "branch": "main", "submodules": false, - "revision": "8efe00d6aed9db6449969f889170f1a7e43101a1", - "url": "https://github.com/nvimdev/lspsaga.nvim/archive/8efe00d6aed9db6449969f889170f1a7e43101a1.tar.gz", - "hash": "03lyjm7raak0hahy9vijg0s5g2wxciqnzrhjqp691hnd3n1gzrvj" + "revision": "778d56ff9b387dacd14ae648ed5604394b486f51", + "url": "https://github.com/nvimdev/lspsaga.nvim/archive/778d56ff9b387dacd14ae648ed5604394b486f51.tar.gz", + "hash": "1rm8ww8krxliwli9m2j6j37xgwgjsrgapvgrcdr6nd4mi6hgmczm" }, "lua-utils-nvim": { "type": "Git", @@ -905,9 +821,9 @@ }, "branch": "master", "submodules": false, - "revision": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955", - "url": "https://github.com/hoob3rt/lualine.nvim/archive/b8c23159c0161f4b89196f74ee3a6d02cdc3a955.tar.gz", - "hash": "12xpjwzzd26rxkv9kq1dn8797100zsznlbfzbb6c91myjn97cswm" + "revision": "86fe39534b7da729a1ac56c0466e76f2c663dc42", + "url": "https://github.com/hoob3rt/lualine.nvim/archive/86fe39534b7da729a1ac56c0466e76f2c663dc42.tar.gz", + "hash": "1kqdckylsjl1ibk4wm87y1yxxzxnjz87vwziaw4k6nw61rg0bq2x" }, "luasnip": { "type": "Git", @@ -918,9 +834,9 @@ }, "branch": "master", "submodules": false, - "revision": "73813308abc2eaeff2bc0d3f2f79270c491be9d7", - "url": "https://github.com/L3MON4D3/LuaSnip/archive/73813308abc2eaeff2bc0d3f2f79270c491be9d7.tar.gz", - "hash": "0v2jp936b8x3qx3d84w5xrvldcrk8bp9cshcz7blswv0yp9h89xj" + "revision": "c9b9a22904c97d0eb69ccb9bab76037838326817", + "url": "https://github.com/L3MON4D3/LuaSnip/archive/c9b9a22904c97d0eb69ccb9bab76037838326817.tar.gz", + "hash": "03anxdspqz7ylq4239jyr9y51mw5qw1lkccyvfhj6wfk43jjdryx" }, "lz-n": { "type": "Git", @@ -931,9 +847,9 @@ }, "branch": "master", "submodules": false, - "revision": "9fc3d8234a0fb7ec6238a677a8b38bf24c1d9cc7", - "url": "https://github.com/nvim-neorocks/lz.n/archive/9fc3d8234a0fb7ec6238a677a8b38bf24c1d9cc7.tar.gz", - "hash": "0fsbw95k6qy1qbl2k7838ap9m31m5w8fqpmv61m2dgzg112hnlw8" + "revision": "2ef8dfbef6f8f97873da4c5820067343690d114c", + "url": "https://github.com/nvim-neorocks/lz.n/archive/2ef8dfbef6f8f97873da4c5820067343690d114c.tar.gz", + "hash": "11i6ayqvyamh8i2scq7qbf6rrxrq9v0hax9gxmdxhdxd18djyq8n" }, "lzn-auto-require": { "type": "Git", @@ -948,19 +864,6 @@ "url": "https://github.com/horriblename/lzn-auto-require/archive/ef746afb55467984ef3200d9709c8059ee0257d0.tar.gz", "hash": "1mgka1mmvpd2gfya898qdbbwrp5rpqds8manjs1s7g5x63xp6b98" }, - "markview-nvim": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "OXY2DEV", - "repo": "markview.nvim" - }, - "branch": "main", - "submodules": false, - "revision": "de79a7626d54d7785436105ef72f37ee8fe8fa16", - "url": "https://github.com/OXY2DEV/markview.nvim/archive/de79a7626d54d7785436105ef72f37ee8fe8fa16.tar.gz", - "hash": "032i6m9pld1zyhd7lq49dg4qh98w6vmmzqp2f46drhq0ds26hs4h" - }, "mind-nvim": { "type": "Git", "repository": { @@ -983,9 +886,9 @@ }, "branch": "main", "submodules": false, - "revision": "e0d00c227112e942ed2789dd4c21d651002831c0", - "url": "https://github.com/echasnovski/mini.ai/archive/e0d00c227112e942ed2789dd4c21d651002831c0.tar.gz", - "hash": "0v165kgfzhfm88p6ljnghnpmp39sb0gbkgb81fym99nmmzklm536" + "revision": "e139eb1101beb0250fea322f8c07a42f0f175688", + "url": "https://github.com/echasnovski/mini.ai/archive/e139eb1101beb0250fea322f8c07a42f0f175688.tar.gz", + "hash": "1lc7nwxlm4ndf2d2m4y90dybscig39qh5ijacns5r40w31rfgpmc" }, "mini-align": { "type": "Git", @@ -996,9 +899,9 @@ }, "branch": "main", "submodules": false, - "revision": "be20e745cfa549009d1867bf55381602810250da", - "url": "https://github.com/echasnovski/mini.align/archive/be20e745cfa549009d1867bf55381602810250da.tar.gz", - "hash": "0af7nq6l8qiqcv15hx69rlrzpf7cnv6mb8xrih5gkr98kvawvwdp" + "revision": "2b42ac0be7d570c2208f9e334ecef13453cd222d", + "url": "https://github.com/echasnovski/mini.align/archive/2b42ac0be7d570c2208f9e334ecef13453cd222d.tar.gz", + "hash": "12k8jv9f4kzn4gn507539v1llm1zn0afl2pwihv4gsr62l9gbmw9" }, "mini-animate": { "type": "Git", @@ -1009,9 +912,9 @@ }, "branch": "main", "submodules": false, - "revision": "98c612d104524da5a368c8419b3907c488e8c968", - "url": "https://github.com/echasnovski/mini.animate/archive/98c612d104524da5a368c8419b3907c488e8c968.tar.gz", - "hash": "0k03ncgjzi6v1c1khj3dzyz34fjhdrcxdgd89pznndbyd4svnx23" + "revision": "9b518c39c0e25b7b5e4e61db3f1407f7b4889f4e", + "url": "https://github.com/echasnovski/mini.animate/archive/9b518c39c0e25b7b5e4e61db3f1407f7b4889f4e.tar.gz", + "hash": "197fgvnh05j5s0bhablgvlz1h6fl4m3n9d1sxzyf6p661dk8chcf" }, "mini-base16": { "type": "Git", @@ -1022,9 +925,9 @@ }, "branch": "main", "submodules": false, - "revision": "a55403967588257a17a6049e99f80aa982543c36", - "url": "https://github.com/echasnovski/mini.base16/archive/a55403967588257a17a6049e99f80aa982543c36.tar.gz", - "hash": "0w2287b6xrknn1m732197cpx2hv8cpdd8gjv590b39cz99frsy3g" + "revision": "2eb2d2b889a8c861d1a66ec651bd0edb417d5c7f", + "url": "https://github.com/echasnovski/mini.base16/archive/2eb2d2b889a8c861d1a66ec651bd0edb417d5c7f.tar.gz", + "hash": "0g09bgk7y2j83phckg9wlm82ih1ya5j0sgz6xbscbj6jh0w75lvz" }, "mini-basics": { "type": "Git", @@ -1035,9 +938,9 @@ }, "branch": "main", "submodules": false, - "revision": "7a5f213ad45d89250143d65a30e3dcea9ec4d785", - "url": "https://github.com/echasnovski/mini.basics/archive/7a5f213ad45d89250143d65a30e3dcea9ec4d785.tar.gz", - "hash": "1rvnahl45xp05b7nybc6r2w6cjhqig63a82m05ccpnms7slhd415" + "revision": "9904890cf863a7cbc3f57a1cbac3d298a33e90a4", + "url": "https://github.com/echasnovski/mini.basics/archive/9904890cf863a7cbc3f57a1cbac3d298a33e90a4.tar.gz", + "hash": "0k9xzdgmyrjvazvi2j1pgy8wsdbm3g3wcq4nnhdxl51i9ib5i3wj" }, "mini-bracketed": { "type": "Git", @@ -1048,9 +951,9 @@ }, "branch": "main", "submodules": false, - "revision": "87cf031b49e3753227f73f433851a6a75cf31445", - "url": "https://github.com/echasnovski/mini.bracketed/archive/87cf031b49e3753227f73f433851a6a75cf31445.tar.gz", - "hash": "09bb1vzmp43jd33j1yrna1qkwqs9w33m1pvnp4brx2130zx0gdi9" + "revision": "cd77e1e498a561a0f11b41a650caa1ba3a6a3fcc", + "url": "https://github.com/echasnovski/mini.bracketed/archive/cd77e1e498a561a0f11b41a650caa1ba3a6a3fcc.tar.gz", + "hash": "1490iv3j7ks3c04x48xqysq62kya9ygxca84avhah4pg43h1pws9" }, "mini-bufremove": { "type": "Git", @@ -1061,9 +964,9 @@ }, "branch": "main", "submodules": false, - "revision": "6ce45baad3af93e4b112d84f702eb00bb4e29b9e", - "url": "https://github.com/echasnovski/mini.bufremove/archive/6ce45baad3af93e4b112d84f702eb00bb4e29b9e.tar.gz", - "hash": "1flr1ijfylp02ydqpxcxvxv3d71qz39x55mmp55a0r53717wi8s2" + "revision": "66019ecebdc5bc0759e04747586994e2e3f98416", + "url": "https://github.com/echasnovski/mini.bufremove/archive/66019ecebdc5bc0759e04747586994e2e3f98416.tar.gz", + "hash": "0pqwi0ix7zl7sg74p19q61mizv48mjmbijigsssi9fbyk0hwmkww" }, "mini-clue": { "type": "Git", @@ -1074,9 +977,9 @@ }, "branch": "main", "submodules": false, - "revision": "83696f95c9e498174950b947e2b6b4298eb19828", - "url": "https://github.com/echasnovski/mini.clue/archive/83696f95c9e498174950b947e2b6b4298eb19828.tar.gz", - "hash": "14y7a0bpf7hd50mj253liqrqqgjslf5j5nhhrx7zycq4nx1a0q60" + "revision": "298ece93383cf7feb82ff726ebe3570573cd6308", + "url": "https://github.com/echasnovski/mini.clue/archive/298ece93383cf7feb82ff726ebe3570573cd6308.tar.gz", + "hash": "09av4cxvfqc8vfhdhfa6dlv1l47hqfq9ip6w23xpdfv8acdhqr44" }, "mini-colors": { "type": "Git", @@ -1087,9 +990,9 @@ }, "branch": "main", "submodules": false, - "revision": "dd65a9f4653f8b3609e5d83d646ab447bfc980d1", - "url": "https://github.com/echasnovski/mini.colors/archive/dd65a9f4653f8b3609e5d83d646ab447bfc980d1.tar.gz", - "hash": "06436dxf3csdx8mh5hib0n0snyik9jk9x5n8q2fyi6wy9jvd7py5" + "revision": "1c88ba8c79e5717acc82bf596f5722c724af570e", + "url": "https://github.com/echasnovski/mini.colors/archive/1c88ba8c79e5717acc82bf596f5722c724af570e.tar.gz", + "hash": "0dcv6z4z5gq73d2s2hbcg8l5y1jzxvdsq7wy6a2rxbjmjhg5j7is" }, "mini-comment": { "type": "Git", @@ -1100,9 +1003,9 @@ }, "branch": "main", "submodules": false, - "revision": "796eff9194389220c8d89e0303857630adaaf786", - "url": "https://github.com/echasnovski/mini.comment/archive/796eff9194389220c8d89e0303857630adaaf786.tar.gz", - "hash": "03vaf4blnq74sy8k7zdnb2qm8j83qds465m4gwgvwmm8csg5sw8k" + "revision": "fb867a9246f9b892cf51a8c84a3f8479cdf1558c", + "url": "https://github.com/echasnovski/mini.comment/archive/fb867a9246f9b892cf51a8c84a3f8479cdf1558c.tar.gz", + "hash": "0d3yl412f95alg5rlvq387sbx3gwyqa0nc2f8ivgw5vllnwycj3a" }, "mini-completion": { "type": "Git", @@ -1113,25 +1016,9 @@ }, "branch": "main", "submodules": false, - "revision": "09470ac1f244070fa8a66d3c93f8b379075939f5", - "url": "https://github.com/echasnovski/mini.completion/archive/09470ac1f244070fa8a66d3c93f8b379075939f5.tar.gz", - "hash": "0l38flvjdqz207h0m1qgmqjq9yq8b1fbvgkydc98jp93ip163rln" - }, - "mini-cursorword": { - "type": "GitRelease", - "repository": { - "type": "GitHub", - "owner": "echasnovski", - "repo": "mini.cursorword" - }, - "pre_releases": false, - "version_upper_bound": null, - "release_prefix": null, - "submodules": false, - "version": "v0.16.0", - "revision": "55ecfd08d8ff62375f5be9e5b5d5252324b220e8", - "url": "https://api.github.com/repos/echasnovski/mini.cursorword/tarball/v0.16.0", - "hash": "0sgii7m2lfp95vxnchisk3hpbjwwqpky6ivkx2nc5djkmj07b7mj" + "revision": "cf3625d2c4a437f5edf7e61382e0fe522fc76fb7", + "url": "https://github.com/echasnovski/mini.completion/archive/cf3625d2c4a437f5edf7e61382e0fe522fc76fb7.tar.gz", + "hash": "0lpvl1kd7vmyy00p97am9ghj6gdmnk1dbw93wjmnvin057w9sysw" }, "mini-diff": { "type": "Git", @@ -1142,9 +1029,9 @@ }, "branch": "main", "submodules": false, - "revision": "faecf54385bad761d8f3f3096c6c0ea2a6e73123", - "url": "https://github.com/echasnovski/mini.diff/archive/faecf54385bad761d8f3f3096c6c0ea2a6e73123.tar.gz", - "hash": "1z9gfxm78vgjjdiwpc4y2px3m23bcq4s9cdn3jab4yr652ckh214" + "revision": "7e268d0241255abaa07b8aa0ddff028f7315fe21", + "url": "https://github.com/echasnovski/mini.diff/archive/7e268d0241255abaa07b8aa0ddff028f7315fe21.tar.gz", + "hash": "0isw55vz55pcpsyi27lx7i2wrvc9r5rbi6ndljcbn8rbmx36xlyq" }, "mini-doc": { "type": "Git", @@ -1155,9 +1042,9 @@ }, "branch": "main", "submodules": false, - "revision": "8c6bf704287fb6ed15ace91e34d94fffeedbfffc", - "url": "https://github.com/echasnovski/mini.doc/archive/8c6bf704287fb6ed15ace91e34d94fffeedbfffc.tar.gz", - "hash": "16kjqxh94kcp8cswwdfx75dvn13vnrg45v39lk4vvcrqd5prah1m" + "revision": "9b3e1b20508c7a6218cadf59b177a79a5df290f6", + "url": "https://github.com/echasnovski/mini.doc/archive/9b3e1b20508c7a6218cadf59b177a79a5df290f6.tar.gz", + "hash": "1anxn3lasm1x3yn1i0hd4im7y8fvf0fhyazn3yj6hzpm4vb12p0k" }, "mini-extra": { "type": "Git", @@ -1168,9 +1055,9 @@ }, "branch": "main", "submodules": false, - "revision": "647deb1e79d8c871f6eda0572cf0000582487943", - "url": "https://github.com/echasnovski/mini.extra/archive/647deb1e79d8c871f6eda0572cf0000582487943.tar.gz", - "hash": "1m9kw7cx6fddwn1h0knlddbkii239v2d5qyckcn040fvm37s2fmd" + "revision": "dc571df8f1f61debd59e200adfe7f701c0d67eca", + "url": "https://github.com/echasnovski/mini.extra/archive/dc571df8f1f61debd59e200adfe7f701c0d67eca.tar.gz", + "hash": "14zbqrwcxyhax10q082n4wqmqb3519i5kmj0zc8flwmswv742gyr" }, "mini-files": { "type": "Git", @@ -1181,9 +1068,9 @@ }, "branch": "main", "submodules": false, - "revision": "d22c5b74b7764d0bd33e4988e5ee00139cfe22e3", - "url": "https://github.com/echasnovski/mini.files/archive/d22c5b74b7764d0bd33e4988e5ee00139cfe22e3.tar.gz", - "hash": "0wxs1amjf3mvz2zp2si7azg6xj4d4x8r98lvk0aq85aj4djrhzdk" + "revision": "432142ada983ec5863ba480f0e4891b7d64ce3f6", + "url": "https://github.com/echasnovski/mini.files/archive/432142ada983ec5863ba480f0e4891b7d64ce3f6.tar.gz", + "hash": "0422sf8jx5sxws2kssi3ynynpmm1xpgk7i50dqml1kc8nymx4z5b" }, "mini-fuzzy": { "type": "Git", @@ -1194,9 +1081,9 @@ }, "branch": "main", "submodules": false, - "revision": "ef22e4fdd79df86192e80d1a5244de3ab56f2f06", - "url": "https://github.com/echasnovski/mini.fuzzy/archive/ef22e4fdd79df86192e80d1a5244de3ab56f2f06.tar.gz", - "hash": "0q8v78piqjc84522lzjlxs5njgkarlcxg5njg8pw7vdg5f5q69wf" + "revision": "c33d6a93c4fe395ae8a9bd02fed35315a90b688a", + "url": "https://github.com/echasnovski/mini.fuzzy/archive/c33d6a93c4fe395ae8a9bd02fed35315a90b688a.tar.gz", + "hash": "0n3rnvhz1hzj32l006il96zf61iv4wc0fy6dqp1lyrqm13skadvp" }, "mini-git": { "type": "Git", @@ -1207,9 +1094,9 @@ }, "branch": "main", "submodules": false, - "revision": "0cdcfa1294558aad343234b928ef1c15040586ce", - "url": "https://github.com/echasnovski/mini-git/archive/0cdcfa1294558aad343234b928ef1c15040586ce.tar.gz", - "hash": "1pgj865r3yf0hivy6hmsnhibsrpzadimizsnj22438xfky8xsdp8" + "revision": "a0ddc6302f654523053c28109e8b6dbbf05c08f8", + "url": "https://github.com/echasnovski/mini-git/archive/a0ddc6302f654523053c28109e8b6dbbf05c08f8.tar.gz", + "hash": "0vf0ys710yf1apalglxj7kcdyrnrd7jkz1ksi9v1vj3h60pvany2" }, "mini-hipatterns": { "type": "Git", @@ -1220,9 +1107,9 @@ }, "branch": "main", "submodules": false, - "revision": "1e0e8f51d50b18eb23b50eef8d97bfd9482e29d9", - "url": "https://github.com/echasnovski/mini.hipatterns/archive/1e0e8f51d50b18eb23b50eef8d97bfd9482e29d9.tar.gz", - "hash": "1iwg4mc24ab4l8gj11aca0fwcbhxyfpkj9ipb2w21n52sla5r0s5" + "revision": "e5083df391171dc9d8172645606f8496d9443374", + "url": "https://github.com/echasnovski/mini.hipatterns/archive/e5083df391171dc9d8172645606f8496d9443374.tar.gz", + "hash": "116vpf4b86qbwrcax7dfhiswb4pwf3nmj2dh4kafj9vnpwyw1c3w" }, "mini-hues": { "type": "Git", @@ -1233,9 +1120,9 @@ }, "branch": "main", "submodules": false, - "revision": "3db0ee390af98c55e3336380b675ed23a053743a", - "url": "https://github.com/echasnovski/mini.hues/archive/3db0ee390af98c55e3336380b675ed23a053743a.tar.gz", - "hash": "0l8m4h5qliyp3527rwc9mzd2s3svjnyb2sngg9i6fwpdqjy4ay23" + "revision": "f1fa8ad34788eada276f0b8a41d96a15622933de", + "url": "https://github.com/echasnovski/mini.hues/archive/f1fa8ad34788eada276f0b8a41d96a15622933de.tar.gz", + "hash": "0yap91dqnr4jpwz1krmzay5p89pxb8v6m5457b6sm6f98956zgqq" }, "mini-icons": { "type": "Git", @@ -1246,9 +1133,9 @@ }, "branch": "main", "submodules": false, - "revision": "e8fae66cb400744daeedf6e387347df50271c252", - "url": "https://github.com/echasnovski/mini.icons/archive/e8fae66cb400744daeedf6e387347df50271c252.tar.gz", - "hash": "0ach18lv75hgxdfzdrsakdyl26syn3gxfw0fz90437s5ywzhc6nk" + "revision": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a", + "url": "https://github.com/echasnovski/mini.icons/archive/397ed3807e96b59709ef3292f0a3e253d5c1dc0a.tar.gz", + "hash": "110bglbbyafjym4md2slgccyjhf90bgg8h9h2ipya6cfqfs4pizy" }, "mini-indentscope": { "type": "Git", @@ -1259,9 +1146,9 @@ }, "branch": "main", "submodules": false, - "revision": "fc1bb1e4573f7174cb6e2bbabc3453340a9eec16", - "url": "https://github.com/echasnovski/mini.indentscope/archive/fc1bb1e4573f7174cb6e2bbabc3453340a9eec16.tar.gz", - "hash": "0yvd97rdx5sxq248s6xdw1lcpc2b0zhsgvy7mndc3mzd8k3lmvj7" + "revision": "8af2569a7d7fd37300dfa760e44e71efbbf322fd", + "url": "https://github.com/echasnovski/mini.indentscope/archive/8af2569a7d7fd37300dfa760e44e71efbbf322fd.tar.gz", + "hash": "1xk31bl9gchc8r1pv6f2z7nfkr6q7f1i4qrrj3h4crxb6nhpxmry" }, "mini-jump": { "type": "Git", @@ -1272,9 +1159,9 @@ }, "branch": "main", "submodules": false, - "revision": "86cb4bf366cedbeaf81cc282049852995cb5c462", - "url": "https://github.com/echasnovski/mini.jump/archive/86cb4bf366cedbeaf81cc282049852995cb5c462.tar.gz", - "hash": "197c1mmxh5sw5g0al83vmi7472va516psdpsp4sk31k30zjwk8di" + "revision": "65bf2c55680d8be63d29ce0c5ee4e33031426115", + "url": "https://github.com/echasnovski/mini.jump/archive/65bf2c55680d8be63d29ce0c5ee4e33031426115.tar.gz", + "hash": "17ilfgsazwq20rw42am1jzxvcdzbzsk65jzsxa5s8zs65sx6rdch" }, "mini-jump2d": { "type": "Git", @@ -1285,9 +1172,9 @@ }, "branch": "main", "submodules": false, - "revision": "cd902f64880a0acab7595337884c5d8e381968ca", - "url": "https://github.com/echasnovski/mini.jump2d/archive/cd902f64880a0acab7595337884c5d8e381968ca.tar.gz", - "hash": "02bl1mxsjl1s23vysxfjizz3ci6na52knvs6k1jpwklmdj1nflnv" + "revision": "c90f7f8cebf3282d0f0b228015fceefb841375c6", + "url": "https://github.com/echasnovski/mini.jump2d/archive/c90f7f8cebf3282d0f0b228015fceefb841375c6.tar.gz", + "hash": "04wv8q8g5p1sv6hdaq83rik9x7fq8ki4d617v5gk5d3nv0i6pqq0" }, "mini-map": { "type": "Git", @@ -1298,9 +1185,9 @@ }, "branch": "main", "submodules": false, - "revision": "8317f824d8a183613b744d5eb39757357f6b528c", - "url": "https://github.com/echasnovski/mini.map/archive/8317f824d8a183613b744d5eb39757357f6b528c.tar.gz", - "hash": "0nryfvab8i9h855djksxzg4d21d049z6jzbyp771y9cbzbi67vw1" + "revision": "f3c156693a9f68a10ae285d537edd36f4cf0e64f", + "url": "https://github.com/echasnovski/mini.map/archive/f3c156693a9f68a10ae285d537edd36f4cf0e64f.tar.gz", + "hash": "1z2rf664z7krs40w66b5fjmq3xffv357mv689425i5nyc1q0gr4n" }, "mini-misc": { "type": "Git", @@ -1311,9 +1198,9 @@ }, "branch": "main", "submodules": false, - "revision": "cc07b078146bcea14f19dd8ff525dbd57af93e5f", - "url": "https://github.com/echasnovski/mini.misc/archive/cc07b078146bcea14f19dd8ff525dbd57af93e5f.tar.gz", - "hash": "1lws9aj88lysdf514nq1lw98hdln0jwb76ykcyjf036dxs7wwfzc" + "revision": "52bf20e952a26820c25776c7b594f64b7a6dcb66", + "url": "https://github.com/echasnovski/mini.misc/archive/52bf20e952a26820c25776c7b594f64b7a6dcb66.tar.gz", + "hash": "0r2xmxlsq8ifq4ps54l7yjljczlp7ldxp8b30gjdkkrbbi1rkbvg" }, "mini-move": { "type": "Git", @@ -1324,9 +1211,9 @@ }, "branch": "main", "submodules": false, - "revision": "7231697e0e90d03f2bebab3108c5028a73af8934", - "url": "https://github.com/echasnovski/mini.move/archive/7231697e0e90d03f2bebab3108c5028a73af8934.tar.gz", - "hash": "1wzyyavagn9ms446ag2fx3nbasadgms6gps7xjhkjvzciz0iiq7a" + "revision": "4fe4a855fee53c66b0f3255a4b54ddc2ae6b308c", + "url": "https://github.com/echasnovski/mini.move/archive/4fe4a855fee53c66b0f3255a4b54ddc2ae6b308c.tar.gz", + "hash": "0dd29nx1z54ljjz9m4m9ghhv39x7ajjx43hbr4gn7p1lv2kvjv7p" }, "mini-notify": { "type": "Git", @@ -1337,9 +1224,9 @@ }, "branch": "main", "submodules": false, - "revision": "68ce2126c831bfcb9dcc359c15ccb105cf136718", - "url": "https://github.com/echasnovski/mini.notify/archive/68ce2126c831bfcb9dcc359c15ccb105cf136718.tar.gz", - "hash": "13mswvymfd01x8nmnw7pmg3x211666w6hzym00fldbfz4lxwr08l" + "revision": "f4e892533c8821bc5e0f373b353022a42bd465f7", + "url": "https://github.com/echasnovski/mini.notify/archive/f4e892533c8821bc5e0f373b353022a42bd465f7.tar.gz", + "hash": "0ziqqd8zz2d28x7801g9h45jgcv5vxqx25wcyh3574zrd5aay5s7" }, "mini-operators": { "type": "Git", @@ -1350,9 +1237,9 @@ }, "branch": "main", "submodules": false, - "revision": "11a340facf8fa4880efd39d4cd01333b5b79728f", - "url": "https://github.com/echasnovski/mini.operators/archive/11a340facf8fa4880efd39d4cd01333b5b79728f.tar.gz", - "hash": "0gmy5isrxrgd2qiv1la78ndr2frn4kv8fyfy6amlyciadhrw7j31" + "revision": "c6d87731f1a2c849888754347ffc5a1395bf2977", + "url": "https://github.com/echasnovski/mini.operators/archive/c6d87731f1a2c849888754347ffc5a1395bf2977.tar.gz", + "hash": "1ijnhxajpii17a1rz1avp1i5j35an2dq0ji28v2wrvaa0b5jg13a" }, "mini-pairs": { "type": "Git", @@ -1363,9 +1250,9 @@ }, "branch": "main", "submodules": false, - "revision": "bada72fe4ec607f882a098d15aa4a3279bc6883d", - "url": "https://github.com/echasnovski/mini.pairs/archive/bada72fe4ec607f882a098d15aa4a3279bc6883d.tar.gz", - "hash": "1dmm25d5awc6hcjqwcglrx690pvd26wxwmnkby193gx4jpxiax67" + "revision": "69864a2efb36c030877421634487fd90db1e4298", + "url": "https://github.com/echasnovski/mini.pairs/archive/69864a2efb36c030877421634487fd90db1e4298.tar.gz", + "hash": "0avjjikmz3b8676hzcqck3r2lv0zxsdr8hqs65zn2dr12q8zh41r" }, "mini-pick": { "type": "Git", @@ -1376,9 +1263,9 @@ }, "branch": "main", "submodules": false, - "revision": "364a239e1c87ce1c4e9355cb7836d99686bb1912", - "url": "https://github.com/echasnovski/mini.pick/archive/364a239e1c87ce1c4e9355cb7836d99686bb1912.tar.gz", - "hash": "1kvglhrqqfn1b2z22q6hdhjynxqnmkmnx9dwg23h19r9y3lrfjgs" + "revision": "6cad781797f3a9b0e69f2e9a2d63de8b1c1824f5", + "url": "https://github.com/echasnovski/mini.pick/archive/6cad781797f3a9b0e69f2e9a2d63de8b1c1824f5.tar.gz", + "hash": "1nsnz9dys2nsjrpzm4d3dc4qjms5f7pqsxbgnvglibi9vizrkahx" }, "mini-sessions": { "type": "Git", @@ -1389,9 +1276,9 @@ }, "branch": "main", "submodules": false, - "revision": "3c42869b9da52090cd8b81e8877548fbbbfffaf6", - "url": "https://github.com/echasnovski/mini.sessions/archive/3c42869b9da52090cd8b81e8877548fbbbfffaf6.tar.gz", - "hash": "1dwg1cn36qhj7xwncb9gbng10wh1ys0zq90viiw43w9hqcsynjf3" + "revision": "dd7fe484dfcbf270a788e9291545df509cdb9691", + "url": "https://github.com/echasnovski/mini.sessions/archive/dd7fe484dfcbf270a788e9291545df509cdb9691.tar.gz", + "hash": "0m8l1hw8y3mwhcnyzhxb7j4jvvwmf8i7ybxddy2r2rq89rc7x3ln" }, "mini-snippets": { "type": "Git", @@ -1402,9 +1289,9 @@ }, "branch": "main", "submodules": false, - "revision": "e8610e97a6c50f7dd521bd76d7b90a996a96cd09", - "url": "https://github.com/echasnovski/mini.snippets/archive/e8610e97a6c50f7dd521bd76d7b90a996a96cd09.tar.gz", - "hash": "01lkrp41srd4b8az1rdliqrxxmsaykizni99z1488xr61x58lnax" + "revision": "e05106957fc178285dbc510ff833985da59d3e5a", + "url": "https://github.com/echasnovski/mini.snippets/archive/e05106957fc178285dbc510ff833985da59d3e5a.tar.gz", + "hash": "0pn9i6sfh3fxkjzh9yyyc05lgcgm8wsanvl7axmy4p7a9spnfa2q" }, "mini-splitjoin": { "type": "Git", @@ -1415,9 +1302,9 @@ }, "branch": "main", "submodules": false, - "revision": "0826fa1cf68a2db309b6208232f41b2a45360216", - "url": "https://github.com/echasnovski/mini.splitjoin/archive/0826fa1cf68a2db309b6208232f41b2a45360216.tar.gz", - "hash": "0sb09lsliy7wp9nzx74g8mvnb72gl0dh521hcryk0sn968ayk4ip" + "revision": "70240d5d3881ff1b2b1d7902450f98a6fa303800", + "url": "https://github.com/echasnovski/mini.splitjoin/archive/70240d5d3881ff1b2b1d7902450f98a6fa303800.tar.gz", + "hash": "1sp4p0s4cv888n0nmgy04j5k51ndxpmksy235rg9jkk7j5gg47qb" }, "mini-starter": { "type": "Git", @@ -1428,9 +1315,9 @@ }, "branch": "main", "submodules": false, - "revision": "99e548b6f56c93965e30ad54803076886cd4dbb9", - "url": "https://github.com/echasnovski/mini.starter/archive/99e548b6f56c93965e30ad54803076886cd4dbb9.tar.gz", - "hash": "1wy6qml9gjv0w4snmfxrq262djrv1f0pd5y2126laq79qlks32yb" + "revision": "d8038690eadf203a40863c3a9423df880a901d39", + "url": "https://github.com/echasnovski/mini.starter/archive/d8038690eadf203a40863c3a9423df880a901d39.tar.gz", + "hash": "06rglm7m32lrgba47vb96kaxdsyz8pl2ivbr41m1swy3ihrv69y3" }, "mini-statusline": { "type": "Git", @@ -1441,9 +1328,9 @@ }, "branch": "main", "submodules": false, - "revision": "9968a44b2dad6866615dcd970eac26903d6ed05c", - "url": "https://github.com/echasnovski/mini.statusline/archive/9968a44b2dad6866615dcd970eac26903d6ed05c.tar.gz", - "hash": "1lsbygzs3fz54wql2ag6hvbdg0sg3187plzhlvpk8lzgj724b43h" + "revision": "e331175f10d9f400b42523b3890841aba202ce16", + "url": "https://github.com/echasnovski/mini.statusline/archive/e331175f10d9f400b42523b3890841aba202ce16.tar.gz", + "hash": "1hhd4fln3m04d9v5pwa3mb1n4nifsilrxp8hs14njcgk2rxv6qar" }, "mini-surround": { "type": "Git", @@ -1454,9 +1341,9 @@ }, "branch": "main", "submodules": false, - "revision": "aec6ed2902a2fd809e3c2fe79ee4568791285201", - "url": "https://github.com/echasnovski/mini.surround/archive/aec6ed2902a2fd809e3c2fe79ee4568791285201.tar.gz", - "hash": "0sm8ahyzqqz1p7lp62gp8wic13djv4ya4lrfvf5chrwbcqzg53nd" + "revision": "5aab42fcdcf31fa010f012771eda5631c077840a", + "url": "https://github.com/echasnovski/mini.surround/archive/5aab42fcdcf31fa010f012771eda5631c077840a.tar.gz", + "hash": "0hsy7ngqz17a663k4gkj9ambbcn24jvqx7010aiv8g4b0gbmzhky" }, "mini-tabline": { "type": "Git", @@ -1467,9 +1354,9 @@ }, "branch": "main", "submodules": false, - "revision": "c08c7a9715d29139128f8087338e78923f34e72c", - "url": "https://github.com/echasnovski/mini.tabline/archive/c08c7a9715d29139128f8087338e78923f34e72c.tar.gz", - "hash": "0116n6swafikmdwpz0h18szlqs6xb34l1v3rb8hlc4rbradwfx62" + "revision": "ff7a050721352580184db1ff203286c1032d5b54", + "url": "https://github.com/echasnovski/mini.tabline/archive/ff7a050721352580184db1ff203286c1032d5b54.tar.gz", + "hash": "142vv5nwg3bvia21frmcyps1ycyqqj1l0v5vclrm46cwaz2b2qfb" }, "mini-test": { "type": "Git", @@ -1480,9 +1367,9 @@ }, "branch": "main", "submodules": false, - "revision": "49fff7a133a4ecbce6eb439b44e7dad419b1f38b", - "url": "https://github.com/echasnovski/mini.test/archive/49fff7a133a4ecbce6eb439b44e7dad419b1f38b.tar.gz", - "hash": "1i6g5im6yahi2mnjb4dyncrfw8gf1nj492ivxznx7lj8im7vppv4" + "revision": "4c70379d07ea44f697d96c7a6f04c79f17b34bb3", + "url": "https://github.com/echasnovski/mini.test/archive/4c70379d07ea44f697d96c7a6f04c79f17b34bb3.tar.gz", + "hash": "0si92d4jc7lmzj2mppz0vcmgqgsbgy64fl4bj8jwdl7z78bhpjwk" }, "mini-trailspace": { "type": "Git", @@ -1493,9 +1380,9 @@ }, "branch": "main", "submodules": false, - "revision": "e0265c5ad106cf3fa7194c024e48d20b13b33006", - "url": "https://github.com/echasnovski/mini.trailspace/archive/e0265c5ad106cf3fa7194c024e48d20b13b33006.tar.gz", - "hash": "1s49ivldd5i8xpvvfi0cv82w8x6j2d7i5pw95dpk85djn6r7vxrk" + "revision": "39a0460c025a605519fdd6bea1ce870642429996", + "url": "https://github.com/echasnovski/mini.trailspace/archive/39a0460c025a605519fdd6bea1ce870642429996.tar.gz", + "hash": "1d95vcxm7fhav8gz9n8m36q3hkxi6j1p0f6y35qnps1x7yz1wyfg" }, "mini-visits": { "type": "Git", @@ -1506,9 +1393,9 @@ }, "branch": "main", "submodules": false, - "revision": "49d96e5e8aceb9956ea2188d52be8da6cc66e0c9", - "url": "https://github.com/echasnovski/mini.visits/archive/49d96e5e8aceb9956ea2188d52be8da6cc66e0c9.tar.gz", - "hash": "14i621gc0q9q4s6dhs7fpj79cv7g6bmiy8lzadhhi0hriaxjk9hy" + "revision": "c0a3b02f5d82080a2aa6cd9185ff16944ce2451a", + "url": "https://github.com/echasnovski/mini.visits/archive/c0a3b02f5d82080a2aa6cd9185ff16944ce2451a.tar.gz", + "hash": "02wr34zzd5x6zn4iwhbv5g4shibpvb8536hr5lk0aw7i55aqg5x8" }, "minimap-vim": { "type": "Git", @@ -1545,9 +1432,9 @@ }, "branch": "main", "submodules": false, - "revision": "0932ba4e0bdc3457ac89a8aeed4d56ca0b36977a", - "url": "https://github.com/mvllow/modes.nvim/archive/0932ba4e0bdc3457ac89a8aeed4d56ca0b36977a.tar.gz", - "hash": "0kr0q38bjrwb0hihavhdhpd4x5xykxwp09zsdxfkf3c1zi5paz29" + "revision": "7c6ca20de4c9acb22ef06074e39fd2c021b99935", + "url": "https://github.com/mvllow/modes.nvim/archive/7c6ca20de4c9acb22ef06074e39fd2c021b99935.tar.gz", + "hash": "088bacsy76imlyd4njgrw7cg2l82dddr23g25qx81ihlaf3vmdjp" }, "multicursors-nvim": { "type": "GitRelease", @@ -1574,9 +1461,9 @@ }, "branch": "main", "submodules": false, - "revision": "9130e58424ad95bf2dd8b40afbb8cf04d648638c", - "url": "https://github.com/nvim-neo-tree/neo-tree.nvim/archive/9130e58424ad95bf2dd8b40afbb8cf04d648638c.tar.gz", - "hash": "0zm40p718cvqg9ngzlnc56pbglrp7yp1580g0f1pfakkwdrvnhdv" + "revision": "5224467c6a49a6c77b8a8333f4d9af0abc788e10", + "url": "https://github.com/nvim-neo-tree/neo-tree.nvim/archive/5224467c6a49a6c77b8a8333f4d9af0abc788e10.tar.gz", + "hash": "0dzppxi4w38s3pqsgwd3z0xr1r14bd0v4qpakxw3kjn9wr2d8y7n" }, "neocord": { "type": "Git", @@ -1587,25 +1474,9 @@ }, "branch": "main", "submodules": false, - "revision": "2ebf3792a8100376bb65fd66d5dbf60f50af7529", - "url": "https://github.com/IogaMaster/neocord/archive/2ebf3792a8100376bb65fd66d5dbf60f50af7529.tar.gz", - "hash": "1ycx26ppfb5djxji1mwamr7ra29z8sm0fs9a6hhwn0l69x06x353" - }, - "neogit": { - "type": "GitRelease", - "repository": { - "type": "GitHub", - "owner": "NeogitOrg", - "repo": "neogit" - }, - "pre_releases": false, - "version_upper_bound": null, - "release_prefix": null, - "submodules": false, - "version": "v3.0.0", - "revision": "f635fa74477a1c1556bbcb85ce121e5f1c2a9335", - "url": "https://api.github.com/repos/NeogitOrg/neogit/tarball/v3.0.0", - "hash": "0d8ln5lzp6qaigv93vkwgi3s1dcrphr7w5y412xlbyjaz3zcqrb8" + "revision": "41bacd44e9d36f5e36e0271672ac2c02f6fa355a", + "url": "https://github.com/IogaMaster/neocord/archive/41bacd44e9d36f5e36e0271672ac2c02f6fa355a.tar.gz", + "hash": "1n998zsv0bikscwpr75qq11xh559xzx6d7rs7fc21jj1rivkk4aw" }, "neorg": { "type": "Git", @@ -1616,9 +1487,9 @@ }, "branch": "main", "submodules": false, - "revision": "4da2159b3f3420d43613f43e159f4253b8544474", - "url": "https://github.com/nvim-neorg/neorg/archive/4da2159b3f3420d43613f43e159f4253b8544474.tar.gz", - "hash": "1yrsr4rlr8q2dfykkdxxf9q3nlvslvgyfiq8w6fpsnzj2xs5nnhc" + "revision": "a1e19618c012a712c5ed7cd5ebd01b48ad9f4b5b", + "url": "https://github.com/nvim-neorg/neorg/archive/a1e19618c012a712c5ed7cd5ebd01b48ad9f4b5b.tar.gz", + "hash": "1lp1chm788rnzqjndw64rnjn299889fx66lm01lvfgail0509dw0" }, "neorg-telescope": { "type": "Git", @@ -1629,9 +1500,9 @@ }, "branch": "main", "submodules": false, - "revision": "7fb6ca6a632c3c095601d379a664c0c1f802dc6c", - "url": "https://github.com/nvim-neorg/neorg-telescope/archive/7fb6ca6a632c3c095601d379a664c0c1f802dc6c.tar.gz", - "hash": "12pbixkb7175qb9wblq01mbpkccm9h0si7b2jjaf7yip8j8frxmn" + "revision": "ddb2556644cae922699a239bbb0fe16e25b084b7", + "url": "https://github.com/nvim-neorg/neorg-telescope/archive/ddb2556644cae922699a239bbb0fe16e25b084b7.tar.gz", + "hash": "0p2s3n22fy1vkqc9n55x6kssqs4n0znwlszfrs532hj8m992wbks" }, "neovim-session-manager": { "type": "Git", @@ -1694,9 +1565,9 @@ }, "branch": "main", "submodules": false, - "revision": "5cf63841461b49989972d35bf886e076a1ab3649", - "url": "https://github.com/nvimtools/none-ls.nvim/archive/5cf63841461b49989972d35bf886e076a1ab3649.tar.gz", - "hash": "16p9wipxm59rrlzwck9d7bp1i3f8yxn8kan1pddvkgr4sdmxxprf" + "revision": "8d99472fcccffd73d7501e54e9018bab5cb0c4ad", + "url": "https://github.com/nvimtools/none-ls.nvim/archive/8d99472fcccffd73d7501e54e9018bab5cb0c4ad.tar.gz", + "hash": "1x1fmpy65j8smn5lfl9bknmfnan33gd5dila49gyblgcgfvpd7ph" }, "nord": { "type": "Git", @@ -1707,9 +1578,9 @@ }, "branch": "main", "submodules": false, - "revision": "c0e33fc6a2587cdda67b4ee9eb26d01350a8f96b", - "url": "https://github.com/gbprod/nord.nvim/archive/c0e33fc6a2587cdda67b4ee9eb26d01350a8f96b.tar.gz", - "hash": "0i1ak45gxpsn3qqxwca5v0x8civ08sx7n1nswb8fmcp6jid6g9ix" + "revision": "57fb474a1d628bdf9d1e7964719464ed5675d7c7", + "url": "https://github.com/gbprod/nord.nvim/archive/57fb474a1d628bdf9d1e7964719464ed5675d7c7.tar.gz", + "hash": "1qdrss698sllsv0dkpfj6idap5w0dhkjwmy59kgafpdv0xyid2gp" }, "nui-nvim": { "type": "Git", @@ -1720,9 +1591,9 @@ }, "branch": "main", "submodules": false, - "revision": "de740991c12411b663994b2860f1a4fd0937c130", - "url": "https://github.com/MunifTanjim/nui.nvim/archive/de740991c12411b663994b2860f1a4fd0937c130.tar.gz", - "hash": "0l1ga86dr2rhfjshiicsw3nn03wrhmdqks8v1gn3xmzdgfd2anz3" + "revision": "8d3bce9764e627b62b07424e0df77f680d47ffdb", + "url": "https://github.com/MunifTanjim/nui.nvim/archive/8d3bce9764e627b62b07424e0df77f680d47ffdb.tar.gz", + "hash": "0ia8q5d4xcss45vw6jlaanyr0migy03cjzq9g0kipfyqxkcxi105" }, "nvim-autopairs": { "type": "Git", @@ -1733,22 +1604,22 @@ }, "branch": "master", "submodules": false, - "revision": "23320e75953ac82e559c610bec5a90d9c6dfa743", - "url": "https://github.com/windwp/nvim-autopairs/archive/23320e75953ac82e559c610bec5a90d9c6dfa743.tar.gz", - "hash": "12lkkyl6ink1qrpggbjfck2ab3yfj5mpa6jfgkrw451d1ycd4rz5" + "revision": "2a406cdd8c373ae7fe378a9e062a5424472bd8d8", + "url": "https://github.com/windwp/nvim-autopairs/archive/2a406cdd8c373ae7fe378a9e062a5424472bd8d8.tar.gz", + "hash": "06i7bdq4msy2gia6mczxaj2y7chhrmw9xwjj8q4dix0pk58hjfp1" }, - "nvim-biscuits": { + "nvim-bufferline-lua": { "type": "Git", "repository": { "type": "GitHub", - "owner": "code-biscuits", - "repo": "nvim-biscuits" + "owner": "akinsho", + "repo": "nvim-bufferline.lua" }, "branch": "main", "submodules": false, - "revision": "dae2323054b9ff3a1f6300847dee29c00cdabdde", - "url": "https://github.com/code-biscuits/nvim-biscuits/archive/dae2323054b9ff3a1f6300847dee29c00cdabdde.tar.gz", - "hash": "0h86kj2hgs8lqcnfj9b96w8yx83plv4hp1dj5r3gzkj8zqiq8i5g" + "revision": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3", + "url": "https://github.com/akinsho/nvim-bufferline.lua/archive/655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3.tar.gz", + "hash": "0m5363rpbjgvsnbhp9yrivbqj17lmrb5m57lpnq7dgxsmw3hrvk9" }, "nvim-cmp": { "type": "Git", @@ -1759,9 +1630,9 @@ }, "branch": "main", "submodules": false, - "revision": "b5311ab3ed9c846b585c0c15b7559be131ec4be9", - "url": "https://github.com/hrsh7th/nvim-cmp/archive/b5311ab3ed9c846b585c0c15b7559be131ec4be9.tar.gz", - "hash": "07674djcyac9wlj08y9p5gsmdpsm8zxjfgk3fwyvvx8j7qyzx74p" + "revision": "059e89495b3ec09395262f16b1ad441a38081d04", + "url": "https://github.com/hrsh7th/nvim-cmp/archive/059e89495b3ec09395262f16b1ad441a38081d04.tar.gz", + "hash": "0yfxjkascn45svvzx727kz20bm6lkflkx4jc8nrx3rxv0j39wbb0" }, "nvim-colorizer-lua": { "type": "Git", @@ -1772,9 +1643,9 @@ }, "branch": "master", "submodules": false, - "revision": "51cf7c995ed1eb6642aecf19067ee634fa1b6ba2", - "url": "https://github.com/NvChad/nvim-colorizer.lua/archive/51cf7c995ed1eb6642aecf19067ee634fa1b6ba2.tar.gz", - "hash": "1gxjpdm4i4bylx9wlp1ldbs8sskjz79pfysk7avy8zbk7d2mwman" + "revision": "517df88cf2afb36652830df2c655df2da416a0ae", + "url": "https://github.com/NvChad/nvim-colorizer.lua/archive/517df88cf2afb36652830df2c655df2da416a0ae.tar.gz", + "hash": "0gaxkq30wvxq3d8x6l6r10vdxyizfi5g55xnvzw69lfyl61d9qy8" }, "nvim-cursorline": { "type": "Git", @@ -1798,9 +1669,9 @@ }, "branch": "master", "submodules": false, - "revision": "7367cec8e8f7a0b1e4566af9a7ef5959d11206a7", - "url": "https://github.com/mfussenegger/nvim-dap/archive/7367cec8e8f7a0b1e4566af9a7ef5959d11206a7.tar.gz", - "hash": "0idq35srs368nq3acz18wqwhl32c6vca70nxv72xd44zahnrm973" + "revision": "7aade9e99bef5f0735cf966e715b3ce45515d786", + "url": "https://github.com/mfussenegger/nvim-dap/archive/7aade9e99bef5f0735cf966e715b3ce45515d786.tar.gz", + "hash": "0cr2y3lkr6ffxxd9b2pj8hr3fzb5dlj003fcknswqwsdhws75l22" }, "nvim-dap-go": { "type": "Git", @@ -1811,9 +1682,9 @@ }, "branch": "main", "submodules": false, - "revision": "b4421153ead5d726603b02743ea40cf26a51ed5f", - "url": "https://github.com/leoluz/nvim-dap-go/archive/b4421153ead5d726603b02743ea40cf26a51ed5f.tar.gz", - "hash": "02i2b6w4ashkx1vnj8bclnlpnjzn2ahakq5vw6hcj04ydn4n83y2" + "revision": "8763ced35b19c8dc526e04a70ab07c34e11ad064", + "url": "https://github.com/leoluz/nvim-dap-go/archive/8763ced35b19c8dc526e04a70ab07c34e11ad064.tar.gz", + "hash": "1s4vkq2ni9a5df455qn6qbj44r82rcghkcbkifxdcmz2kvmq3wmn" }, "nvim-dap-ui": { "type": "Git", @@ -1824,9 +1695,9 @@ }, "branch": "master", "submodules": false, - "revision": "cf91d5e2d07c72903d052f5207511bf7ecdb7122", - "url": "https://github.com/rcarriga/nvim-dap-ui/archive/cf91d5e2d07c72903d052f5207511bf7ecdb7122.tar.gz", - "hash": "04378nxmh37dys2zbpwqs0wp82yr8racpmy7r44y1snx30577pfz" + "revision": "bc81f8d3440aede116f821114547a476b082b319", + "url": "https://github.com/rcarriga/nvim-dap-ui/archive/bc81f8d3440aede116f821114547a476b082b319.tar.gz", + "hash": "0hk34mfjxqiq82faf3q75ixpxd822vh8zbl1i5pvx6akn4v3mxk7" }, "nvim-docs-view": { "type": "Git", @@ -1837,22 +1708,9 @@ }, "branch": "master", "submodules": false, - "revision": "a5256fd30417f58804691df174bc76a8c8f8163a", - "url": "https://github.com/amrbashir/nvim-docs-view/archive/a5256fd30417f58804691df174bc76a8c8f8163a.tar.gz", - "hash": "01jc102zzhn1vygjgqqbfbp0q0pjcccpy1113ssmg59p2ckzp1v0" - }, - "nvim-highlight-colors": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "brenoprata10", - "repo": "nvim-highlight-colors" - }, - "branch": "main", - "submodules": false, - "revision": "e0c4a58ec8c3ca7c92d3ee4eb3bc1dd0f7be317e", - "url": "https://github.com/brenoprata10/nvim-highlight-colors/archive/e0c4a58ec8c3ca7c92d3ee4eb3bc1dd0f7be317e.tar.gz", - "hash": "1lm3f0sf9g8h0w10waqjx12i61nzhgk6f19lp8qdsyx2c59hx1q4" + "revision": "f674ba57349849bce894efdd54096483c88e810b", + "url": "https://github.com/amrbashir/nvim-docs-view/archive/f674ba57349849bce894efdd54096483c88e810b.tar.gz", + "hash": "0ifbfhifly5sdsbxv1p71wvl644jz505ln9j1yr6qwvyk6a2krm1" }, "nvim-lightbulb": { "type": "Git", @@ -1876,9 +1734,9 @@ }, "branch": "master", "submodules": false, - "revision": "335a6044be16d7701001059cba9baa36fbeef422", - "url": "https://github.com/mfussenegger/nvim-lint/archive/335a6044be16d7701001059cba9baa36fbeef422.tar.gz", - "hash": "1bqaljh4wbhxkyhdm75wgfgk29431mbji6z0sbzdvgs0qrzd1s9w" + "revision": "5b1bdf306bd3e565908145279e8bbfc594dac3b3", + "url": "https://github.com/mfussenegger/nvim-lint/archive/5b1bdf306bd3e565908145279e8bbfc594dac3b3.tar.gz", + "hash": "0kwdb9wggkgzg9msrvnf15njqm9a8acljdak9fxnfh9al1ks8cav" }, "nvim-lspconfig": { "type": "Git", @@ -1889,9 +1747,9 @@ }, "branch": "master", "submodules": false, - "revision": "db8fef885009fdec0daeff3e5dda92e1f539611e", - "url": "https://github.com/neovim/nvim-lspconfig/archive/db8fef885009fdec0daeff3e5dda92e1f539611e.tar.gz", - "hash": "04ji3265bddlfqrb6gpv402nm078xwp4gbk03z3xh9cl1k7k1n2d" + "revision": "6ac17e69a353fea377b30a35a672a30f04e887a1", + "url": "https://github.com/neovim/nvim-lspconfig/archive/6ac17e69a353fea377b30a35a672a30f04e887a1.tar.gz", + "hash": "0s1hb7fkjvccycwdzq10lrycs8xmdlk9n4pjafgwgmnhnmgb3sfr" }, "nvim-metals": { "type": "Git", @@ -1902,9 +1760,9 @@ }, "branch": "main", "submodules": false, - "revision": "db6c9ffb32ec698b96d11cba1317dccc26f5c16d", - "url": "https://github.com/scalameta/nvim-metals/archive/db6c9ffb32ec698b96d11cba1317dccc26f5c16d.tar.gz", - "hash": "0a3lrpvqzngvj8qi2jki8yficbqif47s6dvfgpiq6lz2gm8xmnbx" + "revision": "bc896458ac639dea568e8dc06862074f8cba7fa3", + "url": "https://github.com/scalameta/nvim-metals/archive/bc896458ac639dea568e8dc06862074f8cba7fa3.tar.gz", + "hash": "0k7c300rf62f50vqzxxdgh7pqpb61im6xbz230fysvdjdx1ddglh" }, "nvim-navbuddy": { "type": "Git", @@ -1915,9 +1773,9 @@ }, "branch": "master", "submodules": false, - "revision": "a34786c77a528519f6b8a142db7609f6e387842d", - "url": "https://github.com/SmiteshP/nvim-navbuddy/archive/a34786c77a528519f6b8a142db7609f6e387842d.tar.gz", - "hash": "0b6bazh531bixskpmmpkidqii4n3m7n2cp9bmzml5wb0wibazcac" + "revision": "f22bac988f2dd073601d75ba39ea5636ab6e38cb", + "url": "https://github.com/SmiteshP/nvim-navbuddy/archive/f22bac988f2dd073601d75ba39ea5636ab6e38cb.tar.gz", + "hash": "034pmg403y0y1fxnb1jv291mr016bx1vn68y543v6v4dpbdlr7di" }, "nvim-navic": { "type": "Git", @@ -1928,9 +1786,9 @@ }, "branch": "master", "submodules": false, - "revision": "f887d794a0f4594882814d7780980a949200a238", - "url": "https://github.com/SmiteshP/nvim-navic/archive/f887d794a0f4594882814d7780980a949200a238.tar.gz", - "hash": "0mxsnwvrjirpy2ichsilx6207z55xi42syg5d3fdgs2r1p1npggc" + "revision": "8649f694d3e76ee10c19255dece6411c29206a54", + "url": "https://github.com/SmiteshP/nvim-navic/archive/8649f694d3e76ee10c19255dece6411c29206a54.tar.gz", + "hash": "0964wgwh6i4nm637vx36bshkpd5i63ipwzqmrdbkz5h9bzyng7nj" }, "nvim-neoclip-lua": { "type": "Git", @@ -1967,9 +1825,9 @@ }, "branch": "master", "submodules": false, - "revision": "8701bece920b38ea289b457f902e2ad184131a5d", - "url": "https://github.com/rcarriga/nvim-notify/archive/8701bece920b38ea289b457f902e2ad184131a5d.tar.gz", - "hash": "1qsxv5w8pb4pv0963lwhsy21cgi75mw2a0s20vm1821y6qr97d47" + "revision": "22f29093eae7785773ee9d543f8750348b1a195c", + "url": "https://github.com/rcarriga/nvim-notify/archive/22f29093eae7785773ee9d543f8750348b1a195c.tar.gz", + "hash": "0nnxmi65ppmn8dzwh38vx2w7w6piq0i28mw0s32wa31xn5rmzwza" }, "nvim-scrollbar": { "type": "Git", @@ -1980,9 +1838,9 @@ }, "branch": "main", "submodules": false, - "revision": "5b103ef0fd2e8b9b4be3878ed38d224522192c6c", - "url": "https://github.com/petertriho/nvim-scrollbar/archive/5b103ef0fd2e8b9b4be3878ed38d224522192c6c.tar.gz", - "hash": "1bh34njkvlbkjzy62w48rzjmliaj6lczgxxkks455r0w7yvfklv7" + "revision": "6994eb9f73d5fdc36ee2c8717940e8c853e51a49", + "url": "https://github.com/petertriho/nvim-scrollbar/archive/6994eb9f73d5fdc36ee2c8717940e8c853e51a49.tar.gz", + "hash": "0h01gcaqgjkb2392zl2jwvlsh5qmz10k9sy5rhyz1kwizmw7nw7y" }, "nvim-surround": { "type": "Git", @@ -1993,9 +1851,9 @@ }, "branch": "main", "submodules": false, - "revision": "75de1782c781961e392efcca57601bf436f4d550", - "url": "https://github.com/kylechui/nvim-surround/archive/75de1782c781961e392efcca57601bf436f4d550.tar.gz", - "hash": "1ik23ii18ndh4fbv92m24cccwh7l5ms8m601phd99lm2q9pybipf" + "revision": "caf6f633d4d77a29b6e265b560c5a035d171a913", + "url": "https://github.com/kylechui/nvim-surround/archive/caf6f633d4d77a29b6e265b560c5a035d171a913.tar.gz", + "hash": "130y0b2f69y5rzm64ss34a9zyqkpkybr2d1s4p0pcvvaq1ngq0r0" }, "nvim-tree-lua": { "type": "Git", @@ -2006,9 +1864,9 @@ }, "branch": "master", "submodules": false, - "revision": "87d096a39cb2d5d43e6771563575ff042a79f48b", - "url": "https://github.com/nvim-tree/nvim-tree.lua/archive/87d096a39cb2d5d43e6771563575ff042a79f48b.tar.gz", - "hash": "1jc4nj1l7cj4175bafr84mz048brv7h1zkzpyk30vivxgkqisr2f" + "revision": "5bea2b37523a31288e0fcab42f3be5c1bd4516bb", + "url": "https://github.com/nvim-tree/nvim-tree.lua/archive/5bea2b37523a31288e0fcab42f3be5c1bd4516bb.tar.gz", + "hash": "1mizgknbbjqv7a8fqc0n7glgabl0fq660nrqwq6w04qqynp0z1ax" }, "nvim-treesitter-context": { "type": "Git", @@ -2019,22 +1877,9 @@ }, "branch": "master", "submodules": false, - "revision": "41847d3dafb5004464708a3db06b14f12bde548a", - "url": "https://github.com/nvim-treesitter/nvim-treesitter-context/archive/41847d3dafb5004464708a3db06b14f12bde548a.tar.gz", - "hash": "0p6pslcr1pqhz7nv66cnk6z5g1siwidzznbxr50zazb6rdpgqa7v" - }, - "nvim-treesitter-textobjects": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nvim-treesitter", - "repo": "nvim-treesitter-textobjects" - }, - "branch": "master", - "submodules": false, - "revision": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c", - "url": "https://github.com/nvim-treesitter/nvim-treesitter-textobjects/archive/71385f191ec06ffc60e80e6b0c9a9d5daed4824c.tar.gz", - "hash": "0pp8s0wljwhc93jp47ad4pigqm8q7v173374c1vpydhx09qwl4ga" + "revision": "439789a9a8df9639ecd749bb3286b77117024a6f", + "url": "https://github.com/nvim-treesitter/nvim-treesitter-context/archive/439789a9a8df9639ecd749bb3286b77117024a6f.tar.gz", + "hash": "04x9nza48d2vz262myhhfnmjzcc2fkdjb21mdqvlmnzkhh7ysyz2" }, "nvim-ts-autotag": { "type": "Git", @@ -2045,9 +1890,9 @@ }, "branch": "main", "submodules": false, - "revision": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc", - "url": "https://github.com/windwp/nvim-ts-autotag/archive/c4ca798ab95b316a768d51eaaaee48f64a4a46bc.tar.gz", - "hash": "1zi3wrlq6jy7f0plp4q3f2dimb6apcwjxvfcxk7zq4c50bk9cgcx" + "revision": "a1d526af391f6aebb25a8795cbc05351ed3620b5", + "url": "https://github.com/windwp/nvim-ts-autotag/archive/a1d526af391f6aebb25a8795cbc05351ed3620b5.tar.gz", + "hash": "1wl30qr6xs6xwx0s3yjkprxp802dhg45rzdiwpr9v6mwbsm5qw3b" }, "nvim-ufo": { "type": "Git", @@ -2058,9 +1903,9 @@ }, "branch": "main", "submodules": false, - "revision": "d31e2a9fd572a25a4d5011776677223a8ccb7e35", - "url": "https://github.com/kevinhwang91/nvim-ufo/archive/d31e2a9fd572a25a4d5011776677223a8ccb7e35.tar.gz", - "hash": "172v3fh3h3765d93h2ymzzm539i41dw04pj4cxyn2ljb2rb0hfiv" + "revision": "a026364df62e88037b26d37c9f14c17c006fd577", + "url": "https://github.com/kevinhwang91/nvim-ufo/archive/a026364df62e88037b26d37c9f14c17c006fd577.tar.gz", + "hash": "02mqjwc4h29i9s9l8lsfwrx4ac69n3mpr9hw2vg7ji3c20mbh413" }, "nvim-web-devicons": { "type": "Git", @@ -2071,9 +1916,9 @@ }, "branch": "master", "submodules": false, - "revision": "b8221e42cf7287c4dcde81f232f58d7b947c210d", - "url": "https://github.com/nvim-tree/nvim-web-devicons/archive/b8221e42cf7287c4dcde81f232f58d7b947c210d.tar.gz", - "hash": "1qbyh8r2gbaw2n0mm7qwi4y8r9ywyz37q35vlxjzy879ba8dlnlm" + "revision": "c90dee4e930ab9f49fa6d77f289bff335b49e972", + "url": "https://github.com/nvim-tree/nvim-web-devicons/archive/c90dee4e930ab9f49fa6d77f289bff335b49e972.tar.gz", + "hash": "0i41df2cafrpc49cfbimajwbiyhd31q95d1s3rh40g6zgz0gm8sc" }, "obsidian-nvim": { "type": "Git", @@ -2097,9 +1942,9 @@ }, "branch": "master", "submodules": false, - "revision": "919e155fdf38e9148cdb5304faaaf53c20d703ea", - "url": "https://github.com/stevearc/oil.nvim/archive/919e155fdf38e9148cdb5304faaaf53c20d703ea.tar.gz", - "hash": "0mba3rdnsbrha5m54lfsmq8n53pbpa8virbr1x586xp80lm2pdwr" + "revision": "302bbaceeafc690e6419e0c8296e804d60cb9446", + "url": "https://github.com/stevearc/oil.nvim/archive/302bbaceeafc690e6419e0c8296e804d60cb9446.tar.gz", + "hash": "155v10myfpahyf9hf2x3dmp8ljjqavmqg1958x255i9l5swqcp5g" }, "omnisharp-extended-lsp-nvim": { "type": "Git", @@ -2123,9 +1968,9 @@ }, "branch": "master", "submodules": false, - "revision": "de495fabe171d48aed5525f002d14414efcecbb2", - "url": "https://github.com/navarasu/onedark.nvim/archive/de495fabe171d48aed5525f002d14414efcecbb2.tar.gz", - "hash": "1qci3rslcmv79fsfq21vjad6zmk6qp59z1g531w2k85psj6hlz41" + "revision": "67a74c275d1116d575ab25485d1bfa6b2a9c38a6", + "url": "https://github.com/navarasu/onedark.nvim/archive/67a74c275d1116d575ab25485d1bfa6b2a9c38a6.tar.gz", + "hash": "1pfyz3ascxs3sxl878qcirp9jsz77kpl2ks3wxkcv8ql4psymc9l" }, "orgmode": { "type": "Git", @@ -2136,9 +1981,9 @@ }, "branch": "master", "submodules": false, - "revision": "4775d1a523a321b68b926f3a65a83357722a42c7", - "url": "https://github.com/nvim-orgmode/orgmode/archive/4775d1a523a321b68b926f3a65a83357722a42c7.tar.gz", - "hash": "11ngq8s8y9lsr2i1wa7fpyn8djwfckhxhbmm1xdls2c25ic8fz14" + "revision": "e66a64183e211842c195f34fd6dcb97d7b534812", + "url": "https://github.com/nvim-orgmode/orgmode/archive/e66a64183e211842c195f34fd6dcb97d7b534812.tar.gz", + "hash": "0cm3xiqjxxxcrrmjnpfrr7k6xy94ixz55wcrfxgsa8cm2xjzx52m" }, "otter-nvim": { "type": "Git", @@ -2149,9 +1994,9 @@ }, "branch": "main", "submodules": false, - "revision": "c44d645f03ae96e2e3cdc37f92ecfa93a534b736", - "url": "https://github.com/jmbuhr/otter.nvim/archive/c44d645f03ae96e2e3cdc37f92ecfa93a534b736.tar.gz", - "hash": "13s70d9y3rcbzn3s4wbkybmw91y7hm3h2mi1lv09060favh3mvkn" + "revision": "a7766be1592bfa9e88e67512646e343d0b4b2ff5", + "url": "https://github.com/jmbuhr/otter.nvim/archive/a7766be1592bfa9e88e67512646e343d0b4b2ff5.tar.gz", + "hash": "18lcqr5qpa50jxmh5h53k0bsz0n3lzbihi8dchww3kz64b52hl5p" }, "oxocarbon": { "type": "Git", @@ -2162,9 +2007,9 @@ }, "branch": "main", "submodules": false, - "revision": "9f85f6090322f39b11ae04a343d4eb9d12a86897", - "url": "https://github.com/nyoom-engineering/oxocarbon.nvim/archive/9f85f6090322f39b11ae04a343d4eb9d12a86897.tar.gz", - "hash": "14vpv15cvan15gkrkqlj4al4afniah7d6yr24gsknl3lylrqb605" + "revision": "004777819ba294423b638a35a75c9f0c7be758ed", + "url": "https://github.com/nyoom-engineering/oxocarbon.nvim/archive/004777819ba294423b638a35a75c9f0c7be758ed.tar.gz", + "hash": "1qllk870nqc9nhkdgmqm8km2rar6dsmyhfhpcfx8crrg640yfbqy" }, "pathlib-nvim": { "type": "Git", @@ -2188,9 +2033,9 @@ }, "branch": "master", "submodules": false, - "revision": "b9fd5226c2f76c951fc8ed5923d85e4de065e509", - "url": "https://github.com/nvim-lua/plenary.nvim/archive/b9fd5226c2f76c951fc8ed5923d85e4de065e509.tar.gz", - "hash": "1kg043h7dqcrqqgg8pp6hsldx7jdhlh8qwad2kkckia191xgnjgm" + "revision": "857c5ac632080dba10aae49dba902ce3abf91b35", + "url": "https://github.com/nvim-lua/plenary.nvim/archive/857c5ac632080dba10aae49dba902ce3abf91b35.tar.gz", + "hash": "0jxx9nfga7z87v78cifglqs8w4mrpf99wcp483kb0hbv6537jmgh" }, "precognition-nvim": { "type": "Git", @@ -2201,9 +2046,9 @@ }, "branch": "main", "submodules": false, - "revision": "2aae2687207029b3611a0e19a289f9e1c7efbe16", - "url": "https://github.com/tris203/precognition.nvim/archive/2aae2687207029b3611a0e19a289f9e1c7efbe16.tar.gz", - "hash": "0b4yz5jvqd0li373067cs1n761vn9jxkhcvhsrvm9h1snqw1c6nk" + "revision": "80ac0a99064eba71894dd164e891cc5d7e05827e", + "url": "https://github.com/tris203/precognition.nvim/archive/80ac0a99064eba71894dd164e891cc5d7e05827e.tar.gz", + "hash": "1v1knpvd3wxvixmfyzrjwg9r7xbixg53n4dvvk7r8d05y5cgbzmc" }, "project-nvim": { "type": "Git", @@ -2240,9 +2085,9 @@ }, "branch": "master", "submodules": false, - "revision": "3277ad5f96eb03c9d618c88e24f683e4364e578c", - "url": "https://github.com/HiPhish/rainbow-delimiters.nvim/archive/3277ad5f96eb03c9d618c88e24f683e4364e578c.tar.gz", - "hash": "018ns6zpg4d7kypfrs6fzfgj1sv304h1pv6ihkq78wvksn5lyihk" + "revision": "351e449683070a2bb946bbd603555faf5a195e9a", + "url": "https://github.com/HiPhish/rainbow-delimiters.nvim/archive/351e449683070a2bb946bbd603555faf5a195e9a.tar.gz", + "hash": "12qj32zfyjbxs3qjp283fnc8sfa8w4blfx3skgvhkifv0vi7r3bf" }, "registers-nvim": { "type": "Git", @@ -2266,9 +2111,9 @@ }, "branch": "main", "submodules": false, - "revision": "7e6af36c846017122e07e68803bbf95f3c729ca3", - "url": "https://github.com/MeanderingProgrammer/render-markdown.nvim/archive/7e6af36c846017122e07e68803bbf95f3c729ca3.tar.gz", - "hash": "1ywnr77g97cm949q518cwc4xc6s9s0iwh3r2a8fpbj6pmyzpsssa" + "revision": "8bb0d4725cc4909a603158d44ff28b6158ad9278", + "url": "https://github.com/MeanderingProgrammer/render-markdown.nvim/archive/8bb0d4725cc4909a603158d44ff28b6158ad9278.tar.gz", + "hash": "18yqhy2y36rydyqs9z3s1h6rghd02bd9kb3rkxs88spm18wvq41z" }, "rose-pine": { "type": "Git", @@ -2279,9 +2124,9 @@ }, "branch": "main", "submodules": false, - "revision": "72a04c4065345b51b56aed4859ea1d884f734097", - "url": "https://github.com/rose-pine/neovim/archive/72a04c4065345b51b56aed4859ea1d884f734097.tar.gz", - "hash": "144jffddwf727w4yqbikv2f46cny8r9z8mpkbc5ngzail5ldj0q8" + "revision": "96ff3993a67356ee85d1cdab9be652cdc1c5d1ac", + "url": "https://github.com/rose-pine/neovim/archive/96ff3993a67356ee85d1cdab9be652cdc1c5d1ac.tar.gz", + "hash": "0p712rivi5i3zlrigm86p8vrn1nvg4qils86snlw717cq3scj9gj" }, "rtp-nvim": { "type": "Git", @@ -2318,25 +2163,9 @@ }, "branch": "master", "submodules": false, - "revision": "7c9271934d926969e920f7da932da6ba234b1e5a", - "url": "https://github.com/mrcjkb/rustaceanvim/archive/7c9271934d926969e920f7da932da6ba234b1e5a.tar.gz", - "hash": "1sg0vjw9hyjwq592mk2j54xsksg8f2kdhbmnhkfv0bwgkh37b8km" - }, - "smart-splits": { - "type": "GitRelease", - "repository": { - "type": "GitHub", - "owner": "mrjones2014", - "repo": "smart-splits.nvim" - }, - "pre_releases": false, - "version_upper_bound": null, - "release_prefix": null, - "submodules": false, - "version": "v2.0.3", - "revision": "0670128ccecbec2e49d493d58ee6471d6edb7367", - "url": "https://api.github.com/repos/mrjones2014/smart-splits.nvim/tarball/v2.0.3", - "hash": "0lgcsysddq5jqkbz0064wc16pr897mmh4myxs2q2ax7f55lq3yyd" + "revision": "3f327d15a3c1ed48b1e1087e16873a28a39768c2", + "url": "https://github.com/mrcjkb/rustaceanvim/archive/3f327d15a3c1ed48b1e1087e16873a28a39768c2.tar.gz", + "hash": "09wrfmzbk81xax5p4wzczsvv1x28nv54mayi12fvzv6c3bmcsbvj" }, "smartcolumn-nvim": { "type": "Git", @@ -2347,9 +2176,9 @@ }, "branch": "main", "submodules": false, - "revision": "b9cdbdf42f7ac5a659204cd5926017c7ff724a19", - "url": "https://github.com/m4xshen/smartcolumn.nvim/archive/b9cdbdf42f7ac5a659204cd5926017c7ff724a19.tar.gz", - "hash": "1x90vxghilh75alqfyasfpm8s5ir73kg7ji48wh5lkbhyqxz81j0" + "revision": "92f3773af80d674f1eb61e112dca79e2fa449fd1", + "url": "https://github.com/m4xshen/smartcolumn.nvim/archive/92f3773af80d674f1eb61e112dca79e2fa449fd1.tar.gz", + "hash": "0k1xnyvblshn4fhbxgl0i34j22n55xlwr09sdmb23l57br5rb07q" }, "snacks-nvim": { "type": "GitRelease", @@ -2362,39 +2191,10 @@ "version_upper_bound": null, "release_prefix": null, "submodules": false, - "version": "v2.23.0", - "revision": "da230e3ca8146da4b73752daaf0a1d07d343c12d", - "url": "https://api.github.com/repos/folke/snacks.nvim/tarball/v2.23.0", - "hash": "15zcvxsxkihjk5x0bfa1zgx1ky7icjbi9iihsqw8wbi5jyfwnasm" - }, - "solarized": { - "type": "GitRelease", - "repository": { - "type": "GitHub", - "owner": "maxmx03", - "repo": "solarized.nvim" - }, - "pre_releases": false, - "version_upper_bound": null, - "release_prefix": null, - "submodules": false, - "version": "v3.6.0", - "revision": "c0dfe1cbfabd93b546baf5f1408f5df7e02e2050", - "url": "https://api.github.com/repos/maxmx03/solarized.nvim/tarball/v3.6.0", - "hash": "1fz1wc569w26aanmj3hhsc17xrx29g6bfsjsbgssa7jq76aavp3w" - }, - "solarized-osaka": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "craftzdog", - "repo": "solarized-osaka.nvim" - }, - "branch": "main", - "submodules": false, - "revision": "f796014c14b1910e08d42cc2077fef34f08e0295", - "url": "https://github.com/craftzdog/solarized-osaka.nvim/archive/f796014c14b1910e08d42cc2077fef34f08e0295.tar.gz", - "hash": "0jy2hk4fc210jih30ybvisr9pliya1s3nazw4d131vh5k4p1xqi6" + "version": "v2.22.0", + "revision": "5eac729fa290248acfe10916d92a5ed5e5c0f9ed", + "url": "https://api.github.com/repos/folke/snacks.nvim/tarball/v2.22.0", + "hash": "1hbm4fnw51qdp0nz83fcxbvnxjq2k57a37w6dp0wz6wkcx7cwxw9" }, "sqls-nvim": { "type": "Git", @@ -2405,22 +2205,9 @@ }, "branch": "main", "submodules": false, - "revision": "bfb7b4090268f6163c408577070da4cc9d7450fd", - "url": "https://github.com/nanotee/sqls.nvim/archive/bfb7b4090268f6163c408577070da4cc9d7450fd.tar.gz", - "hash": "11sw3ivi1vcymm1bfihhj1pk89101pxpsw0809qkp0f16d57ifrw" - }, - "supermaven-nvim": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "supermaven-inc", - "repo": "supermaven-nvim" - }, - "branch": "main", - "submodules": false, - "revision": "07d20fce48a5629686aefb0a7cd4b25e33947d50", - "url": "https://github.com/supermaven-inc/supermaven-nvim/archive/07d20fce48a5629686aefb0a7cd4b25e33947d50.tar.gz", - "hash": "1h9h98wsnfhkfdmdxjvr2d4idhrvp4i56pp4q6l0m4d2i0ldcgfp" + "revision": "d1bc5421ef3e8edc5101e37edbb7de6639207a09", + "url": "https://github.com/nanotee/sqls.nvim/archive/d1bc5421ef3e8edc5101e37edbb7de6639207a09.tar.gz", + "hash": "1j4n5c8h1iriqzsjxr0wvz70g9lf6d4lm3nyxlpwy9dqmbj8w0kd" }, "tabular": { "type": "Git", @@ -2444,9 +2231,9 @@ }, "branch": "master", "submodules": false, - "revision": "b4da76be54691e854d3e0e02c36b0245f945c2c7", - "url": "https://github.com/nvim-telescope/telescope.nvim/archive/b4da76be54691e854d3e0e02c36b0245f945c2c7.tar.gz", - "hash": "161qlx099ymi62qsd89srda605ynks1sswx3djamrwqp3dxb9596" + "revision": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5", + "url": "https://github.com/nvim-telescope/telescope.nvim/archive/a4ed82509cecc56df1c7138920a1aeaf246c0ac5.tar.gz", + "hash": "0vc2fr5nhbc39d55zn09fh8zpy4472ic4xmwvmk5dda8fqw76p8q" }, "tiny-devicons-auto-colors-nvim": { "type": "Git", @@ -2496,9 +2283,9 @@ }, "branch": "main", "submodules": false, - "revision": "4d159616aee17796c2c94d2f5f87d2ee1a3f67c7", - "url": "https://github.com/folke/tokyonight.nvim/archive/4d159616aee17796c2c94d2f5f87d2ee1a3f67c7.tar.gz", - "hash": "1bpki7gglch1n77kcrnyabmz7r41d6b6yq5fa70w4pxwp7y62d6h" + "revision": "057ef5d260c1931f1dffd0f052c685dcd14100a3", + "url": "https://github.com/folke/tokyonight.nvim/archive/057ef5d260c1931f1dffd0f052c685dcd14100a3.tar.gz", + "hash": "002rzmdxq45bdyd27i8k8lhdcwxn9l4v6x5cm6g7v1213m0n25np" }, "trouble": { "type": "Git", @@ -2509,9 +2296,9 @@ }, "branch": "main", "submodules": false, - "revision": "f176232e7759c4f8abd923c21e3e5a5c76cd6837", - "url": "https://github.com/folke/trouble.nvim/archive/f176232e7759c4f8abd923c21e3e5a5c76cd6837.tar.gz", - "hash": "0fdifa9nrvrjhccjsxzawhrmp1cqw72lvl190j0dy28mrx12n5yb" + "revision": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3", + "url": "https://github.com/folke/trouble.nvim/archive/85bedb7eb7fa331a2ccbecb9202d8abba64d37b3.tar.gz", + "hash": "0qn84q75dk2vbw2shh7g9i3x8m5wnhcg17zx26njpl0srykp1vva" }, "ts-error-translator-nvim": { "type": "Git", @@ -2526,19 +2313,6 @@ "url": "https://github.com/dmmulroy/ts-error-translator.nvim/archive/47e5ba89f71b9e6c72eaaaaa519dd59bd6897df4.tar.gz", "hash": "08whn7l75qv5n74cifmnxc0s7n7ja1g7589pjnbbsk2djn6bqbky" }, - "typst-concealer": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "PartyWumpus", - "repo": "typst-concealer" - }, - "branch": "main", - "submodules": false, - "revision": "3d2e72ce7fc06bd0db0dafbdd1e17d3c9e343d53", - "url": "https://github.com/PartyWumpus/typst-concealer/archive/3d2e72ce7fc06bd0db0dafbdd1e17d3c9e343d53.tar.gz", - "hash": "16j3q3hk1wzgcz6snn9997vclhkanplyn0cp1dm9lk034jd8v9nh" - }, "typst-preview-nvim": { "type": "Git", "repository": { @@ -2548,22 +2322,9 @@ }, "branch": "master", "submodules": false, - "revision": "1603d37bb44ed2efa0b4378d1dfedc087b4f2141", - "url": "https://github.com/chomosuke/typst-preview.nvim/archive/1603d37bb44ed2efa0b4378d1dfedc087b4f2141.tar.gz", - "hash": "1yfpdccnk6qa38bv93hixr1libi7djs38jqr78c4m543qmyg5n2g" - }, - "undotree": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "mbbill", - "repo": "undotree" - }, - "branch": "master", - "submodules": false, - "revision": "0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f", - "url": "https://github.com/mbbill/undotree/archive/0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f.tar.gz", - "hash": "0kvv65dq3nlnmhl4xpjxkd0918p5blfzqfbfyq9jlnw0qb9qfqqi" + "revision": "2503b188cd2a17ce44fdd21a944a93335e935215", + "url": "https://github.com/chomosuke/typst-preview.nvim/archive/2503b188cd2a17ce44fdd21a944a93335e935215.tar.gz", + "hash": "0l981pjiz2ycn6rw1xwvmhdjpml7nrrlymwfyc942inw173k1jsg" }, "vim-dirtytalk": { "type": "Git", @@ -2587,9 +2348,9 @@ }, "branch": "master", "submodules": false, - "revision": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4", - "url": "https://github.com/tpope/vim-fugitive/archive/61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4.tar.gz", - "hash": "1fk02wb2g52lqxxp1gx551bbv7nmambwjiqfgcp4ypn2n4wnhzxv" + "revision": "4a745ea72fa93bb15dd077109afbb3d1809383f2", + "url": "https://github.com/tpope/vim-fugitive/archive/4a745ea72fa93bb15dd077109afbb3d1809383f2.tar.gz", + "hash": "188l24j7j57hgs02gy6ch165agyrwr4g034c5j3m1vnw14vmw2yl" }, "vim-illuminate": { "type": "Git", @@ -2600,9 +2361,9 @@ }, "branch": "master", "submodules": false, - "revision": "0d1e93684da00ab7c057410fecfc24f434698898", - "url": "https://github.com/RRethy/vim-illuminate/archive/0d1e93684da00ab7c057410fecfc24f434698898.tar.gz", - "hash": "0456q474765p0r0q7frn1n9drl05d16alv7kn9qnw1235d20k81a" + "revision": "08aa184f1bd508f6a59371b52cba26be07bc016d", + "url": "https://github.com/RRethy/vim-illuminate/archive/08aa184f1bd508f6a59371b52cba26be07bc016d.tar.gz", + "hash": "0sqs4q2qk9hfkh5vn08y664568pl15b88yyvb9za0f5k7v3z1bcw" }, "vim-markdown": { "type": "Git", @@ -2630,19 +2391,6 @@ "url": "https://github.com/tpope/vim-repeat/archive/65846025c15494983dafe5e3b46c8f88ab2e9635.tar.gz", "hash": "0n8sx6s2sbjb21dv9j6y5lyqda9vvxraffg2jz423daamn96dxqv" }, - "vim-sleuth": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "tpope", - "repo": "vim-sleuth" - }, - "branch": "master", - "submodules": false, - "revision": "be69bff86754b1aa5adcbb527d7fcd1635a84080", - "url": "https://github.com/tpope/vim-sleuth/archive/be69bff86754b1aa5adcbb527d7fcd1635a84080.tar.gz", - "hash": "0wqxdjgplf04nq428ialw1w03f8nh5vb629a17vl5gc9gf3zfanq" - }, "vim-startify": { "type": "Git", "repository": { @@ -2665,9 +2413,9 @@ }, "branch": "main", "submodules": false, - "revision": "904308e6885bbb7b60714c80ab3daf0c071c1492", - "url": "https://github.com/folke/which-key.nvim/archive/904308e6885bbb7b60714c80ab3daf0c071c1492.tar.gz", - "hash": "1dfavp3dwqpnbw2c93zkaayimcjpwc9p0190c2d7p9lhzsb27n94" + "revision": "370ec46f710e058c9c1646273e6b225acf47cbed", + "url": "https://github.com/folke/which-key.nvim/archive/370ec46f710e058c9c1646273e6b225acf47cbed.tar.gz", + "hash": "0am4yw7lnibgc949qvbsi4a7hqdx6gk209l5vafv5bwcvd4irwxs" }, "yanky-nvim": { "type": "Git", @@ -2678,9 +2426,9 @@ }, "branch": "main", "submodules": false, - "revision": "04775cc6e10ef038c397c407bc17f00a2f52b378", - "url": "https://github.com/gbprod/yanky.nvim/archive/04775cc6e10ef038c397c407bc17f00a2f52b378.tar.gz", - "hash": "024dw52ji4691ndkaz3k12fx6qyvhdpd2r69r9d2isy81fbs2fjm" + "revision": "98b9c21d3c06d79f68fd9d471dcc28fc6d2d72ef", + "url": "https://github.com/gbprod/yanky.nvim/archive/98b9c21d3c06d79f68fd9d471dcc28fc6d2d72ef.tar.gz", + "hash": "1bdplxlhsc72kmbzmi7x4p378f3dyjdm3ncikkjs3qwxkvjl1bxw" } }, "version": 5 diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 8d17121f..00000000 --- a/shell.nix +++ /dev/null @@ -1,7 +0,0 @@ -# Make the behaviour of `nix-shell` consistent with the one of `nix develop` -# by returning the default devShell output from the flake. This is useful when -# I do not want to work with direnv, or simply need backwards compatibility. -{system ? builtins.currentSystem}: let - nvf = import ./.; -in - nvf.devShells.${system}.default