Commit graph

341 commits

Author SHA1 Message Date
Austin Horstman
cbd8536a05 modules/output: restore plugin lua dependencies
Some checks failed
Publish every Git push to main to FlakeHub / flakehub-publish (push) Has been cancelled
Publish every git push to Flakestry / publish-flake (push) Has been cancelled
Documentation / Version info (push) Has been cancelled
Documentation / Build (push) Has been cancelled
Documentation / Combine builds (push) Has been cancelled
Documentation / Deploy (push) Has been cancelled
With the newer nixpkgs Neovim wrapper, plugin Lua dependencies are surfaced through neovimUtils.makeVimPackageInfo as vimPackageInfo.luaDependencies. Nixvim was still only feeding explicit extraLuaPackages into its wrapper Lua environment, so plugin-provided Lua modules stopped reaching the runtime search path after the flake.lock bump.

That showed up as real runtime failures: Telescope could not load plenary.strings and Neorg could not load lua-utils, even though explicit extraLuaPackages still worked.

Fix that by computing vimPackageInfo from config.build.plugins and appending vimPackageInfo.luaDependencies to the wrapper's extraLuaPackages. That keeps Nixvim aligned with the nixpkgs/Home Manager dependency resolution path instead of maintaining a separate recursive Lua dependency collector.

Add focused regression coverage for the two reported plugin cases:
- telescope -> plenary.strings
- neorg -> lua-utils
2026-03-29 16:40:02 +00:00
Austin Horstman
f6f985ce53 modules/output: drop deprecated makeNeovimConfig
nixpkgs deprecated neovimUtils.makeNeovimConfig in favor of
wrapNeovimUnstable. Keep Nixvim's current generated init.lua startup
model, but stop routing wrapper construction through the deprecated
helper.

Switch modules/top-level/output.nix to call wrapNeovimUnstable
directly and preserve the existing wrappedNeovim.initRc -> generated
init.lua composition. This aligns Nixvim with the upstream wrapper API
change without changing our current bootstrap behavior yet.

Also update CONTRIBUTING to point contributors at
wrapNeovimUnstable instead of the deprecated helper.
2026-03-29 16:40:02 +00:00
Gaetan Lepage
ed0424f0b0 lsp/servers/packages: add package for graphql
Some checks failed
Publish every Git push to main to FlakeHub / flakehub-publish (push) Has been cancelled
Publish every git push to Flakestry / publish-flake (push) Has been cancelled
Documentation / Version info (push) Has been cancelled
Documentation / Build (push) Has been cancelled
Documentation / Combine builds (push) Has been cancelled
Documentation / Deploy (push) Has been cancelled
2026-02-15 06:09:31 +00:00
sglre6355
6acc964664 modules/dependencies: add packageFallback option 2026-02-09 09:53:43 +00:00
Gaetan Lepage
d859217cf5 lsp/servers/packages: add oxfmt 2026-02-09 08:51:23 +00:00
Gaetan Lepage
aa893e2052 lsp/servers: update packages 2026-02-05 20:18:49 +00:00
Austin Horstman
abf20426cd modules/lsp/servers: add new unpackaged deps 2026-01-24 06:08:49 +00:00
Gaetan Lepage
1d333fc92e treewide: apply linter suggestions 2025-12-28 04:26:49 +00:00
Gaetan Lepage
db8177775e lsp/servers/packages: mark home_assistant as unpackaged 2025-12-28 04:26:49 +00:00
Gaetan Lepage
d2a0db38b7 lsp/servers/packages: add package for systemd_lsp 2025-12-28 04:26:49 +00:00
Gaetan Lepage
f0d62ddab4 lsp/servers/packages: mark brioche and hylo_ls as unpackaged 2025-12-17 21:23:05 +00:00
saygo-png
081bcc930f modules/dependencies: fix enable option description
Signed-off-by: saygo-png <saygo.mail@proton.me>
2025-12-17 00:02:49 +00:00
Matt Sturgeon
771cb3c852 plugins/lsp: inline explicit server option declarations 2025-12-16 14:09:46 +00:00
Matt Sturgeon
882eb84c35 plugins/lsp: drop customCmd
These have all been upstreamed into nvim-lspconfig. Going forward, we
should continue that trend.

If any nix-specific `cmd`s aren't accepted in nvim-lspconfig, they can
be patched in Nixpkgs instead.
2025-12-16 14:09:46 +00:00
Matt Sturgeon
12a76dd12b modules/lsp/servers: simplify displayName and packageName
Move the `let in` block defining `displayName` and `packageName` up so
it doesn't have to deal with the module arg `name` shadowing `args.name`.

