Commit graph

359 commits

Author SHA1 Message Date
Matt Sturgeon
896f6be694
lib/plugins: take ownership of modules utils
These util functions were previously defined in `modules`, but
`plugins.utils` is a better home.
2024-12-22 09:35:16 +00:00
Matt Sturgeon
ec97297fd5
lib/plugins: separate main factory functions 2024-12-22 09:35:16 +00:00
Matt Sturgeon
88a1c1b46a
lib/plugins: organise plugin-factory functions in a subdir 2024-12-22 09:35:15 +00:00
Matt Sturgeon
4b3b67fb6f
lib: make overrideable & access via flake
Add a non-system specific `<flake>.lib.nixvim` output, which is
equivalent to the existing `<flake>.lib.<system>.helpers` output.

This is now also wrapped with `lib.makeOverridable` to allow overriding
the function args used to construct the nixvim-lib.

Consistently access nixvim-lib via the new flake output, overriding
where necessary.
2024-12-21 15:17:43 +00:00
Matt Sturgeon
e2ef15a665
lib: add extend function 2024-12-21 15:14:30 +00:00
Matt Sturgeon
f1addaaddf
lib/{neovim,vim}-plugin: remove redundant parens 2024-12-18 20:12:01 +00:00
Matt Sturgeon
6019ce784c
lib/{neovim,vim}-plugin: use loc throughout 2024-12-18 19:47:37 +00:00
Gaetan Lepage
167167e4b3 lib/vim-plugin: expose new helpers settingsOptionDescription and processPrefixedGlobals and mkSettingsOption 2024-12-17 22:46:34 +01:00
Gaetan Lepage
1d50fa4f63 lib: add applyPrefixToAttrs 2024-12-17 21:40:20 +00:00
Gaetan Lepage
0ddf6e39ac lib/mkSettingsRenamedOptionModules: allow attrs value with 'old' and 'new' keys 2024-12-16 10:49:09 +00:00
Matt Sturgeon
bef9feb446
lib/modules: pass inputs.nixpkgs into evalNixvim
Expose our locked nixpkgs as the `nixpkgs.source` module options.

This only happens when `evalNixvim` is part of a lib that was provided
`flake` as an argument.

Stubbed the `nixpkgs.source` option for now. Eventually, this will be
used to construct `pkgs` internally. For now, it's purely informational.
2024-12-15 18:41:23 +00:00
Matt Sturgeon
32027965d8
lib: remove dependency on pkgs 2024-12-15 18:24:57 +00:00
Austin Horstman
63c81b1778
lib/options: mkLazyLoadOption: packPathName -> name 2024-12-13 21:30:36 -06:00
Austin Horstman
c37031d71f
treewide: luaName -> moduleName
Jus to closer align with its usage.
2024-12-13 21:30:36 -06:00
Austin Horstman
a7012e7864
treewide: originalName -> packPathName
We used to only think of it as the plugin repo's name, but we have been
needing to use it for the name of the plugin's packpath location.
2024-12-13 21:29:00 -06:00
Matt Sturgeon
6a192a8604
lib/neovim-plugin: allow configLocation to be wrapped using mkOrder 2024-12-14 02:39:44 +00:00
Austin Horstman
0997b371c7
lib/neovim-plugin: freeform lazy settings
Instead of trying to manage upstream configuration options, just keep
using our freeform options so we can do less finicky logic and
workarounds.
2024-12-10 10:07:38 -06:00
Austin Horstman
c3f9cb721c
lib/neovim-plugin: refactor mkLazyLoadOption 2024-12-10 10:07:38 -06:00
Austin Horstman
3cfde1554c
lib/neovim-plugin: support lz-n lazy config 2024-12-10 08:28:16 -06:00
Austin Horstman
da30527de1
lib/neovim-plugin: use mkLazyLoadOption 2024-12-10 08:28:16 -06:00
psfloyd
6ed719dba8
lib/options: added mkLazyLoadOption 2024-12-10 08:28:16 -06:00
Austin Horstman
301868d380
lib/neovim-plugin: support lazy loading luaConfig.content 2024-12-10 08:28:16 -06:00
Gaetan Lepage
cf7e026c8c mkNeovimPlugin: refactor lua code generation logic 2024-12-09 21:43:12 +00:00
Gaetan Lepage
ae78face8d
treewide: format with latest nixfmt 2024-12-06 15:25:27 +00:00
347Online | Katie Janzen
8507b01e0c lib/maintainers: add 347Online 2024-11-25 17:49:55 -06:00
Matt Sturgeon
63cfc84abe
lib/modules: add applyExtraConfig
Used for
- mkVimPlugin: extraConfig
- mkNeovimPlugin: extraConfig
- mkLsp: extraConfig
- mkLsp: settings
- mkExtension (telecsope): extraConfig
2024-11-20 20:55:16 +00:00
Matt Sturgeon
587b1cbf21
lib/types: allow inline-lua in rawLua type 2024-11-16 17:20:11 +00:00
Matt Sturgeon
be455f7f27
lib/options: use literalLua for defaultNullOpts.mkRaw 2024-11-15 21:46:25 +00:00
Matt Sturgeon
da6e3499d4
lib/utils: add nestedLiteral and nestedLiteralLua
`nestedLiteral` converts a `literalExpression` into a `toPretty` style
pretty-printer.

