From d8acad9865c6ff696bdac08b0adc0235b079355c Mon Sep 17 00:00:00 2001 From: "nixvim-ci[bot]" <212996653+nixvim-ci[bot]@users.noreply.github.com> Date: Wed, 24 Dec 2025 10:11:02 +0000 Subject: [PATCH 01/30] flake: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit flake.lock updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/7d853e518814cca2a657b72eeba67ae20ebf7059?narHash=sha256-l/YGrEpLromL4viUo5GmFH3K5M1j0Mb9O%2BLiaeCPWEM%3D' (2025-12-19) → 'github:NixOS/nixpkgs/cfc52a405c6e85462364651a8f11e28ae8065c91?narHash=sha256-Wv%2BxrUNXgtxAXAMZE3EDzzeRgN1MEw%2BPnKr8zDozeLU%3D' (2025-12-23) flake/dev/flake.lock updates: • Updated input 'dev-nixpkgs': 'github:NixOS/nixpkgs/7d853e518814cca2a657b72eeba67ae20ebf7059?narHash=sha256-l/YGrEpLromL4viUo5GmFH3K5M1j0Mb9O%2BLiaeCPWEM%3D' (2025-12-19) → 'github:NixOS/nixpkgs/cfc52a405c6e85462364651a8f11e28ae8065c91?narHash=sha256-Wv%2BxrUNXgtxAXAMZE3EDzzeRgN1MEw%2BPnKr8zDozeLU%3D' (2025-12-23) • Updated input 'home-manager': 'github:nix-community/home-manager/61fcc9de76b88e55578eb5d79fc80f2b236df707?narHash=sha256-0V/nKU93KdYGi%2B5LB/MVo355obBJw/2z9b2xS3bPJxY%3D' (2025-12-21) → 'github:nix-community/home-manager/7eca7f7081036a7b740090994c9ec543927f89a7?narHash=sha256-hHKQhHkXxuPJwLkI8wdu826GLV5AcuW9/HVdc9eBnTU%3D' (2025-12-24) • Updated input 'nix-darwin': 'github:lnl7/nix-darwin/5fb45ece6129bd7ad8f7310df0ae9c00bae7c562?narHash=sha256-ht/GuKaw5NT3M12xM%2BmkUtkSBVtzjJ8IHIy6R/ncv9g%3D' (2025-12-18) → 'github:lnl7/nix-darwin/c2b36207f2c396c79dbed9d40536db221bd4e363?narHash=sha256-N/sxS27%2Bt9nGvGWqwwAceSMW/Y5ddcypS/aiTnZ7ScA%3D' (2025-12-23) --- flake.lock | 6 +++--- flake/dev/flake.lock | 18 +++++++++--------- version-info.toml | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/flake.lock b/flake.lock index ef9d14ce..8c197c9f 100644 --- a/flake.lock +++ b/flake.lock @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1766125104, - "narHash": "sha256-l/YGrEpLromL4viUo5GmFH3K5M1j0Mb9O+LiaeCPWEM=", + "lastModified": 1766471942, + "narHash": "sha256-Wv+xrUNXgtxAXAMZE3EDzzeRgN1MEw+PnKr8zDozeLU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7d853e518814cca2a657b72eeba67ae20ebf7059", + "rev": "cfc52a405c6e85462364651a8f11e28ae8065c91", "type": "github" }, "original": { diff --git a/flake/dev/flake.lock b/flake/dev/flake.lock index c1562d18..735138b9 100644 --- a/flake/dev/flake.lock +++ b/flake/dev/flake.lock @@ -2,11 +2,11 @@ "nodes": { "dev-nixpkgs": { "locked": { - "lastModified": 1766125104, - "narHash": "sha256-l/YGrEpLromL4viUo5GmFH3K5M1j0Mb9O+LiaeCPWEM=", + "lastModified": 1766471942, + "narHash": "sha256-Wv+xrUNXgtxAXAMZE3EDzzeRgN1MEw+PnKr8zDozeLU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7d853e518814cca2a657b72eeba67ae20ebf7059", + "rev": "cfc52a405c6e85462364651a8f11e28ae8065c91", "type": "github" }, "original": { @@ -122,11 +122,11 @@ ] }, "locked": { - "lastModified": 1766282146, - "narHash": "sha256-0V/nKU93KdYGi+5LB/MVo355obBJw/2z9b2xS3bPJxY=", + "lastModified": 1766553851, + "narHash": "sha256-hHKQhHkXxuPJwLkI8wdu826GLV5AcuW9/HVdc9eBnTU=", "owner": "nix-community", "repo": "home-manager", - "rev": "61fcc9de76b88e55578eb5d79fc80f2b236df707", + "rev": "7eca7f7081036a7b740090994c9ec543927f89a7", "type": "github" }, "original": { @@ -168,11 +168,11 @@ ] }, "locked": { - "lastModified": 1766038392, - "narHash": "sha256-ht/GuKaw5NT3M12xM+mkUtkSBVtzjJ8IHIy6R/ncv9g=", + "lastModified": 1766524813, + "narHash": "sha256-N/sxS27+t9nGvGWqwwAceSMW/Y5ddcypS/aiTnZ7ScA=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "5fb45ece6129bd7ad8f7310df0ae9c00bae7c562", + "rev": "c2b36207f2c396c79dbed9d40536db221bd4e363", "type": "github" }, "original": { diff --git a/version-info.toml b/version-info.toml index 7a248f60..39d12075 100644 --- a/version-info.toml +++ b/version-info.toml @@ -1,6 +1,6 @@ # DO NOT MODIFY! # This file was generated by ci/version-info/default.nix -nixpkgs_rev = "7d853e518814cca2a657b72eeba67ae20ebf7059" +nixpkgs_rev = "cfc52a405c6e85462364651a8f11e28ae8065c91" release = "26.05" unstable = true From cfa1df00881508192926ff38ab6c5ae93fca1a89 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 24 Dec 2025 12:52:52 +0100 Subject: [PATCH 02/30] tests: disable tests relying on phpPackages.php-codesniffer https://github.com/NixOS/nixpkgs/pull/459254#issuecomment-3689578764 --- plugins/by-name/conform-nvim/formatter-packages.nix | 5 ++++- tests/all-package-defaults.nix | 4 ++++ .../test-sources/plugins/by-name/efmls-configs/default.nix | 7 ++++++- tests/test-sources/plugins/by-name/none-ls/default.nix | 5 +++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/plugins/by-name/conform-nvim/formatter-packages.nix b/plugins/by-name/conform-nvim/formatter-packages.nix index 7dfcc205..91fe15e1 100644 --- a/plugins/by-name/conform-nvim/formatter-packages.nix +++ b/plugins/by-name/conform-nvim/formatter-packages.nix @@ -13,6 +13,10 @@ in { inherit states; formatter-packages = { + # 2025-12-24: phpPackages.php-codesniffer is broken + # https://github.com/NixOS/nixpkgs/pull/459254#issuecomment-3689578764 + phpcbf = states.broken php84Packages.php-codesniffer; + # 2025-12-20 build failure # https://github.com/NixOS/nixpkgs/issues/472704 terragrunt_hclfmt = states.broken terragrunt; @@ -137,7 +141,6 @@ in perltidy = perl538Packages.PerlTidy; pg_format = pgformatter; php_cs_fixer = php83Packages.php-cs-fixer; - phpcbf = php84Packages.php-codesniffer; inherit (php84Packages) phpinsights; prolog = swi-prolog; pyproject-fmt = python313Packages.pyproject-parser; diff --git a/tests/all-package-defaults.nix b/tests/all-package-defaults.nix index 02f56d99..dff24b99 100644 --- a/tests/all-package-defaults.nix +++ b/tests/all-package-defaults.nix @@ -13,6 +13,10 @@ let }; disabledPackages = [ + # 2025-12-24: phpPackages.php-codesniffer is broken + # https://github.com/NixOS/nixpkgs/pull/459254#issuecomment-3689578764 + "php-codesniffer" + # 2025-11-15 dependency swift is broken # https://github.com/NixOS/nixpkgs/issues/461474 "sourcekit-lsp" diff --git a/tests/test-sources/plugins/by-name/efmls-configs/default.nix b/tests/test-sources/plugins/by-name/efmls-configs/default.nix index 573d4d29..d15825b8 100644 --- a/tests/test-sources/plugins/by-name/efmls-configs/default.nix +++ b/tests/test-sources/plugins/by-name/efmls-configs/default.nix @@ -21,7 +21,12 @@ "JSON" ]; - brokenTools = [ ]; + brokenTools = [ + # 2025-12-24: phpPackages.php-codesniffer is broken + # https://github.com/NixOS/nixpkgs/pull/459254#issuecomment-3689578764 + "phpcbf" + "phpcs" + ]; # TODO: respect unpackaged from generated unpackaged = [ diff --git a/tests/test-sources/plugins/by-name/none-ls/default.nix b/tests/test-sources/plugins/by-name/none-ls/default.nix index 96578a57..854065fa 100644 --- a/tests/test-sources/plugins/by-name/none-ls/default.nix +++ b/tests/test-sources/plugins/by-name/none-ls/default.nix @@ -100,6 +100,11 @@ sources = let disabled = [ + # TODO Added 2025-12-24: phpPackages.php-codesniffer is broken + # https://github.com/NixOS/nixpkgs/pull/459254#issuecomment-3689578764 + "phpcbf" + "phpcs" + # TODO Added 2025-12-20 build failure # https://github.com/NixOS/nixpkgs/issues/472704 "terragrunt_fmt" From 793f22ff3d0ea458f4dab778f6b264549d049c74 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 24 Dec 2025 15:07:09 +0100 Subject: [PATCH 03/30] tests/all-package-defaults: disable trivy on x86_64-darwin (flaky) --- tests/all-package-defaults.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/all-package-defaults.nix b/tests/all-package-defaults.nix index dff24b99..c50a063f 100644 --- a/tests/all-package-defaults.nix +++ b/tests/all-package-defaults.nix @@ -109,6 +109,11 @@ let "wl-clipboard" # wayland ] ++ lib.optionals (hostPlatform.isDarwin && hostPlatform.isx86_64) [ + # 2025-12-24: build failure + # I (@GaetanLepage) am able to build this package on my system, but it is not cached on + # hydra.nixos.org and builbot fails at building it + "trivy" + # 2025-11-16 dependency libsigsegv is broken "texlive" "texlive-combined-medium" From 66a5dc70e2d8433034bccdbb9c3c7bcecd86f9a6 Mon Sep 17 00:00:00 2001 From: eveeifyeve <88671402+Eveeifyeve@users.noreply.github.com> Date: Thu, 25 Dec 2025 23:05:36 +1100 Subject: [PATCH 04/30] flake: switch flake-compat to main branch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pinned PR is now merged. Flake lock file updates: • Updated input 'flake-compat': 'github:NixOS/flake-compat/63d095ca43128741b16fc354b1e918757e6b66e5?narHash=sha256-QN1r/zNqvXHwWqlRAnRtFf4CQwIOJx58PtdExIzAw94%3D' (2025-12-08) → 'github:NixOS/flake-compat/f275e157c50c3a9a682b4c9b4aa4db7a4cd3b5f2?narHash=sha256-QN1r/zNqvXHwWqlRAnRtFf4CQwIOJx58PtdExIzAw94%3D' (2025-12-25) --- flake/dev/flake.lock | 5 ++--- flake/dev/flake.nix | 4 +--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/flake/dev/flake.lock b/flake/dev/flake.lock index 735138b9..316fb8e7 100644 --- a/flake/dev/flake.lock +++ b/flake/dev/flake.lock @@ -38,16 +38,15 @@ }, "flake-compat": { "locked": { - "lastModified": 1765186200, + "lastModified": 1766661267, "narHash": "sha256-QN1r/zNqvXHwWqlRAnRtFf4CQwIOJx58PtdExIzAw94=", "owner": "NixOS", "repo": "flake-compat", - "rev": "63d095ca43128741b16fc354b1e918757e6b66e5", + "rev": "f275e157c50c3a9a682b4c9b4aa4db7a4cd3b5f2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "pull/75/merge", "repo": "flake-compat", "type": "github" } diff --git a/flake/dev/flake.nix b/flake/dev/flake.nix index d49a3a65..96b8d8bc 100644 --- a/flake/dev/flake.nix +++ b/flake/dev/flake.nix @@ -8,9 +8,7 @@ dev-nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # flake-compat is used by the root `default.nix` to allow non-flake users to import nixvim - # - # The pinned PR resolves an issue with shallow clones, such as those used by CI. - flake-compat.url = "github:NixOS/flake-compat?ref=pull/75/merge"; + flake-compat.url = "github:NixOS/flake-compat"; # keep-sorted start block=yes newline_separated=yes devshell = { From 779734a9fdf2709651d759cabd409dd6695d0709 Mon Sep 17 00:00:00 2001 From: Yury Shvedov Date: Fri, 12 Dec 2025 23:12:13 +0300 Subject: [PATCH 05/30] plugins/lsp-format-modifications: init --- plugins/by-name/lsp-format-modifications/default.nix | 10 ++++++++++ .../by-name/lsp-format-modifications/default.nix | 5 +++++ 2 files changed, 15 insertions(+) create mode 100644 plugins/by-name/lsp-format-modifications/default.nix create mode 100644 tests/test-sources/plugins/by-name/lsp-format-modifications/default.nix diff --git a/plugins/by-name/lsp-format-modifications/default.nix b/plugins/by-name/lsp-format-modifications/default.nix new file mode 100644 index 00000000..6198f284 --- /dev/null +++ b/plugins/by-name/lsp-format-modifications/default.nix @@ -0,0 +1,10 @@ +{ lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "lsp-format-modifications"; + package = "lsp-format-modifications-nvim"; + callSetup = false; + hasSettings = false; + + maintainers = [ lib.maintainers.shved ]; + description = "LSP formatting, but only on modified text regions."; +} diff --git a/tests/test-sources/plugins/by-name/lsp-format-modifications/default.nix b/tests/test-sources/plugins/by-name/lsp-format-modifications/default.nix new file mode 100644 index 00000000..a7f4a277 --- /dev/null +++ b/tests/test-sources/plugins/by-name/lsp-format-modifications/default.nix @@ -0,0 +1,5 @@ +{ + empty = { + plugins.lsp-format-modifications.enable = true; + }; +} From 2a3eece6afe262d690b608dc43547ec3a33abee9 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 26 Dec 2025 22:27:22 +0100 Subject: [PATCH 06/30] plugins/conform-nvim: mark oxfmt as packaged --- plugins/by-name/conform-nvim/formatter-packages.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/by-name/conform-nvim/formatter-packages.nix b/plugins/by-name/conform-nvim/formatter-packages.nix index 91fe15e1..0e68be35 100644 --- a/plugins/by-name/conform-nvim/formatter-packages.nix +++ b/plugins/by-name/conform-nvim/formatter-packages.nix @@ -73,7 +73,6 @@ in mojo_format = states.unpackaged; nomad_fmt = states.unpackaged; npm-groovy-lint = states.unpackaged; - oxfmt = states.unpackaged; packer_fmt = states.unpackaged; pangu = states.unpackaged; perlimports = states.unpackaged; From a50121bad2203aac61943d8a3c575b8814a1a40a Mon Sep 17 00:00:00 2001 From: "nixvim-ci[bot]" <212996653+nixvim-ci[bot]@users.noreply.github.com> Date: Sat, 27 Dec 2025 15:18:45 +0000 Subject: [PATCH 07/30] flake: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit flake.lock updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/cfc52a405c6e85462364651a8f11e28ae8065c91?narHash=sha256-Wv%2BxrUNXgtxAXAMZE3EDzzeRgN1MEw%2BPnKr8zDozeLU%3D' (2025-12-23) → 'github:NixOS/nixpkgs/4eec65df50d796a8fd9c146a09b5007916ce376b?narHash=sha256-7sgUQMKMDvpeu9cwE7mWJfP9N3wJduunmJ/s8LOd9nk%3D' (2025-12-27) flake/dev/flake.lock updates: • Updated input 'dev-nixpkgs': 'github:NixOS/nixpkgs/cfc52a405c6e85462364651a8f11e28ae8065c91?narHash=sha256-Wv%2BxrUNXgtxAXAMZE3EDzzeRgN1MEw%2BPnKr8zDozeLU%3D' (2025-12-23) → 'github:NixOS/nixpkgs/4eec65df50d796a8fd9c146a09b5007916ce376b?narHash=sha256-7sgUQMKMDvpeu9cwE7mWJfP9N3wJduunmJ/s8LOd9nk%3D' (2025-12-27) • Updated input 'home-manager': 'github:nix-community/home-manager/7eca7f7081036a7b740090994c9ec543927f89a7?narHash=sha256-hHKQhHkXxuPJwLkI8wdu826GLV5AcuW9/HVdc9eBnTU%3D' (2025-12-24) → 'github:nix-community/home-manager/91cdb0e2d574c64fae80d221f4bf09d5592e9ec2?narHash=sha256-GKO35onS711ThCxwWcfuvbIBKXwriahGqs%2BWZuJ3v9E%3D' (2025-12-25) • Updated input 'nix-darwin': 'github:lnl7/nix-darwin/c2b36207f2c396c79dbed9d40536db221bd4e363?narHash=sha256-N/sxS27%2Bt9nGvGWqwwAceSMW/Y5ddcypS/aiTnZ7ScA%3D' (2025-12-23) → 'github:lnl7/nix-darwin/f0c8e1f6feb562b5db09cee9fb566a2f989e6b55?narHash=sha256-rIlgatT0JtwxsEpzq%2BUrrIJCRfVAXgbYPzose1DmAcM%3D' (2025-12-26) --- flake.lock | 6 +++--- flake/dev/flake.lock | 18 +++++++++--------- version-info.toml | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/flake.lock b/flake.lock index 8c197c9f..d238dd89 100644 --- a/flake.lock +++ b/flake.lock @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1766471942, - "narHash": "sha256-Wv+xrUNXgtxAXAMZE3EDzzeRgN1MEw+PnKr8zDozeLU=", + "lastModified": 1766807290, + "narHash": "sha256-7sgUQMKMDvpeu9cwE7mWJfP9N3wJduunmJ/s8LOd9nk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cfc52a405c6e85462364651a8f11e28ae8065c91", + "rev": "4eec65df50d796a8fd9c146a09b5007916ce376b", "type": "github" }, "original": { diff --git a/flake/dev/flake.lock b/flake/dev/flake.lock index 316fb8e7..16bf1c9b 100644 --- a/flake/dev/flake.lock +++ b/flake/dev/flake.lock @@ -2,11 +2,11 @@ "nodes": { "dev-nixpkgs": { "locked": { - "lastModified": 1766471942, - "narHash": "sha256-Wv+xrUNXgtxAXAMZE3EDzzeRgN1MEw+PnKr8zDozeLU=", + "lastModified": 1766807290, + "narHash": "sha256-7sgUQMKMDvpeu9cwE7mWJfP9N3wJduunmJ/s8LOd9nk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cfc52a405c6e85462364651a8f11e28ae8065c91", + "rev": "4eec65df50d796a8fd9c146a09b5007916ce376b", "type": "github" }, "original": { @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1766553851, - "narHash": "sha256-hHKQhHkXxuPJwLkI8wdu826GLV5AcuW9/HVdc9eBnTU=", + "lastModified": 1766682973, + "narHash": "sha256-GKO35onS711ThCxwWcfuvbIBKXwriahGqs+WZuJ3v9E=", "owner": "nix-community", "repo": "home-manager", - "rev": "7eca7f7081036a7b740090994c9ec543927f89a7", + "rev": "91cdb0e2d574c64fae80d221f4bf09d5592e9ec2", "type": "github" }, "original": { @@ -167,11 +167,11 @@ ] }, "locked": { - "lastModified": 1766524813, - "narHash": "sha256-N/sxS27+t9nGvGWqwwAceSMW/Y5ddcypS/aiTnZ7ScA=", + "lastModified": 1766784396, + "narHash": "sha256-rIlgatT0JtwxsEpzq+UrrIJCRfVAXgbYPzose1DmAcM=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "c2b36207f2c396c79dbed9d40536db221bd4e363", + "rev": "f0c8e1f6feb562b5db09cee9fb566a2f989e6b55", "type": "github" }, "original": { diff --git a/version-info.toml b/version-info.toml index 39d12075..40681c07 100644 --- a/version-info.toml +++ b/version-info.toml @@ -1,6 +1,6 @@ # DO NOT MODIFY! # This file was generated by ci/version-info/default.nix -nixpkgs_rev = "cfc52a405c6e85462364651a8f11e28ae8065c91" +nixpkgs_rev = "4eec65df50d796a8fd9c146a09b5007916ce376b" release = "26.05" unstable = true From c1e8e859aa7195d28d51e0b595d11239f124f1e7 Mon Sep 17 00:00:00 2001 From: "nixvim-ci[bot]" <212996653+nixvim-ci[bot]@users.noreply.github.com> Date: Sat, 27 Dec 2025 15:19:08 +0000 Subject: [PATCH 08/30] generated: Update - Updated conform-formatters.json - Updated lspconfig-servers.json --- generated/conform-formatters.json | 2 ++ generated/lspconfig-servers.json | 2 ++ 2 files changed, 4 insertions(+) diff --git a/generated/conform-formatters.json b/generated/conform-formatters.json index 98a570bc..e71d6aee 100644 --- a/generated/conform-formatters.json +++ b/generated/conform-formatters.json @@ -75,6 +75,7 @@ "gawk", "gci", "gdformat", + "gdscript-formatter", "gersemi", "ghdl", "ghokin", @@ -150,6 +151,7 @@ "oxfmt", "oxlint", "packer_fmt", + "palantir-java-format", "pangu", "perlimports", "perltidy", diff --git a/generated/lspconfig-servers.json b/generated/lspconfig-servers.json index c54ae663..6581af8b 100644 --- a/generated/lspconfig-servers.json +++ b/generated/lspconfig-servers.json @@ -140,6 +140,7 @@ "hie": "https://github.com/haskell/haskell-ide-engine the following init_options\nare supported (see\nhttps://github.com/haskell/haskell-ide-engine#configuration):\n\n``` lua\ninit_options = {\n languageServerHaskell = {\n hlintOn = bool;\n maxNumberOfProblems = number;\n diagnosticsDebounceDuration = number;\n liquidOn = bool (default false);\n completionSnippetsOn = bool (default true);\n formatOnImportOn = bool (default true);\n formattingProvider = string (default \"brittany\", alternate \"floskell\");\n }\n}\n```", "hlasm": "`hlasm_language_server` is a language server for the High Level\nAssembler language used on IBM SystemZ mainframes. To learn how to\nconfigure the HLASM language server, see the [HLASM Language Support\ndocumentation](https://github.com/eclipse-che4z/che-che4z-lsp-for-hlasm).", "hls": "https://github.com/haskell/haskell-language-server Haskell Language\nServer If you are using HLS 1.9.0.0, enable the language server to\nlaunch on Cabal files as well:\n\n``` lua\nvim.lsp.config('hls', {\n filetypes = { 'haskell', 'lhaskell', 'cabal' },\n})\n```", + "home_assistant": "https://github.com/keesschollaart81/vscode-home-assistant\n`vscode-home-assistant` can be installed via from source or by\ndownloading and extracting the VSCode \"Home Assistant Config Helper\"\nextension `vscode-home-assistant` is a language server for Home\nAssistant ported from the VSCode \"Home Assistant Config Helper\"\nextension.", "hoon_ls": "https://github.com/urbit/hoon-language-server A language server for\nHoon. The language server can be installed via\n`npm install -g @hoon-language-server` Start a fake \\~zod with\n`urbit -F zod`. Start the language server at the Urbit Dojo prompt with:\n`|start %language-server`", "html": "https://github.com/hrsh7th/vscode-langservers-extracted\n`vscode-html-language-server` can be installed via `npm`:\n\n``` sh\nnpm i -g vscode-langservers-extracted\n```\n\nNeovim does not currently include built-in snippets.\n`vscode-html-language-server` only provides completions when snippet\nsupport is enabled. To enable completion, install a snippet plugin and\nadd the following override to your language client capabilities during\nsetup. The code-formatting feature of the lsp can be controlled with the\n`provideFormatter` option.\n\n``` lua\n--Enable (broadcasting) snippet capability for completion\nlocal capabilities = vim.lsp.protocol.make_client_capabilities()\ncapabilities.textDocument.completion.completionItem.snippetSupport = true\nvim.lsp.config('html', {\n capabilities = capabilities,\n})\n```", "htmx": "https://github.com/ThePrimeagen/htmx-lsp `htmx-lsp` can be installed via\n`cargo`:\n\n``` sh\ncargo install htmx-lsp\n```\n\nLsp is still very much work in progress and experimental. Use at your\nown risk.", @@ -311,6 +312,7 @@ "swift_mesonls": "https://github.com/JCWasmx86/Swift-MesonLSP Meson language server\nwritten in Swift", "syntax_tree": "https://ruby-syntax-tree.github.io/syntax_tree/ A fast Ruby parser and\nformatter. Syntax Tree is a suite of tools built on top of the internal\nCRuby parser. It provides the ability to generate a syntax tree from\nsource, as well as the tools necessary to inspect and manipulate that\nsyntax tree. It can be used to build formatters, linters, language\nservers, and more.\n\n``` sh\ngem install syntax_tree\n```", "systemd_ls": "https://github.com/psacawa/systemd-language-server\n`systemd-language-server` can be installed via `pip`:\n\n``` sh\npip install systemd-language-server\n```\n\nLanguage Server for Systemd unit files", + "systemd_lsp": "https://github.com/JFryy/systemd-lsp A Language Server Protocol (LSP)\nimplementation for Systemd unit files, providing editing support with\nsyntax highlighting, diagnostics, autocompletion, and documentation.\n`systemd-lsp` can be installed via `cargo`:\n\n``` sh\ncargo install systemd-lsp\n```\n\nA language server implementation for Systemd unit files made in Rust.", "tabby_ml": "https://tabby.tabbyml.com/blog/running-tabby-as-a-language-server\nLanguage server for Tabby, an opensource, self-hosted AI coding\nassistant. `tabby-agent` can be installed via `npm`:\n\n``` sh\nnpm install --global tabby-agent\n```", "tailwindcss": "https://github.com/tailwindlabs/tailwindcss-intellisense Tailwind CSS\nLanguage Server can be installed via npm: npm install -g\n@tailwindcss/language-server", "taplo": "https://taplo.tamasfe.dev/cli/usage/language-server.html Language server\nfor Taplo, a TOML toolkit. `taplo-cli` can be installed via `cargo`:\n\n``` sh\ncargo install --features lsp --locked taplo-cli\n```", From d2a0db38b740d8e2ca4567f94a204f8a7eafe591 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 26 Dec 2025 14:33:39 +0100 Subject: [PATCH 09/30] lsp/servers/packages: add package for systemd_lsp --- modules/lsp/servers/packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lsp/servers/packages.nix b/modules/lsp/servers/packages.nix index 4bafca43..b6be2a62 100644 --- a/modules/lsp/servers/packages.nix +++ b/modules/lsp/servers/packages.nix @@ -399,6 +399,7 @@ "syntax_tree" ]; systemd_ls = "systemd-language-server"; + systemd_lsp = "systemd-lsp"; tailwindcss = "tailwindcss-language-server"; taplo = "taplo"; tblgen_lsp_server = [ From db8177775efcdaefc66ebb5428a515a1a84a3774 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 26 Dec 2025 14:35:06 +0100 Subject: [PATCH 10/30] lsp/servers/packages: mark home_assistant as unpackaged --- modules/lsp/servers/packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lsp/servers/packages.nix b/modules/lsp/servers/packages.nix index b6be2a62..4f0abcb5 100644 --- a/modules/lsp/servers/packages.nix +++ b/modules/lsp/servers/packages.nix @@ -73,6 +73,7 @@ "hhvm" "hie" "hlasm" + "home_assistant" "hoon_ls" "hydra_lsp" "hylo_ls" From aca6fcdaff69894fddfba6b891fc38d62237a22b Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 26 Dec 2025 14:38:17 +0100 Subject: [PATCH 11/30] plugins/conform-nvim: mark palantir-java-formatter as unpackaged --- plugins/by-name/conform-nvim/formatter-packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/by-name/conform-nvim/formatter-packages.nix b/plugins/by-name/conform-nvim/formatter-packages.nix index 0e68be35..26b74003 100644 --- a/plugins/by-name/conform-nvim/formatter-packages.nix +++ b/plugins/by-name/conform-nvim/formatter-packages.nix @@ -74,6 +74,7 @@ in nomad_fmt = states.unpackaged; npm-groovy-lint = states.unpackaged; packer_fmt = states.unpackaged; + palantir-java-format = states.unpackaged; pangu = states.unpackaged; perlimports = states.unpackaged; pint = states.unpackaged; From 1d333fc92e6fa17c8afa619bf3b59e3627e0ab54 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 26 Dec 2025 15:06:14 +0100 Subject: [PATCH 12/30] treewide: apply linter suggestions --- ci/version-info/supported-versions.nix | 2 +- docs/fix-links/default.nix | 2 +- docs/lib/default.nix | 4 ++-- docs/lib/function-locations.nix | 4 ++-- docs/mdbook/default.nix | 6 +++--- docs/modules/category.nix | 2 +- docs/modules/menu.nix | 2 +- docs/modules/to-menu.nix | 2 +- docs/user-configs/tests.nix | 6 +++--- docs/user-guide/faq.md | 2 +- flake/ci.nix | 3 +-- lib/keymap-helpers.nix | 2 +- lib/plugins/utils.nix | 2 +- lib/types.nix | 1 - lib/utils.internal.nix | 2 +- modules/dependencies.nix | 2 +- modules/keymaps.nix | 2 +- modules/top-level/files/default.nix | 2 +- modules/top-level/plugins/utils.nix | 2 +- modules/top-level/readonly-renames.nix | 4 ++-- modules/top-level/test.nix | 4 ++-- plugins/by-name/ccc/default.nix | 2 +- plugins/by-name/efmls-configs/default.nix | 4 ++-- plugins/by-name/friendly-snippets/default.nix | 6 ++++-- plugins/by-name/pckr/default.nix | 2 +- plugins/by-name/rainbow-delimiters/default.nix | 3 +-- plugins/by-name/typescript-tools/default.nix | 2 +- plugins/cmp/sources/_mk-cmp-plugin.nix | 2 +- plugins/cmp/sources/default.nix | 2 +- plugins/deprecation.nix | 2 +- plugins/lsp/default.nix | 2 +- plugins/pluginmanagers/lazy.nix | 2 +- tests/fetch-tests.nix | 6 +++--- tests/generated.nix | 2 +- tests/lib-tests.nix | 2 +- tests/main.nix | 4 ++-- tests/maintainers.nix | 6 ++---- .../test-sources/plugins/by-name/efmls-configs/default.nix | 2 +- wrappers/_shared.nix | 4 +--- 39 files changed, 54 insertions(+), 59 deletions(-) diff --git a/ci/version-info/supported-versions.nix b/ci/version-info/supported-versions.nix index 73c7a4d4..6dc4bb74 100644 --- a/ci/version-info/supported-versions.nix +++ b/ci/version-info/supported-versions.nix @@ -19,7 +19,7 @@ let |> builtins.attrValues |> builtins.filter (entry: entry.variant or null == "primary") |> builtins.filter (entry: builtins.elem entry.status supported) - |> builtins.map (entry: { + |> map (entry: { name = entry.channel |> builtins.match "nixos-(.+)" |> builtins.head; value = { inherit (entry) channel status; diff --git a/docs/fix-links/default.nix b/docs/fix-links/default.nix index 4d01c651..91814379 100644 --- a/docs/fix-links/default.nix +++ b/docs/fix-links/default.nix @@ -6,7 +6,7 @@ docsUrl ? "https://nix-community.github.io/nixvim/", }: src: -runCommand (src.name or (builtins.baseNameOf src)) +runCommand (src.name or (baseNameOf src)) { inherit src; bindings = diff --git a/docs/lib/default.nix b/docs/lib/default.nix index 3690b50d..c5fea47f 100644 --- a/docs/lib/default.nix +++ b/docs/lib/default.nix @@ -25,10 +25,10 @@ let builtins.concatMap ( node: let - children = builtins.removeAttrs node [ "_page" ]; + children = removeAttrs node [ "_page" ]; in lib.optional (node ? _page) node._page ++ lib.optionals (children != { }) (collectPages children) - ) (builtins.attrValues (builtins.removeAttrs pages [ "_category" ])); + ) (builtins.attrValues (removeAttrs pages [ "_category" ])); # Normalised page specs pageList = collectPages pages; diff --git a/docs/lib/function-locations.nix b/docs/lib/function-locations.nix index e232d514..d267aa7f 100644 --- a/docs/lib/function-locations.nix +++ b/docs/lib/function-locations.nix @@ -65,7 +65,7 @@ let value = let file = removeNixvimPrefix location.file; - line = builtins.toString location.line; + line = toString location.line; text = "${file}:${line}"; target = "${urlPrefix}/${file}#L${line}"; in @@ -80,6 +80,6 @@ lib.pipe functionSet [ # No need to include out-of-tree entries (builtins.filter (entry: lib.strings.hasPrefix rootPathString entry.location.file)) # Convert entries to attrset - (builtins.map entryToNameValuePair) + (map entryToNameValuePair) builtins.listToAttrs ] diff --git a/docs/mdbook/default.nix b/docs/mdbook/default.nix index 36e748b6..c75cbd01 100644 --- a/docs/mdbook/default.nix +++ b/docs/mdbook/default.nix @@ -37,7 +37,7 @@ let # whether to nest into a sub-page, so that we can keep the original # _freeformOptions attr as intended. attrs._freeformOptions or { } - // builtins.removeAttrs attrs [ + // removeAttrs attrs [ "_module" "_freeformOptions" "warnings" @@ -96,7 +96,7 @@ let let info = lib.attrByPath path { } nixvimInfo; maintainers = lib.unique (configuration.config.meta.maintainers.${info.file} or [ ]); - maintainersNames = builtins.map maintToMD maintainers; + maintainersNames = map maintToMD maintainers; maintToMD = m: if m ? github then "[${m.name}](https://github.com/${m.github})" else m.name; in # Make sure this path has a valid info attrset @@ -304,7 +304,7 @@ let # Attrset of { filePath = renderedDocs; } platformOptionsFiles = lib.listToAttrs ( - builtins.map ( + map ( { path, file, ... }: { name = path; diff --git a/docs/modules/category.nix b/docs/modules/category.nix index 749a29af..218a81a7 100644 --- a/docs/modules/category.nix +++ b/docs/modules/category.nix @@ -12,7 +12,7 @@ let modules = [ ./page.nix ]; }; - pages = builtins.removeAttrs config (builtins.attrNames options); + pages = removeAttrs config (builtins.attrNames options); in { freeformType = lib.types.attrsOf pageType; diff --git a/docs/modules/menu.nix b/docs/modules/menu.nix index eaa90d6b..c7da7236 100644 --- a/docs/modules/menu.nix +++ b/docs/modules/menu.nix @@ -9,7 +9,7 @@ let modules = [ ./category.nix ]; }; - categories = builtins.removeAttrs config (builtins.attrNames options); + categories = removeAttrs config (builtins.attrNames options); in { freeformType = lib.types.attrsOf categoryType; diff --git a/docs/modules/to-menu.nix b/docs/modules/to-menu.nix index f0cab7f7..bed3e86a 100644 --- a/docs/modules/to-menu.nix +++ b/docs/modules/to-menu.nix @@ -20,7 +20,7 @@ let nextPrefix = if showInMenu then loc else prefix; nextIndent = if showInMenu && nested then indent + " " else indent; - children = builtins.removeAttrs page optionNames; + children = removeAttrs page optionNames; submenu = lib.pipe children [ builtins.attrValues (map ( diff --git a/docs/user-configs/tests.nix b/docs/user-configs/tests.nix index 5e62cd3c..d47fcab8 100644 --- a/docs/user-configs/tests.nix +++ b/docs/user-configs/tests.nix @@ -5,7 +5,7 @@ drv, # The derivation under test }: let - toFile = name: v: if lib.isPath v then v else writeText name v; + mkFile = name: v: if lib.isPath v then v else writeText name v; overrideSrc = src: @@ -21,8 +21,8 @@ let }: testers.testEqualContents { assertion = message; - actual = overrideSrc (toFile "${message}-input" input); - expected = toFile "${message}-expected" expected; + actual = overrideSrc (mkFile "${message}-input" input); + expected = mkFile "${message}-expected" expected; }; in # TODO: introduce some negative cases for input that should fail diff --git a/docs/user-guide/faq.md b/docs/user-guide/faq.md index 9b695326..0ae84c65 100644 --- a/docs/user-guide/faq.md +++ b/docs/user-guide/faq.md @@ -103,7 +103,7 @@ You could use the builtin [`map`] function (or similar) to do something like thi ```nix { keymaps = - (builtins.map (key: { + (map (key: { inherit key; action = ""; options.desc = "My cool keymapping"; diff --git a/flake/ci.nix b/flake/ci.nix index 247dea66..1f4bd443 100644 --- a/flake/ci.nix +++ b/flake/ci.nix @@ -1,7 +1,6 @@ { lib, config, ... }: let inherit (lib) - mapAttrs types ; in @@ -39,7 +38,7 @@ in # Transpose per-system definitions to the top-level config.ci = { - buildbot = mapAttrs (_: sysCfg: sysCfg.ci.buildbot) config.allSystems; + buildbot = builtins.mapAttrs (_: sysCfg: sysCfg.ci.buildbot) config.allSystems; }; }; } diff --git a/lib/keymap-helpers.nix b/lib/keymap-helpers.nix index 8f9f2a62..9378a563 100644 --- a/lib/keymap-helpers.nix +++ b/lib/keymap-helpers.nix @@ -65,7 +65,7 @@ rec { # to ensure `lua` isn't evaluated when (e.g.) generating lua code. # Failure to do so will result in "option used but not defined" errors! deprecatedMapOptionSubmodule = mkMapOptionSubmodule { lua = true; }; - removeDeprecatedMapAttrs = v: builtins.removeAttrs v [ "lua" ]; + removeDeprecatedMapAttrs = v: removeAttrs v [ "lua" ]; mkModeOption = default: diff --git a/lib/plugins/utils.nix b/lib/plugins/utils.nix index 87a4b75f..0cf63d58 100644 --- a/lib/plugins/utils.nix +++ b/lib/plugins/utils.nix @@ -138,7 +138,7 @@ }; in lib.pipe depsToEnable [ - (builtins.map enableDepConditionally) + (map enableDepConditionally) lib.listToAttrs ]; }; diff --git a/lib/types.nix b/lib/types.nix index 9a5e637b..125c6151 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -140,7 +140,6 @@ rec { pluginLuaConfig = types.submodule ( { config, ... }: let - inherit (builtins) toString; inherit (lib.nixvim.utils) mkBeforeSection mkAfterSection; in { diff --git a/lib/utils.internal.nix b/lib/utils.internal.nix index 4940e206..813b9fb4 100644 --- a/lib/utils.internal.nix +++ b/lib/utils.internal.nix @@ -138,7 +138,7 @@ rec { message = "${prefix} ${lib.trim a.message}"; }; in - builtins.map processAssertion (lib.toList assertions); + map processAssertion (lib.toList assertions); /** Convert one or several conditional warnings to a final warning list. diff --git a/modules/dependencies.nix b/modules/dependencies.nix index efd7daab..d7602c1e 100644 --- a/modules/dependencies.nix +++ b/modules/dependencies.nix @@ -97,7 +97,7 @@ in extraPackages = lib.pipe cfg [ builtins.attrValues (builtins.filter (p: p.enable)) - (builtins.map (p: p.package)) + (map (p: p.package)) ]; __depPackages = { diff --git a/modules/keymaps.nix b/modules/keymaps.nix index 785f1bfe..ca39a759 100644 --- a/modules/keymaps.nix +++ b/modules/keymaps.nix @@ -70,7 +70,7 @@ in # NOTE: barbar added `mapOptionSubmodule` support shortly _before_ branching off 24.05 (lib.mapAttrsToList (name: opt: opt.valueMeta) ( - builtins.removeAttrs options.plugins.barbar.keymaps [ "silent" ] + removeAttrs options.plugins.barbar.keymaps [ "silent" ] )) ] [ diff --git a/modules/top-level/files/default.nix b/modules/top-level/files/default.nix index ac7e2e7d..1c081a19 100644 --- a/modules/top-level/files/default.nix +++ b/modules/top-level/files/default.nix @@ -20,7 +20,7 @@ let { _module.args = lib.pipe options._module.args [ lib.modules.mergeAttrDefinitionsWithPrio - (lib.flip builtins.removeAttrs [ "name" ]) + (lib.flip removeAttrs [ "name" ]) (lib.mapAttrs (_: { highestPrio, value }: lib.mkOverride highestPrio value)) ]; } diff --git a/modules/top-level/plugins/utils.nix b/modules/top-level/plugins/utils.nix index f85b6e49..dbcf7f7f 100644 --- a/modules/top-level/plugins/utils.nix +++ b/modules/top-level/plugins/utils.nix @@ -29,7 +29,7 @@ lib.fix (self: { defaultPlugin // (if p ? plugin then p else { plugin = p; }); # Normalize a list of plugins - normalizePlugins = builtins.map self.normalizePlugin; + normalizePlugins = map self.normalizePlugin; getAndNormalizeDeps = p: self.normalizePlugins (p.plugin.dependencies or [ ]); diff --git a/modules/top-level/readonly-renames.nix b/modules/top-level/readonly-renames.nix index 0065ee25..e200b4ef 100644 --- a/modules/top-level/readonly-renames.nix +++ b/modules/top-level/readonly-renames.nix @@ -21,9 +21,9 @@ let }; go = - path: name: opt: + optPath: name: opt: let - loc = path ++ lib.singleton name; + loc = optPath ++ lib.singleton name; in if lib.isOption opt then mkAlias loc opt else lib.mapAttrs (go loc) opt; in diff --git a/modules/top-level/test.nix b/modules/top-level/test.nix index abd93cd6..6d8a50b0 100644 --- a/modules/top-level/test.nix +++ b/modules/top-level/test.nix @@ -301,8 +301,8 @@ in name: lib.pipe cfg.${name} [ (builtins.filter (x: !x.predicate input.${name})) - (builtins.map (x: x.message)) - (builtins.map (msg: if lib.isFunction msg then msg input.${name} else msg)) + (map (x: x.message)) + (map (msg: if lib.isFunction msg then msg input.${name} else msg)) ( x: if x == [ ] then diff --git a/plugins/by-name/ccc/default.nix b/plugins/by-name/ccc/default.nix index 80723916..1529af9a 100644 --- a/plugins/by-name/ccc/default.nix +++ b/plugins/by-name/ccc/default.nix @@ -186,7 +186,7 @@ lib.nixvim.plugins.mkNeovimPlugin { (listOf strLua) ) ); - apply = builtins.map mapToRawLua; + apply = map mapToRawLua; default = [ ]; example = [ [ diff --git a/plugins/by-name/efmls-configs/default.nix b/plugins/by-name/efmls-configs/default.nix index 5f94eb22..eee2dc4a 100644 --- a/plugins/by-name/efmls-configs/default.nix +++ b/plugins/by-name/efmls-configs/default.nix @@ -152,7 +152,7 @@ lib.nixvim.plugins.mkNeovimPlugin { ( lib.attrValues ( # Rename aliases added 2025-06-25 in https://github.com/nix-community/nixvim/pull/3503 - builtins.removeAttrs cfg.languages [ + removeAttrs cfg.languages [ "warnings" "HTML" "JSON" @@ -208,7 +208,7 @@ lib.nixvim.plugins.mkNeovimPlugin { (mkToolValue "linters" linter) ++ (mkToolValue "formatters" formatter) ) ( - builtins.removeAttrs cfg.languages [ + removeAttrs cfg.languages [ "all" # Rename aliases added 2025-06-25 in https://github.com/nix-community/nixvim/pull/3503 "warnings" diff --git a/plugins/by-name/friendly-snippets/default.nix b/plugins/by-name/friendly-snippets/default.nix index baf160cf..8fdee054 100644 --- a/plugins/by-name/friendly-snippets/default.nix +++ b/plugins/by-name/friendly-snippets/default.nix @@ -19,9 +19,11 @@ lib.nixvim.plugins.mkVimPlugin { "plugins.blink-cmp.enable" "plugins.nvim-snippets.enable" ]; - enabledConsumers = builtins.filter (path: lib.getAttrFromPath path config) snippetConsumers; + enabledConsumers = builtins.filter ( + consumerPath: lib.getAttrFromPath consumerPath config + ) snippetConsumers; enabledConsumersPretty = lib.concatMapStringsSep ", " ( - path: lib.getAttrFromPath path options + consumerPath: lib.getAttrFromPath consumerPath options ) enabledConsumers; in { diff --git a/plugins/by-name/pckr/default.nix b/plugins/by-name/pckr/default.nix index 69ca52a8..eb59cb91 100644 --- a/plugins/by-name/pckr/default.nix +++ b/plugins/by-name/pckr/default.nix @@ -86,7 +86,7 @@ lib.nixvim.plugins.mkNeovimPlugin { if builtins.isString p then p else - builtins.removeAttrs p [ + removeAttrs p [ "path" "requires" ] diff --git a/plugins/by-name/rainbow-delimiters/default.nix b/plugins/by-name/rainbow-delimiters/default.nix index 2809c9ba..29da683a 100644 --- a/plugins/by-name/rainbow-delimiters/default.nix +++ b/plugins/by-name/rainbow-delimiters/default.nix @@ -6,7 +6,6 @@ }: let opts = options.plugins.rainbow-delimiters; - inherit (builtins) any isNull; inherit (lib) mapAttrs' nameValuePair isString; inherit (lib.nixvim) mkRaw toLuaObject nestedLiteralLua; in @@ -103,7 +102,7 @@ lib.nixvim.plugins.mkNeovimPlugin { ]; assertions = lib.nixvim.mkAssertions "plugins.rainbow-delimiters" { - assertion = any isNull [ + assertion = builtins.any isNull [ (cfg.settings.whitelist or null) (cfg.settings.blacklist or null) ]; diff --git a/plugins/by-name/typescript-tools/default.nix b/plugins/by-name/typescript-tools/default.nix index 035d1813..749a82ca 100644 --- a/plugins/by-name/typescript-tools/default.nix +++ b/plugins/by-name/typescript-tools/default.nix @@ -223,7 +223,7 @@ lib.nixvim.plugins.mkNeovimPlugin { renamedSettings = lib.foldl' ( acc: optPath: let - snakeCasePath = builtins.map lib.nixvim.toSnakeCase optPath; + snakeCasePath = map lib.nixvim.toSnakeCase optPath; optValue = lib.getAttrFromPath optPath cfg.settings; in lib.recursiveUpdate acc (lib.setAttrByPath snakeCasePath optValue) diff --git a/plugins/cmp/sources/_mk-cmp-plugin.nix b/plugins/cmp/sources/_mk-cmp-plugin.nix index cad16699..d8c89b1b 100644 --- a/plugins/cmp/sources/_mk-cmp-plugin.nix +++ b/plugins/cmp/sources/_mk-cmp-plugin.nix @@ -15,7 +15,7 @@ ... }@args: lib.nixvim.plugins.mkVimPlugin ( - builtins.removeAttrs args [ + removeAttrs args [ "pluginName" "sourceName" ] diff --git a/plugins/cmp/sources/default.nix b/plugins/cmp/sources/default.nix index 67a5fe3f..56152e89 100644 --- a/plugins/cmp/sources/default.nix +++ b/plugins/cmp/sources/default.nix @@ -174,7 +174,7 @@ let mkCmpSourcePlugin = import ./_mk-cmp-plugin.nix { inherit lib pkgs; }; - pluginModules = builtins.map mkCmpSourcePlugin sources; + pluginModules = map mkCmpSourcePlugin sources; in { # For extra cmp plugins diff --git a/plugins/deprecation.nix b/plugins/deprecation.nix index fa8cf3a7..b23a7fa7 100644 --- a/plugins/deprecation.nix +++ b/plugins/deprecation.nix @@ -82,7 +82,7 @@ in acc: scope: renamed': acc ++ lib.mapAttrsToList (old: new: lib.mkRenamedOptionModule [ scope old ] [ scope new ]) renamed' ) [ ] renamed - ++ builtins.map ( + ++ map ( name: lib.mkRemovedOptionModule [ "plugins" name "iconsPackage" ] '' Please use `plugins.web-devicons` or `plugins.mini.modules.icons` with `plugins.mini.mockDevIcons`, or `plugins.mini-icons` with `plugins.mini-icons.mockDevIcons` instead. diff --git a/plugins/lsp/default.nix b/plugins/lsp/default.nix index 2130c17b..67608d28 100644 --- a/plugins/lsp/default.nix +++ b/plugins/lsp/default.nix @@ -163,7 +163,7 @@ lib.nixvim.plugins.mkNeovimPlugin { actionStr = action.action or action; mode = action.mode or "n"; actionProps = lib.optionalAttrs (builtins.isAttrs action) ( - builtins.removeAttrs action [ + removeAttrs action [ "action" "mode" ] diff --git a/plugins/pluginmanagers/lazy.nix b/plugins/pluginmanagers/lazy.nix index dde2430a..ed56c5fa 100644 --- a/plugins/pluginmanagers/lazy.nix +++ b/plugins/pluginmanagers/lazy.nix @@ -169,7 +169,7 @@ lib.nixvim.plugins.mkNeovimPlugin { in [ (mkEntryFromDrv plugin) ] ++ processDependencies; - processedPlugins = builtins.concatLists (builtins.map processPlugin cfg.plugins); + processedPlugins = builtins.concatLists (map processPlugin cfg.plugins); lazyPath = pkgs.linkFarm "lazy-plugins" processedPlugins; pluginToLua = diff --git a/tests/fetch-tests.nix b/tests/fetch-tests.nix index b45d116d..7aac5d2f 100644 --- a/tests/fetch-tests.nix +++ b/tests/fetch-tests.nix @@ -27,7 +27,7 @@ let # Recurse into all directories, extracting files as we find them. # This returns a list of { name; file; cases; } attrsets. fetchTests = - path: namespace: + testPath: namespace: let # Handle an entry from readDir # - If it is a regular nix file, import its content @@ -35,7 +35,7 @@ let handleEntry = name: type: let - file = /${path}/${name}; + file = /${testPath}/${name}; in if type == "regular" then lib.optional (lib.hasSuffix ".nix" name) ( @@ -46,7 +46,7 @@ let else fetchTests file (namespace ++ [ name ]); in - lib.pipe path [ + lib.pipe testPath [ builtins.readDir (lib.filterAttrs (n: v: v != "symlink")) (lib.mapAttrsToList handleEntry) diff --git a/tests/generated.nix b/tests/generated.nix index 9ece5d6b..684651a8 100644 --- a/tests/generated.nix +++ b/tests/generated.nix @@ -29,7 +29,7 @@ let let missingFromPkgs = builtins.concatMap ( loc: lib.optional (!lib.hasAttrByPath loc pkgs) (lib.concatStringsSep "." loc) - ) (builtins.map lib.toList packages); + ) (map lib.toList packages); undeclared = lib.filter (name: !(lib.elem name declared)) generated; uselesslyDeclared = lib.partition (name: lib.elem name unsupported) ( lib.filter (name: !(lib.elem name generated)) declared diff --git a/tests/lib-tests.nix b/tests/lib-tests.nix index f2734634..27732228 100644 --- a/tests/lib-tests.nix +++ b/tests/lib-tests.nix @@ -564,7 +564,7 @@ else runCommandLocal "lib-tests-failure" { results = lib.concatStringsSep "\n" ( - builtins.map (result: '' + map (result: '' ${result.name}: expected: ${lib.generators.toPretty { } result.expected} result: ${lib.generators.toPretty { } result.result} diff --git a/tests/main.nix b/tests/main.nix index 648c341d..43403017 100644 --- a/tests/main.nix +++ b/tests/main.nix @@ -45,7 +45,7 @@ let configuration.config.build.test.overrideAttrs (old: { passthru = old.passthru or { } - // builtins.removeAttrs configuration [ + // removeAttrs configuration [ "_type" "type" ] @@ -66,7 +66,7 @@ let config = import ../example.nix { inherit pkgs; }; in { - main = builtins.removeAttrs config.programs.nixvim [ + main = removeAttrs config.programs.nixvim [ # This is not available to standalone modules, only HM & NixOS Modules "enable" # This is purely an example, it does not reflect a real usage diff --git a/tests/maintainers.nix b/tests/maintainers.nix index bb14e323..b9ae6a47 100644 --- a/tests/maintainers.nix +++ b/tests/maintainers.nix @@ -1,14 +1,12 @@ { - lib, nixpkgsLib, runCommandLocal, }: let - inherit (lib) attrNames filter length; nixvimList = import ../lib/maintainers.nix; nixpkgsList = nixpkgsLib.maintainers; - duplicates = filter (name: nixpkgsList ? ${name}) (attrNames nixvimList); - count = length duplicates; + duplicates = builtins.filter (name: nixpkgsList ? ${name}) (builtins.attrNames nixvimList); + count = builtins.length duplicates; in runCommandLocal "maintainers-test" { inherit count duplicates; } '' if [ $count -gt 0 ]; then diff --git a/tests/test-sources/plugins/by-name/efmls-configs/default.nix b/tests/test-sources/plugins/by-name/efmls-configs/default.nix index d15825b8..39494981 100644 --- a/tests/test-sources/plugins/by-name/efmls-configs/default.nix +++ b/tests/test-sources/plugins/by-name/efmls-configs/default.nix @@ -11,7 +11,7 @@ # toolOptions is an attrsets of the form: # { = { linter = tools; formatter = tools; }; } # Where tools is the option type representing the valid tools for this language - toolOptions = builtins.removeAttrs (languages.type.getSubOptions languages.loc) [ + toolOptions = removeAttrs (languages.type.getSubOptions languages.loc) [ "_freeformOptions" "_module" diff --git a/wrappers/_shared.nix b/wrappers/_shared.nix index efae482e..d3e137bd 100644 --- a/wrappers/_shared.nix +++ b/wrappers/_shared.nix @@ -19,8 +19,6 @@ }: let inherit (lib) - listToAttrs - map mkIf mkMerge optionalAttrs @@ -89,7 +87,7 @@ in (optionalAttrs (filesOpt != null) ( mkIf (cfg.enable && !cfg.wrapRc) ( setAttrByPath filesOpt ( - listToAttrs ( + builtins.listToAttrs ( map ( { target, finalSource, ... }: { From fe10a072ecb3f535dd126f20744fabe82e145f48 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 26 Dec 2025 23:39:07 +0100 Subject: [PATCH 13/30] flake/dev/fmt: ignore sema-primop-overriden rule of nixf-diagnose --- flake/dev/fmt.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake/dev/fmt.nix b/flake/dev/fmt.nix index 274d2a0a..876ac779 100644 --- a/flake/dev/fmt.nix +++ b/flake/dev/fmt.nix @@ -66,6 +66,7 @@ formatter.nixf-diagnose.options = [ "--auto-fix" "--ignore=sema-unused-def-lambda-witharg-formal" + "--ignore=sema-primop-overridden" ]; }; }; From 56f03c43130bf4e6b38cf49042fd45f413c9b0c4 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sat, 27 Dec 2025 16:11:58 +0100 Subject: [PATCH 14/30] Revert "tests: disable terragrunt (build failure)" This reverts commit 9f8955a868d65e037cef5b3825110cf631ff3a96. --- plugins/by-name/conform-nvim/formatter-packages.nix | 5 +---- tests/all-package-defaults.nix | 4 ---- tests/test-sources/plugins/by-name/none-ls/default.nix | 5 ----- 3 files changed, 1 insertion(+), 13 deletions(-) diff --git a/plugins/by-name/conform-nvim/formatter-packages.nix b/plugins/by-name/conform-nvim/formatter-packages.nix index 26b74003..9f62210f 100644 --- a/plugins/by-name/conform-nvim/formatter-packages.nix +++ b/plugins/by-name/conform-nvim/formatter-packages.nix @@ -17,10 +17,6 @@ in # https://github.com/NixOS/nixpkgs/pull/459254#issuecomment-3689578764 phpcbf = states.broken php84Packages.php-codesniffer; - # 2025-12-20 build failure - # https://github.com/NixOS/nixpkgs/issues/472704 - terragrunt_hclfmt = states.broken terragrunt; - # 2025-11-15 dependency swift is broken # https://github.com/NixOS/nixpkgs/issues/461474 swift = states.broken swift; @@ -159,6 +155,7 @@ in inherit (rubyPackages) syntax_tree; tclfmt = tclint; terraform_fmt = tenv; + terragrunt_hclfmt = terragrunt; tofu_fmt = opentofu; v = vlang; xmlformatter = xmlformat; diff --git a/tests/all-package-defaults.nix b/tests/all-package-defaults.nix index c50a063f..33893110 100644 --- a/tests/all-package-defaults.nix +++ b/tests/all-package-defaults.nix @@ -22,10 +22,6 @@ let "sourcekit-lsp" "swift-format" - # 2025-12-20 build failure - # https://github.com/NixOS/nixpkgs/issues/472704 - "terragrunt" - # 2025-10-12 dependency mbedtls is marked as insecure "haxe" ] diff --git a/tests/test-sources/plugins/by-name/none-ls/default.nix b/tests/test-sources/plugins/by-name/none-ls/default.nix index 854065fa..7e93ce09 100644 --- a/tests/test-sources/plugins/by-name/none-ls/default.nix +++ b/tests/test-sources/plugins/by-name/none-ls/default.nix @@ -105,11 +105,6 @@ "phpcbf" "phpcs" - # TODO Added 2025-12-20 build failure - # https://github.com/NixOS/nixpkgs/issues/472704 - "terragrunt_fmt" - "terragrunt_validate" - # TODO Added 2025-11-15 # dependency swift is broken # https://github.com/NixOS/nixpkgs/issues/461474 From 4a6d561362a02ec516135a9bb2b805e5af3c1e3f Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 28 Dec 2025 06:35:14 +0000 Subject: [PATCH 15/30] plugins/otter: fix highlighting warning `highlightEnabled` can never be null, since it is the `||` of two booleans. Historically, `plugins.treesitter.settings.highlight.enable` was a default-null option. Checking for null was effectively checking for the default value. This would now be `plugins.treesitter.settings ? highlight.enable`, however reading the actual boolean more closely matches the intent. --- plugins/by-name/otter/default.nix | 2 +- .../plugins/by-name/otter/default.nix | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/plugins/by-name/otter/default.nix b/plugins/by-name/otter/default.nix index a27f7dd0..b9a6aa9c 100644 --- a/plugins/by-name/otter/default.nix +++ b/plugins/by-name/otter/default.nix @@ -87,7 +87,7 @@ lib.nixvim.plugins.mkNeovimPlugin { inherit (config.plugins) treesitter; highlightEnabled = treesitter.highlight.enable || (treesitter.settings.highlight.enable or false); in - config.plugins.treesitter.enable -> highlightEnabled == null; + !(treesitter.enable && highlightEnabled); message = '' You have enabled otter, but treesitter syntax highlighting is not enabled. diff --git a/tests/test-sources/plugins/by-name/otter/default.nix b/tests/test-sources/plugins/by-name/otter/default.nix index 8ba902df..040ee57a 100644 --- a/tests/test-sources/plugins/by-name/otter/default.nix +++ b/tests/test-sources/plugins/by-name/otter/default.nix @@ -61,4 +61,28 @@ }; }; }; + + warning-no-highlight = { + test.runNvim = false; + test.warnings = expect: [ + (expect "count" 1) + (expect "any" "You have enabled otter, but treesitter syntax highlighting is not enabled.") + ]; + plugins = { + otter.enable = true; + treesitter.enable = true; + }; + }; + + warning-no-treesitter = { + test.runNvim = false; + test.warnings = expect: [ + (expect "count" 1) + (expect "any" "You have enabled otter, but treesitter syntax highlighting is not enabled.") + ]; + plugins = { + otter.enable = true; + treesitter.highlight.enable = true; + }; + }; } From db0fa29513adca685a1557ed41c52f3fb20add28 Mon Sep 17 00:00:00 2001 From: Matt Sturgeon Date: Sun, 28 Dec 2025 06:47:24 +0000 Subject: [PATCH 16/30] plugins/otter: use option interpolation in warning Stringifying actual options via `"${option}"` interpolation ensures the full option path (with prefix) is used. --- plugins/by-name/otter/default.nix | 13 +++++++++---- .../test-sources/plugins/by-name/otter/default.nix | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/plugins/by-name/otter/default.nix b/plugins/by-name/otter/default.nix index b9a6aa9c..ca778db2 100644 --- a/plugins/by-name/otter/default.nix +++ b/plugins/by-name/otter/default.nix @@ -1,6 +1,7 @@ { lib, config, + options, ... }: lib.nixvim.plugins.mkNeovimPlugin { @@ -89,10 +90,14 @@ lib.nixvim.plugins.mkNeovimPlugin { in !(treesitter.enable && highlightEnabled); - message = '' - You have enabled otter, but treesitter syntax highlighting is not enabled. - Otter functionality might not work as expected without it. Make sure `plugins.treesitter.highlight.enable` and `plugins.treesitter.enable` are enabled. - ''; + message = + let + inherit (options.plugins) treesitter; + in + '' + You have enabled otter, but treesitter syntax highlighting is not enabled. + Otter functionality might not work as expected without it. Make sure `${treesitter.highlight.enable}` and `${treesitter.enable}` are enabled. + ''; }; lsp.onAttach = lib.mkIf cfg.autoActivate '' diff --git a/tests/test-sources/plugins/by-name/otter/default.nix b/tests/test-sources/plugins/by-name/otter/default.nix index 040ee57a..e4eb4a98 100644 --- a/tests/test-sources/plugins/by-name/otter/default.nix +++ b/tests/test-sources/plugins/by-name/otter/default.nix @@ -67,6 +67,7 @@ test.warnings = expect: [ (expect "count" 1) (expect "any" "You have enabled otter, but treesitter syntax highlighting is not enabled.") + (expect "any" "Make sure `plugins.treesitter.highlight.enable` and `plugins.treesitter.enable` are enabled.") ]; plugins = { otter.enable = true; @@ -79,6 +80,7 @@ test.warnings = expect: [ (expect "count" 1) (expect "any" "You have enabled otter, but treesitter syntax highlighting is not enabled.") + (expect "any" "Make sure `plugins.treesitter.highlight.enable` and `plugins.treesitter.enable` are enabled.") ]; plugins = { otter.enable = true; From 51ae9913767528723397e1b227bd32a080058bb5 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Sat, 27 Dec 2025 21:23:26 -0600 Subject: [PATCH 17/30] plugins/inc-rename: remove settingsOptions Tried setting up plugin, settingsOptions prevented a valid configuration. Removing options. --- plugins/by-name/inc-rename/default.nix | 48 +++----------------------- 1 file changed, 4 insertions(+), 44 deletions(-) diff --git a/plugins/by-name/inc-rename/default.nix b/plugins/by-name/inc-rename/default.nix index 4ef7fbc7..fee8e4cb 100644 --- a/plugins/by-name/inc-rename/default.nix +++ b/plugins/by-name/inc-rename/default.nix @@ -1,8 +1,4 @@ { lib, ... }: -let - inherit (lib) types; - inherit (lib.nixvim) defaultNullOpts; -in lib.nixvim.plugins.mkNeovimPlugin { name = "inc-rename"; moduleName = "inc_rename"; @@ -14,47 +10,11 @@ lib.nixvim.plugins.mkNeovimPlugin { maintainers = [ lib.maintainers.jolars ]; - settingsOptions = { - cmd_name = defaultNullOpts.mkStr "IncRename" "The name of the command."; - - hl_group = defaultNullOpts.mkStr "Substitute" '' - The highlight group used for highlighting the identifier's new name. - ''; - - preview_empty_name = defaultNullOpts.mkBool false '' - Whether an empty new name should be previewed; if false the command - preview will be cancelled instead. - ''; - - show_message = defaultNullOpts.mkBool true '' - Whether to display a `Renamed m instances in n files` message after a rename operation. - ''; - - save_in_cmdline_history = defaultNullOpts.mkBool true '' - Whether to save the `IncRename` command in the commandline history. Set to - false to prevent issues with navigating to older entries that may arise due to - the behavior of command preview). - ''; - - input_buffer_type = - defaultNullOpts.mkNullable (with types; either (enum [ "dressing" ]) rawLua) null - '' - The type of the external input buffer to use. - ''; - - post_hook = defaultNullOpts.mkRaw null '' - Callback to run after renaming, receives the result table (from LSP - handler) as an argument. - ''; - }; - settingsExample = { - input_buffer_type = "dressing"; + cmd_name = "IncRename"; + hl_group = "Substitute"; + input_buffer_type = "snacks"; preview_empty_name = false; - show_message.__raw = '' - function(msg) - vim.notify(msg, vim.log.levels.INFO, { title = "Rename" }) - end - ''; + show_message = true; }; } From ff75a5d3cc674391814c4703464ea1a3db204078 Mon Sep 17 00:00:00 2001 From: "nixvim-ci[bot]" <212996653+nixvim-ci[bot]@users.noreply.github.com> Date: Sun, 28 Dec 2025 12:17:32 +0000 Subject: [PATCH 18/30] flake: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit flake.lock updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/4eec65df50d796a8fd9c146a09b5007916ce376b?narHash=sha256-7sgUQMKMDvpeu9cwE7mWJfP9N3wJduunmJ/s8LOd9nk%3D' (2025-12-27) → 'github:NixOS/nixpkgs/3edc4a30ed3903fdf6f90c837f961fa6b49582d1?narHash=sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio%3D' (2025-12-27) flake/dev/flake.lock updates: • Updated input 'dev-nixpkgs': 'github:NixOS/nixpkgs/4eec65df50d796a8fd9c146a09b5007916ce376b?narHash=sha256-7sgUQMKMDvpeu9cwE7mWJfP9N3wJduunmJ/s8LOd9nk%3D' (2025-12-27) → 'github:NixOS/nixpkgs/3edc4a30ed3903fdf6f90c837f961fa6b49582d1?narHash=sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio%3D' (2025-12-27) • Updated input 'home-manager': 'github:nix-community/home-manager/91cdb0e2d574c64fae80d221f4bf09d5592e9ec2?narHash=sha256-GKO35onS711ThCxwWcfuvbIBKXwriahGqs%2BWZuJ3v9E%3D' (2025-12-25) → 'github:nix-community/home-manager/d2e0458d6531885600b346e161c38790dc356fa8?narHash=sha256-JR7A2xS3EBPWFeONzhqez5vp7nKEsp7eLj2Ks210Srk%3D' (2025-12-28) --- flake.lock | 6 +++--- flake/dev/flake.lock | 12 ++++++------ version-info.toml | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/flake.lock b/flake.lock index d238dd89..1a8984dd 100644 --- a/flake.lock +++ b/flake.lock @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1766807290, - "narHash": "sha256-7sgUQMKMDvpeu9cwE7mWJfP9N3wJduunmJ/s8LOd9nk=", + "lastModified": 1766840161, + "narHash": "sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4eec65df50d796a8fd9c146a09b5007916ce376b", + "rev": "3edc4a30ed3903fdf6f90c837f961fa6b49582d1", "type": "github" }, "original": { diff --git a/flake/dev/flake.lock b/flake/dev/flake.lock index 16bf1c9b..75922cfc 100644 --- a/flake/dev/flake.lock +++ b/flake/dev/flake.lock @@ -2,11 +2,11 @@ "nodes": { "dev-nixpkgs": { "locked": { - "lastModified": 1766807290, - "narHash": "sha256-7sgUQMKMDvpeu9cwE7mWJfP9N3wJduunmJ/s8LOd9nk=", + "lastModified": 1766840161, + "narHash": "sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4eec65df50d796a8fd9c146a09b5007916ce376b", + "rev": "3edc4a30ed3903fdf6f90c837f961fa6b49582d1", "type": "github" }, "original": { @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1766682973, - "narHash": "sha256-GKO35onS711ThCxwWcfuvbIBKXwriahGqs+WZuJ3v9E=", + "lastModified": 1766881808, + "narHash": "sha256-JR7A2xS3EBPWFeONzhqez5vp7nKEsp7eLj2Ks210Srk=", "owner": "nix-community", "repo": "home-manager", - "rev": "91cdb0e2d574c64fae80d221f4bf09d5592e9ec2", + "rev": "d2e0458d6531885600b346e161c38790dc356fa8", "type": "github" }, "original": { diff --git a/version-info.toml b/version-info.toml index 40681c07..42ea2cda 100644 --- a/version-info.toml +++ b/version-info.toml @@ -1,6 +1,6 @@ # DO NOT MODIFY! # This file was generated by ci/version-info/default.nix -nixpkgs_rev = "4eec65df50d796a8fd9c146a09b5007916ce376b" +nixpkgs_rev = "3edc4a30ed3903fdf6f90c837f961fa6b49582d1" release = "26.05" unstable = true From e3e6ba21ab6517dd4b0c4da68824d5e294762a8e Mon Sep 17 00:00:00 2001 From: saygo-png Date: Mon, 10 Nov 2025 08:26:14 +0100 Subject: [PATCH 19/30] lib/plugins/mkVimPlugin: Support lazyloading Signed-off-by: saygo-png --- lib/plugins/mk-vim-plugin.nix | 57 ++++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/lib/plugins/mk-vim-plugin.nix b/lib/plugins/mk-vim-plugin.nix index 9f7ea25a..ce3fff69 100644 --- a/lib/plugins/mk-vim-plugin.nix +++ b/lib/plugins/mk-vim-plugin.nix @@ -59,6 +59,7 @@ let options = lib.setAttrByPath loc ( { enable = lib.mkEnableOption name; + lazyLoad = lib.nixvim.mkLazyLoadOption name; autoLoad = lib.nixvim.mkAutoLoadOption cfg name; } // settingsOption @@ -66,19 +67,67 @@ let ); config = lib.mkIf cfg.enable ( + let + globalsConfig = lib.nixvim.applyPrefixToAttrs globalPrefix (cfg.settings or { }); + in lib.mkMerge [ - { - inherit extraPackages extraPlugins; - globals = lib.nixvim.applyPrefixToAttrs globalPrefix (cfg.settings or { }); - } + { inherit extraPackages extraPlugins; } + + (lib.mkIf cfg.lazyLoad.enable { + assertions = [ + { + assertion = (isColorscheme && colorscheme != null) || cfg.lazyLoad.settings != { }; + message = "You have enabled lazy loading for ${name} but have not provided any configuration."; + } + ]; + + plugins.lz-n = { + plugins = [ + ( + { + # The packpath name is always the derivation name + __unkeyed-1 = lib.getName cfg.package; + # Use provided before, otherwise fallback to normal function wrapped globals config + before = + let + luaGlobals = lib.nixvim.toLuaObject globalsConfig; + before = cfg.lazyLoad.settings.before or null; + default = lib.mkIf (luaGlobals != "{ }") '' + function() + local globals = ${luaGlobals} + + for k,v in pairs(globals) do + vim.g[k] = v + end + end + ''; + in + if (lib.isString before || lib.types.rawLua.check before) then before else default; + colorscheme = lib.mkIf isColorscheme (cfg.lazyLoad.settings.colorscheme or colorscheme); + } + // lib.removeAttrs cfg.lazyLoad.settings [ + "before" + "colorscheme" + ] + ) + ]; + }; + }) + + (lib.mkIf (!cfg.lazyLoad.enable) { + globals = globalsConfig; + }) + (lib.optionalAttrs (isColorscheme && colorscheme != null) { colorscheme = lib.mkDefault colorscheme; }) + (lib.optionalAttrs (args ? extraConfig) ( lib.nixvim.plugins.utils.applyExtraConfig { inherit extraConfig cfg opts; } )) + (lib.nixvim.plugins.utils.enableDependencies dependencies) ] ); From 63c957603751f0a107c4d9c2cbaff1c8749fc9f1 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sun, 28 Dec 2025 22:47:53 +0100 Subject: [PATCH 20/30] plugins/blink-cmp-avante: init --- plugins/by-name/blink-cmp-avante/default.nix | 51 +++++++++++++++++++ .../by-name/blink-cmp-avante/default.nix | 35 +++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 plugins/by-name/blink-cmp-avante/default.nix create mode 100644 tests/test-sources/plugins/by-name/blink-cmp-avante/default.nix diff --git a/plugins/by-name/blink-cmp-avante/default.nix b/plugins/by-name/blink-cmp-avante/default.nix new file mode 100644 index 00000000..3b3c5d50 --- /dev/null +++ b/plugins/by-name/blink-cmp-avante/default.nix @@ -0,0 +1,51 @@ +{ lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "blink-cmp-avante"; + + maintainers = [ lib.maintainers.GaetanLepage ]; + + description = '' + Avante source for blink-cmp. + + --- + + This plugin should be configured through blink-cmp's `sources.providers` settings. + + For example: + + ```nix + plugins.blink-cmp = { + enable = true; + settings.sources.providers = { + avante = { + module = "blink-cmp-avante"; + name = "Avante"; + opts = { + # options for blink-cmp-avante + }; + }; + }; + }; + ``` + + And then you can add it to blink-cmp's `sources.default` option: + + ```nix + plugins.blink-cmp = { + enable = true; + settings.sources.default = [ + "lsp" + "path" + "luasnip" + "buffer" + "avante" + ]; + }; + ``` + ''; + + # Configured through blink-cmp + callSetup = false; + hasLuaConfig = false; + hasSettings = false; +} diff --git a/tests/test-sources/plugins/by-name/blink-cmp-avante/default.nix b/tests/test-sources/plugins/by-name/blink-cmp-avante/default.nix new file mode 100644 index 00000000..d94dea2e --- /dev/null +++ b/tests/test-sources/plugins/by-name/blink-cmp-avante/default.nix @@ -0,0 +1,35 @@ +{ + empty = { + plugins = { + blink-cmp.enable = true; + blink-cmp-avante.enable = true; + }; + }; + + example = { + plugins = { + blink-cmp-avante.enable = true; + blink-cmp = { + enable = true; + + settings = { + sources = { + default = [ + "avante" + "lsp" + "path" + "buffer" + ]; + providers = { + avante = { + module = "blink-cmp-avante"; + name = "Avante"; + opts = { }; + }; + }; + }; + }; + }; + }; + }; +} From 991761bc6abcfa93dd459222ce68aae2d7f81873 Mon Sep 17 00:00:00 2001 From: "nixvim-ci[bot]" <212996653+nixvim-ci[bot]@users.noreply.github.com> Date: Tue, 30 Dec 2025 09:37:08 +0000 Subject: [PATCH 21/30] flake: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit flake.lock updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/3edc4a30ed3903fdf6f90c837f961fa6b49582d1?narHash=sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio%3D' (2025-12-27) → 'github:NixOS/nixpkgs/346dd96ad74dc4457a9db9de4f4f57dab2e5731d?narHash=sha256-7fsac/f7nh/VaKJ/qm3I338%2BwAJa/3J57cOGpXi0Sbg%3D' (2025-12-29) flake/dev/flake.lock updates: • Updated input 'dev-nixpkgs': 'github:NixOS/nixpkgs/3edc4a30ed3903fdf6f90c837f961fa6b49582d1?narHash=sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio%3D' (2025-12-27) → 'github:NixOS/nixpkgs/346dd96ad74dc4457a9db9de4f4f57dab2e5731d?narHash=sha256-7fsac/f7nh/VaKJ/qm3I338%2BwAJa/3J57cOGpXi0Sbg%3D' (2025-12-29) • Updated input 'flake-compat': 'github:NixOS/flake-compat/f275e157c50c3a9a682b4c9b4aa4db7a4cd3b5f2?narHash=sha256-QN1r/zNqvXHwWqlRAnRtFf4CQwIOJx58PtdExIzAw94%3D' (2025-12-25) → 'github:NixOS/flake-compat/5edf11c44bc78a0d334f6334cdaf7d60d732daab?narHash=sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns%3D' (2025-12-29) • Updated input 'home-manager': 'github:nix-community/home-manager/d2e0458d6531885600b346e161c38790dc356fa8?narHash=sha256-JR7A2xS3EBPWFeONzhqez5vp7nKEsp7eLj2Ks210Srk%3D' (2025-12-28) → 'github:nix-community/home-manager/d99b4ca5debaa082c7d76015aa2b7f3fc7e8b5f7?narHash=sha256-KLFTeA/xquN%2BF3XHLAXcserk0L0nijbhzuldxNDF1eE%3D' (2025-12-29) • Updated input 'nix-darwin': 'github:lnl7/nix-darwin/f0c8e1f6feb562b5db09cee9fb566a2f989e6b55?narHash=sha256-rIlgatT0JtwxsEpzq%2BUrrIJCRfVAXgbYPzose1DmAcM%3D' (2025-12-26) → 'github:lnl7/nix-darwin/c31afa6e76da9bbc7c9295e39c7de9fca1071ea1?narHash=sha256-0/fLUqwJ4Z774muguUyn5t8AQ6wyxlNbHexpje%2B5hRo%3D' (2025-12-29) • Updated input 'treefmt-nix': 'github:numtide/treefmt-nix/42d96e75aa56a3f70cab7e7dc4a32868db28e8fd?narHash=sha256-%2BcqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI%3D' (2025-12-17) → 'github:numtide/treefmt-nix/c9eb5bb179067ddced348aca023a3fbf8b5832c5?narHash=sha256-l4c8HQkgsB15BUZI1SHLAZHQ7822iIkJtOsdIuXIO4s%3D' (2025-12-30) --- flake.lock | 6 +++--- flake/dev/flake.lock | 30 +++++++++++++++--------------- version-info.toml | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/flake.lock b/flake.lock index 1a8984dd..3901a514 100644 --- a/flake.lock +++ b/flake.lock @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1766840161, - "narHash": "sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio=", + "lastModified": 1767026758, + "narHash": "sha256-7fsac/f7nh/VaKJ/qm3I338+wAJa/3J57cOGpXi0Sbg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3edc4a30ed3903fdf6f90c837f961fa6b49582d1", + "rev": "346dd96ad74dc4457a9db9de4f4f57dab2e5731d", "type": "github" }, "original": { diff --git a/flake/dev/flake.lock b/flake/dev/flake.lock index 75922cfc..ef6eb097 100644 --- a/flake/dev/flake.lock +++ b/flake/dev/flake.lock @@ -2,11 +2,11 @@ "nodes": { "dev-nixpkgs": { "locked": { - "lastModified": 1766840161, - "narHash": "sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio=", + "lastModified": 1767026758, + "narHash": "sha256-7fsac/f7nh/VaKJ/qm3I338+wAJa/3J57cOGpXi0Sbg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3edc4a30ed3903fdf6f90c837f961fa6b49582d1", + "rev": "346dd96ad74dc4457a9db9de4f4f57dab2e5731d", "type": "github" }, "original": { @@ -38,11 +38,11 @@ }, "flake-compat": { "locked": { - "lastModified": 1766661267, - "narHash": "sha256-QN1r/zNqvXHwWqlRAnRtFf4CQwIOJx58PtdExIzAw94=", + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", "owner": "NixOS", "repo": "flake-compat", - "rev": "f275e157c50c3a9a682b4c9b4aa4db7a4cd3b5f2", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", "type": "github" }, "original": { @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1766881808, - "narHash": "sha256-JR7A2xS3EBPWFeONzhqez5vp7nKEsp7eLj2Ks210Srk=", + "lastModified": 1767048910, + "narHash": "sha256-KLFTeA/xquN+F3XHLAXcserk0L0nijbhzuldxNDF1eE=", "owner": "nix-community", "repo": "home-manager", - "rev": "d2e0458d6531885600b346e161c38790dc356fa8", + "rev": "d99b4ca5debaa082c7d76015aa2b7f3fc7e8b5f7", "type": "github" }, "original": { @@ -167,11 +167,11 @@ ] }, "locked": { - "lastModified": 1766784396, - "narHash": "sha256-rIlgatT0JtwxsEpzq+UrrIJCRfVAXgbYPzose1DmAcM=", + "lastModified": 1767028240, + "narHash": "sha256-0/fLUqwJ4Z774muguUyn5t8AQ6wyxlNbHexpje+5hRo=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "f0c8e1f6feb562b5db09cee9fb566a2f989e6b55", + "rev": "c31afa6e76da9bbc7c9295e39c7de9fca1071ea1", "type": "github" }, "original": { @@ -236,11 +236,11 @@ ] }, "locked": { - "lastModified": 1766000401, - "narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=", + "lastModified": 1767086983, + "narHash": "sha256-l4c8HQkgsB15BUZI1SHLAZHQ7822iIkJtOsdIuXIO4s=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd", + "rev": "c9eb5bb179067ddced348aca023a3fbf8b5832c5", "type": "github" }, "original": { diff --git a/version-info.toml b/version-info.toml index 42ea2cda..3811611e 100644 --- a/version-info.toml +++ b/version-info.toml @@ -1,6 +1,6 @@ # DO NOT MODIFY! # This file was generated by ci/version-info/default.nix -nixpkgs_rev = "3edc4a30ed3903fdf6f90c837f961fa6b49582d1" +nixpkgs_rev = "346dd96ad74dc4457a9db9de4f4f57dab2e5731d" release = "26.05" unstable = true From 33e1f1d4446472d9e3526ff21c47a95a9814cdfe Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Mon, 29 Dec 2025 18:16:04 +0100 Subject: [PATCH 22/30] plugins/smart-splits: change maintainer from foo-dogsquared to GaetanLepage --- plugins/by-name/smart-splits/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/by-name/smart-splits/default.nix b/plugins/by-name/smart-splits/default.nix index fbaece75..c2660de9 100644 --- a/plugins/by-name/smart-splits/default.nix +++ b/plugins/by-name/smart-splits/default.nix @@ -4,7 +4,7 @@ lib.nixvim.plugins.mkNeovimPlugin { package = "smart-splits-nvim"; description = "Smarter and more intuitive split pane management that uses a mental model of left/right/up/down instead of wider/narrower/taller/shorter for resizing splits."; - maintainers = [ lib.maintainers.foo-dogsquared ]; + maintainers = [ lib.maintainers.GaetanLepage ]; settingsExample = { resize_mode = { From df9d3637e80b98c5b937fc73a465d0eea2c3aa88 Mon Sep 17 00:00:00 2001 From: "nixvim-ci[bot]" <212996653+nixvim-ci[bot]@users.noreply.github.com> Date: Wed, 31 Dec 2025 12:18:28 +0000 Subject: [PATCH 23/30] flake: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit flake/dev/flake.lock updates: • Updated input 'home-manager': 'github:nix-community/home-manager/d99b4ca5debaa082c7d76015aa2b7f3fc7e8b5f7?narHash=sha256-KLFTeA/xquN%2BF3XHLAXcserk0L0nijbhzuldxNDF1eE%3D' (2025-12-29) → 'github:nix-community/home-manager/e4e78a2cbeaddd07ab7238971b16468cc1d14daf?narHash=sha256-GKgwu5//R%2BcLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk%3D' (2025-12-30) • Updated input 'treefmt-nix': 'github:numtide/treefmt-nix/c9eb5bb179067ddced348aca023a3fbf8b5832c5?narHash=sha256-l4c8HQkgsB15BUZI1SHLAZHQ7822iIkJtOsdIuXIO4s%3D' (2025-12-30) → 'github:numtide/treefmt-nix/dec15f37015ac2e774c84d0952d57fcdf169b54d?narHash=sha256-yOt/FTB7oSEKQH9EZMFMeuldK1HGpQs2eAzdS9hNS/o%3D' (2025-12-30) --- flake/dev/flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake/dev/flake.lock b/flake/dev/flake.lock index ef6eb097..4dc1db02 100644 --- a/flake/dev/flake.lock +++ b/flake/dev/flake.lock @@ -121,11 +121,11 @@ ] }, "locked": { - "lastModified": 1767048910, - "narHash": "sha256-KLFTeA/xquN+F3XHLAXcserk0L0nijbhzuldxNDF1eE=", + "lastModified": 1767104570, + "narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=", "owner": "nix-community", "repo": "home-manager", - "rev": "d99b4ca5debaa082c7d76015aa2b7f3fc7e8b5f7", + "rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf", "type": "github" }, "original": { @@ -236,11 +236,11 @@ ] }, "locked": { - "lastModified": 1767086983, - "narHash": "sha256-l4c8HQkgsB15BUZI1SHLAZHQ7822iIkJtOsdIuXIO4s=", + "lastModified": 1767122417, + "narHash": "sha256-yOt/FTB7oSEKQH9EZMFMeuldK1HGpQs2eAzdS9hNS/o=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "c9eb5bb179067ddced348aca023a3fbf8b5832c5", + "rev": "dec15f37015ac2e774c84d0952d57fcdf169b54d", "type": "github" }, "original": { From d61584cc4cac9af1ba74ad235992df575391276d Mon Sep 17 00:00:00 2001 From: Timothy Gallion Date: Wed, 31 Dec 2025 21:31:53 -0500 Subject: [PATCH 24/30] flake/lib.nix: Use the pinned nixpkgs in from the flake for lib Currently the lib that is propogated to nixvim modules comes from the `nixpkgs-lib` input from the `flake-parts` flake. This works fine locally because the `nixpkgs-lib` follows `nixpkgs` however downstream repos cannot cannot make `nixvim` follow their own version of `flake-parts` without also overriding `nixpkgs-lib`. * Clearer path for where lib passed to modules is coming from * Allow downstream repos more flexibility in follows Pull lib from the pinned `nixpkgs` input. --- flake/lib.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/flake/lib.nix b/flake/lib.nix index 2e00640f..bee5147a 100644 --- a/flake/lib.nix +++ b/flake/lib.nix @@ -3,13 +3,16 @@ config, lib, withSystem, + inputs, ... }: { # Public `lib` flake output flake.lib = { nixvim = lib.makeOverridable ({ lib }: (lib.extend self.lib.overlay).nixvim) { - inherit lib; + # NOTE: Use the lib from nixpkgs pin to prevent a dependency + # on pinning the flake-parts nixpkgs-lib to the nixpkgs pin + inherit (inputs.nixpkgs) lib; }; overlay = import ../lib/overlay.nix { flake = self; From 246781838c78a4d8bbe016a96200827f7fba5da4 Mon Sep 17 00:00:00 2001 From: literally-sai Date: Sat, 3 Jan 2026 06:54:31 +0100 Subject: [PATCH 25/30] user-configs: add @literally-sai's config --- docs/user-configs/list.toml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/user-configs/list.toml b/docs/user-configs/list.toml index 10e7aef5..090e016b 100644 --- a/docs/user-configs/list.toml +++ b/docs/user-configs/list.toml @@ -190,3 +190,9 @@ owner = "nicklundin08" title = "dots" description = "Nicks dotfiles" url = "https://github.com/nicklundin08/dots/blob/main/home-manager/home.nix" + +[[config]] +owner = "literally-sai" +title = "vermvim" +description = "nixvim flake, with custom base16 loader" +url = "https://github.com/literally-sai/vermvim" From 1b5d59e466bbe408c1d1149b888ccc0dd8c77517 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 31 Dec 2025 01:28:31 +0100 Subject: [PATCH 26/30] plugins/iswap: init --- plugins/by-name/iswap/default.nix | 12 +++++++ .../plugins/by-name/iswap/default.nix | 33 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 plugins/by-name/iswap/default.nix create mode 100644 tests/test-sources/plugins/by-name/iswap/default.nix diff --git a/plugins/by-name/iswap/default.nix b/plugins/by-name/iswap/default.nix new file mode 100644 index 00000000..b8a809b2 --- /dev/null +++ b/plugins/by-name/iswap/default.nix @@ -0,0 +1,12 @@ +{ lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "iswap"; + package = "iswap-nvim"; + + maintainers = [ lib.maintainers.GaetanLepage ]; + + settingsExample = { + debug = true; + move_cursor = true; + }; +} diff --git a/tests/test-sources/plugins/by-name/iswap/default.nix b/tests/test-sources/plugins/by-name/iswap/default.nix new file mode 100644 index 00000000..005d7657 --- /dev/null +++ b/tests/test-sources/plugins/by-name/iswap/default.nix @@ -0,0 +1,33 @@ +{ + empty = { + plugins.iswap.enable = true; + }; + + defaults = { + plugins.iswap = { + enable = true; + + settings = { + keys = "asdfghjklqwertyuiopzxcvbnm"; + hl_grey = "Comment"; + hl_snipe = "Search"; + hl_selection = "Visual"; + flash_style = "sequential"; + hl_flash = "IncSearch"; + hl_grey_priority = 1000; + grey = "enable"; + }; + }; + }; + + example = { + plugins.iswap = { + enable = true; + + settings = { + debug = true; + move_cursor = true; + }; + }; + }; +} From 2ca0f6b7bc0e2badc6fec83fffa332d8585ab5bc Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Wed, 31 Dec 2025 14:04:45 +0100 Subject: [PATCH 27/30] plugins/vscode-diff: init --- plugins/by-name/vscode-diff/default.nix | 29 +++++++ .../plugins/by-name/vscode-diff/default.nix | 85 +++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 plugins/by-name/vscode-diff/default.nix create mode 100644 tests/test-sources/plugins/by-name/vscode-diff/default.nix diff --git a/plugins/by-name/vscode-diff/default.nix b/plugins/by-name/vscode-diff/default.nix new file mode 100644 index 00000000..a9aa1b11 --- /dev/null +++ b/plugins/by-name/vscode-diff/default.nix @@ -0,0 +1,29 @@ +{ lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "vscode-diff"; + package = "vscode-diff-nvim"; + + maintainers = [ lib.maintainers.GaetanLepage ]; + + settingsExample = { + highlights = { + line_insert = "#2a3325"; + line_delete = "#362c2e"; + char_insert = "#3d4f35"; + char_delete = "#4d3538"; + }; + keymaps = { + view = { + next_hunk = "]c"; + prev_hunk = "[c"; + next_file = "]f"; + prev_file = "[f"; + }; + explorer = { + select = ""; + hover = "K"; + refresh = "R"; + }; + }; + }; +} diff --git a/tests/test-sources/plugins/by-name/vscode-diff/default.nix b/tests/test-sources/plugins/by-name/vscode-diff/default.nix new file mode 100644 index 00000000..f731ad91 --- /dev/null +++ b/tests/test-sources/plugins/by-name/vscode-diff/default.nix @@ -0,0 +1,85 @@ +{ + empty = { + plugins.vscode-diff.enable = true; + }; + + defaults = { + plugins.vscode-diff = { + enable = true; + + settings = { + highlights = { + line_insert = "#2a3325"; + line_delete = "#362c2e"; + char_insert = "#3d4f35"; + char_delete = "#4d3538"; + }; + keymaps = { + view = { + next_hunk = "]c"; + prev_hunk = "[c"; + next_file = "]f"; + prev_file = "[f"; + }; + explorer = { + select = ""; + hover = "K"; + refresh = "R"; + }; + }; + }; + }; + }; + + example = { + plugins.vscode-diff = { + enable = true; + + settings = { + highlights = { + line_insert = "DiffAdd"; + line_delete = "DiffDelete"; + char_insert.__raw = "nil"; + char_delete.__raw = "nil"; + char_brightness.__raw = "nil"; + }; + diff = { + disable_inlay_hints = true; + max_computation_time_ms = 5000; + }; + explorer = { + position = "left"; + width = 40; + height = 15; + view_mode = "list"; + indent_markers = true; + icons = { + folder_closed = "\u{e5ff}"; + folder_open = "\u{e5fe}"; + }; + file_filter = { + ignore = [ ]; + }; + }; + keymaps = { + view = { + quit = "q"; + toggle_explorer = "b"; + next_hunk = "]c"; + prev_hunk = "[c"; + next_file = "]f"; + prev_file = "[f"; + diff_get = "do"; + diff_put = "dp"; + }; + explorer = { + select = ""; + hover = "K"; + refresh = "R"; + toggle_view_mode = "i"; + }; + }; + }; + }; + }; +} From 5ae23bff4e1917a40c31ce8c9a6a7e812ada100b Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Tue, 30 Dec 2025 12:23:21 +0100 Subject: [PATCH 28/30] plugins/codesettings: init --- plugins/by-name/codesettings/default.nix | 23 +++++++++ .../plugins/by-name/codesettings/default.nix | 48 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 plugins/by-name/codesettings/default.nix create mode 100644 tests/test-sources/plugins/by-name/codesettings/default.nix diff --git a/plugins/by-name/codesettings/default.nix b/plugins/by-name/codesettings/default.nix new file mode 100644 index 00000000..c1f69b16 --- /dev/null +++ b/plugins/by-name/codesettings/default.nix @@ -0,0 +1,23 @@ +{ lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "codesettings"; + package = "codesettings-nvim"; + + maintainers = [ lib.maintainers.GaetanLepage ]; + + settingsExample = { + config_file_paths = [ + ".vscode/settings.json" + "codesettings.json" + "lspsettings.json" + ".codesettings.json" + ".lspsettings.json" + ".nvim/codesettings.json" + ".nvim/lspsettings.json" + ]; + jsonls_integration = true; + default_merge_opts = { + list_behavior = "prepend"; + }; + }; +} diff --git a/tests/test-sources/plugins/by-name/codesettings/default.nix b/tests/test-sources/plugins/by-name/codesettings/default.nix new file mode 100644 index 00000000..82baff26 --- /dev/null +++ b/tests/test-sources/plugins/by-name/codesettings/default.nix @@ -0,0 +1,48 @@ +{ + empty = { + plugins.codesettings.enable = true; + }; + + defaults = { + plugins.codesettings = { + enable = true; + + settings = { + config_file_paths = [ + ".vscode/settings.json" + "codesettings.json" + "lspsettings.json" + ]; + jsonc_filetype = true; + jsonls_integration = true; + live_reload = false; + loader_extensions = [ ]; + lua_ls_integration = true; + merge_lists = "append"; + root_dir.__raw = "nil"; + }; + }; + }; + + example = { + plugins.codesettings = { + enable = true; + + settings = { + config_file_paths = [ + ".vscode/settings.json" + "codesettings.json" + "lspsettings.json" + ".codesettings.json" + ".lspsettings.json" + ".nvim/codesettings.json" + ".nvim/lspsettings.json" + ]; + jsonls_integration = true; + default_merge_opts = { + list_behavior = "prepend"; + }; + }; + }; + }; +} From 3d7bcda3d163c1c38e231f81e0e90155b7b9e9bf Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Thu, 1 Jan 2026 16:55:09 +0100 Subject: [PATCH 29/30] plugins/blink-cmp: relax type of settings.sources.per_filetype. --- plugins/by-name/blink-cmp/settings-options.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/by-name/blink-cmp/settings-options.nix b/plugins/by-name/blink-cmp/settings-options.nix index 10e0c9f3..5f929efa 100644 --- a/plugins/by-name/blink-cmp/settings-options.nix +++ b/plugins/by-name/blink-cmp/settings-options.nix @@ -497,7 +497,7 @@ in Default sources. ''; - per_filetype = defaultNullOpts.mkAttrsOf (with types; listOf str) { } '' + per_filetype = defaultNullOpts.mkAttrsOf (with types; listOf anything) { } '' Sources per filetype. ''; From 851399eebd0fb383d2fd76269d859f16021dc7a8 Mon Sep 17 00:00:00 2001 From: "nixvim-ci[bot]" <212996653+nixvim-ci[bot]@users.noreply.github.com> Date: Mon, 5 Jan 2026 09:27:05 +0000 Subject: [PATCH 30/30] maintainers: update generated/all-maintainers.nix Automated update of the master maintainers list combining: - Nixvim specific maintainers from lib/maintainers.nix - Nixpkgs maintainers referenced in Nixvim modules Changes: +0 -13 lines Generated by: flake/dev/generate-all-maintainers/generate-all-maintainers.py --- generated/all-maintainers.nix | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/generated/all-maintainers.nix b/generated/all-maintainers.nix index 35c6e6c5..ae8f4216 100644 --- a/generated/all-maintainers.nix +++ b/generated/all-maintainers.nix @@ -250,19 +250,6 @@ name = "Jakob Beckmann"; source = "nixpkgs"; }; - foo-dogsquared = { - email = "foodogsquared@foodogsquared.one"; - github = "foo-dogsquared"; - githubId = 34962634; - keys = [ - { - fingerprint = "DDD7 D0BD 602E 564B AA04 FC35 1431 0D91 4115 2B92"; - } - ]; - matrix = "@foodogsquared:matrix.org"; - name = "Gabriel Arazas"; - source = "nixpkgs"; - }; fwastring = { email = "fredrik@wastring.com"; github = "fwastring";