This simplifies the implementation and reduces repetition.
2025-12-15 10:58:28 +00:00
Matt Sturgeon
753f7640d6 modules/lsp/servers: simplify activate default
The default for `lsp.servers.<name>.activate` used to be conditional on
whether `name == "*"`. This is leftover from before the * server was
moved to its own `global-server.nix` module and can now be removed.
2025-12-15 10:58:28 +00:00
Gaetan Lepage
6b840886cd dependencies: add grep 2025-12-15 08:22:50 +00:00
Matt Sturgeon
c97e8e3425 modules/lsp: move packages.nix from plugins.lsp
Move plugins/lsp/lsp-packages.nix -> modules/lsp/servers/packages.nix
2025-12-13 17:19:54 +00:00
Matt Sturgeon
a250540213 modules/output: include config and options in build.package
Similar to the legacy "standalone wrapper" `makeNixvimWithModule`,
thread the configuration's `config` and `options` to the final package.

This allows using such a package as the input to functions like
`testNixvim`.
2025-12-12 09:38:29 +00:00
Heitor Augusto
0671df0b57 modules/dependencies: add television dependency 2025-12-11 09:29:09 +00:00
Matt Sturgeon
c50d50b168 modules/extraFiles: refactor to use symlinks and support directories
Instead of copying source files to the target, use a symlink.

This reduces nix store redundancy and enables using entire directories
as sources.

To support this, additional validation is done on file targets to
prevent unexpected conflicts.
2025-12-10 17:30:14 +00:00
Matt Sturgeon
53b702b367 wrappers: expose platform wrapper modules via build.*Module options
Expose the platform wrapper modules as the Nixvim configuration options
`build.nixosModule`, `build.homeModule`, and `build.nixDarwinModule`.
This makes it possible to reuse a single Nixvim configuration across
NixOS, Home Manager, and nix-darwin without re-importing modules into
`programs.nixvim` manually.

Evaluating these wrapper modules requires a "bare" Nixvim configuration;
one that does not define `pkgs` or `nixpkgs.hostPlatform`. Such a
configuration would normally fail to evaluate, but disabling
`_module.check` provides a sufficiently lazy evaluation to access the
wrapper options.

To prevent the `_module.check = false` module from leaking into user
configs, it has a unique module key and gets disabled inside the wrapper
modules (`wrappers/_shared.nix`).
2025-12-09 08:01:49 +00:00
Matt Sturgeon
463fb0ad5d modules/lsp: fix mkServerOption homepage tryEval evaluation
`lib.pipe` strictly evaluates intermediate steps using `foldl'`. As a
result, piping `(opts: opts.package.default or null)` →
`(package: (tryEval package).value)` is ineffective because
`opts.package.default` is evaluated before `tryEval` can catch exceptions.

Instead, inline `opts.package.default` directly into the `tryEval`
expression, ensuring missing package errors caught correctly.

Resolves errors when building NixOS or nix-darwin docs that include
Nixvim options.

Adds a regression test.
2025-12-08 15:37:52 +00:00
Gaetan Lepage
8441008175 treewide: remove old deprecation warnings 2025-12-07 23:34:03 +00:00
saygo-png
03a51dbf3d treewide: NixVim/nixvim -> Nixvim
Signed-off-by: saygo-png <saygo.mail@proton.me>
2025-12-04 23:22:21 +00:00
Matt Sturgeon
b0f3a36596 modules/version: init with nixpkgsReleaseCheck
Inspired by `home.version` and `home.enableNixpkgsReleaseCheck` in Home
Manager. Print a warning when `lib` or `pkgs` are from a different
release to Nixvim.
2025-12-03 09:24:36 +00:00
Matt Sturgeon
cbdfee5239 modules/files: simplify byteCompileLua condition
Avoid needing a `specialArgs.topConfig` by binding `byteCompileLua`
outside of the submodule scope.
2025-12-03 08:56:47 +00:00
Matt Sturgeon
26d16c726d modules/files: drop coercedFileType
Defining `extraFiles.*` as a string was deprecated in 24.05, and has
printed a warning since 2024-07-07.

We can now drop support entirely and simplify the implementation.
2025-12-03 08:56:47 +00:00
Heitor Augusto
027c96a161 modules/files: ensure derivation is recognized as vim plugin 2025-12-01 09:30:24 +00:00
Heitor Augusto
d14252433d modules/output: improve waylandSupport 2025-11-30 20:55:06 +00:00
Matt Sturgeon
a635b56894 plugins/barbar: add nullOr workaround for keymaps lua warning
Currently, `types.either` has support for the new valueMeta attribute
added by v2 check and merge, while `types.nullOr` does not.