`nestedLiteralLua` composes `nestedLiteral` and `literalLua` together.
2024-11-15 21:46:25 +00:00
Matt Sturgeon
eb76e62a9b
lib/utils: add literalLua for use in option docs
Creates a `literalExpression` equivalent to using `lib.nixvim.mkRaw`.
2024-11-15 21:46:25 +00:00
Matt Sturgeon
de99f2938f
lib/{vim,neovim}-plugin: installPackage -> packageDecorator
Replace `mkNeovimPlugin`'s `installPackage` parameter with a new
internal module option: `packageDecorator`.

The option is a function that applies some transformation to
`cfg.package`'s value before it is installed.
2024-11-15 21:44:59 +00:00
bpatel347
f8b3f16556 maintainers: add BoneyPatel 2024-11-15 07:27:48 +00:00
Gaetan Lepage
ccae4350d0 options: add defaultNullOpts.mkRaw 2024-11-13 23:38:31 +01:00
Matt Sturgeon
4e2a022165
lib/to-lua: fix allowUnkeyedAttrs option 2024-09-29 17:28:24 +01:00
Matt Sturgeon
bd6aa476b8
lib/options: remove redundant mkRaw apply functions
`strLua` now does this coercion internally.
2024-09-29 16:57:15 +01:00
Matt Sturgeon
a9c08fb6a5
lib/types: make strLua coerce strings to rawLua
Instead of relying on option `apply` functions to coerce the value to
rawLua, this can be done in the type's merge function.

Inspired by `types.coercedTo` in nixpkgs.
2024-09-29 16:57:15 +01:00
Matt Sturgeon
7886be8760
lib/types: flip maybeRaw's merge function
`maybeRaw` should prioritise merging `rawLua` before the other type
2024-09-29 16:57:15 +01:00
Matt Sturgeon
cd76b4feb8
lib: remove helpers from internal usage 2024-09-29 14:41:41 +01:00
wadsaek
c06d598315 maintainers: add wadsaek 2024-09-28 17:52:00 +00:00
Matt Sturgeon
6b0c5d594a
lib/modules: assert that specialArgs has a valid lib
End-users have ran into issues before when attempting to re-use a `lib`
from elsewhere in nixvim's configuration.

If a `lib` without the `nixvim` extension is used, this assertion will
inform the user that this isn't supported.

In the future we can also provide better ways for end-users to overlay
their own lib with nixvim's extensions, but this is not yet implemented.

Co-authored-by: Gaétan Lepage <33058747+GaetanLepage@users.noreply.github.com>
2024-09-27 11:11:49 +01:00
Matt Sturgeon
5020e58798
lib/modules: remove specialArgsWith 2024-09-27 09:30:12 +01:00
Matt Sturgeon
4b7a41276a
modules/nixpkgs: initial pkgs option, drop defaultPkgs specialArg
This minimal implementation allows `nixpkgs.pkgs` to be defined, but
does not implement evaluating an instance from a pkgsPath when _not_
defined.

The `defaultPkgs` specialArg is dropped in favour of `nixpkgs.pkgs`
being defined. If it's not defined, an assertion is thrown.

In the future, a nixpkgs source path can be supplied, defaulting to the
flake's `inputs.nixpkgs`. Along with other `nixpkgs.*` options, this
will allow a `pkgs` instance to be evaluated within the module eval.
2024-09-27 09:30:12 +01:00
Zain Kergaye
10925d811c maintainers: add ZainKergaye 2024-09-27 02:18:51 -06:00
Matt Sturgeon
2f49c76a6a
lib: remove nixvimTypes alias 2024-09-27 08:31:07 +01:00
Matt Sturgeon
d718446b61
lib: remove maintainers alias 2024-09-27 05:31:26 +01:00
Matt Sturgeon
6a1bf6bdc3
modules/output: check warnings+assertions on build.package
Add a `build.packageUnchecked` option for use instead of the old `check`
evalNixvim argument.
2024-09-26 18:04:36 +01:00
Austin Horstman
3f17f500b3
lib/maintainers: remove duplicate entry 2024-09-26 10:45:23 -05:00
Matt Sturgeon
692e39311e
modules/{output,files,test}: move outputs to build scope
Move the following output options into `build`:
- finalPackage -> package
- printInitPackage
- initPath -> initFile
- filesPlugin -> extraFiles
- test.derivation -> test
2024-09-26 06:31:57 +01:00
Matt Sturgeon
47364df496
lib/types/pluginLuaConfig: use lib.optional instead of lib.mkIf
This may slightly increase performance by reducing work done by the
module system.
2024-09-23 20:08:52 +01:00
Matt Sturgeon
81ae3febd2
lib: throw when deprecated builders are used on a lib without pkgs
Previously the deprecated builders would warn when used on a lib _with_
`pkgs`, but were simply not present on a lib _without_ `pkgs`.

Now, they are always present, but will throw when evaluated on a lib
_without_ `pkgs`.
2024-09-22 18:18:05 +01:00