The `lua` option deprecation warning implemented in
`modules/keymaps.nix` requires `valueMeta`, so re-implement `nullOr`
using `types.either` as a workaround.
2025-11-21 09:27:16 +00:00
Matt Sturgeon
d0b0b75a13 modules/keymaps: fix lua option deprecation warning
The deprecation warning for the keymap-submocule `lua` option relied on
`getSubOptions`, however this is fundamentally flawed because that
function returns uses a different module eval from the one that merges
submodule definitions.

Since definitions are not used by `getSubOptions`,
`options.lua.isDefined` will never be true.

Instead, we have two choices:

1. Add a `luaIsDefined` option to the keymap submodule
2. Use the new v2 merge's `valueMeta` to access the actual module eval
2025-11-21 08:21:29 +00:00
Matt Sturgeon
8d0ca9abc4 lib: move enableExceptInTests impl to build.test option
Simplify the `enableExceptInTests` attribute, removing the
`_nixvimTests` argument.

We now do a full re-eval of the nixvim configuration before building the
test, giving us a central place to implement `enableExceptInTests` and
its eventual replacement(s).

This extends support for `enableExceptInTests` to all methods of getting
a nixvim test derivation. Previously, it only worked when using `mkTestDerivationFromNixvimModule`.

In `tests/main.nix`, we avoid the re-eval by doing the initial eval with
a "test mode" lib from the start.
2025-11-20 00:22:57 +00:00
Matt Sturgeon
7754b4eb1b modules/test: fix passthru example 2025-11-20 00:22:57 +00:00
Matt Sturgeon
dad19c1238 treewide: remove internal use of helpers module arg 2025-11-19 15:22:27 +00:00
Heitor Augusto
53d47ddf74 modules/dependencies: add skim dependency 2025-11-14 23:18:53 +00:00
Heitor Augusto
00a40d1a0a modules/plugins: add colorschemes by-name support 2025-11-09 12:29:06 +00:00
Matt Sturgeon
6d3798e81e modules/lazyload: replace ignoredPackages with isVisible
Instead of explicitly listing all renames and removals, we can check if
the plugin's lazyload option is visible and in the top-level option set.

This rules out cases where `plugins.foo` is itself a rename/removal
option, and cases where `plugins.foo.lazyload` is not visible.
2025-11-08 12:17:05 +00:00
Austin Horstman
3be63f84fd lazyload: ignore ethersync rename
Generates a trace because of being read. Missed in
4728aae7cf
2025-11-07 10:14:07 +00:00
Michael Goldberger
416de18306 modules/clipboard: add pbcopy clipboard provider 2025-10-27 21:42:13 +00:00
saygo-png
fc66d83c77 modules/dependencies: add jupytext dependency
Signed-off-by: saygo-png <saygo.mail@proton.me>
2025-10-27 03:03:18 +00:00
Gaetan Lepage
822e21e5b3 dependencies: add fd 2025-10-25 23:03:00 +00:00
Gaetan Lepage
593e8114cd plugins/efmls-configs: use dependencies for efm-langserver 2025-10-23 23:18:54 +00:00
saygo-png
cf32b498bc modules/autocmd: remove helpers
Signed-off-by: saygo-png <saygo.mail@proton.me>
2025-10-18 18:31:00 +00:00
Axel Karjalainen
4c4cac6445 docs: use official names of NixOS, Home Manager and nix-darwin 2025-10-18 00:05:26 +00:00
saygo-png
32a3fa118d plugins/nvim-osc52: remove module
The plugin is obsolete as the feature provided by it has been added to
Neovim itself.

Signed-off-by: saygo-png <saygo.mail@proton.me>
2025-10-14 20:15:15 +00:00
Gaetan Lepage
c660702482 plugins/wtf: migrate to mkNeovimPlugin 2025-10-11 16:54:26 +00:00
Matt Sturgeon
bb9d744b64 modules/lsp: propagate pkgs arg to server modules
This allows simplifying the `importApply` and also paves the way for
custom server modules to define arbitrary package options.
2025-10-10 14:11:54 +00:00
Matt Sturgeon
9e77c8e4a9 modules/lsp: allow servers to install multiple packages
Adds two internal per-server options: `packages.prefix` & `packages.suffix`.

These options allow the server module to install multiple packages, and
control which end up being prefixed or suffixed on the PATH.

This simplifies the propagating code in `modules/lsp/servers/default.nix`,
which can now zip up the enabled server `packages` attrs.
2025-10-10 14:11:54 +00:00
Matt Sturgeon
2414e8e99f modules/lsp: auto-import per-server custom modules
Adding a module in the following places will import the module into that
specific server's submodule.

This allows creating server-specific options.

Added a test case to ensure all custom modules correspond to an actual
server option to avoid accidental dead code.
2025-10-10 14:11:54 +00:00