# Nushell core team meeting 2025-07-16
## Attendees
- Darren
- Michael
- Bahex
- Rose
- Douglas
- Stefan
- Jack
- Yash
-
## Agenda
- [x] `$NU_VENDOR_LIB_DIRS`:
Third party integrators should prefer to have integration code packaged along with their software, rather than having users generate it in shell init
> zoxide does this for completions with `extern` definitions
But if everyone places their code in vendor autoloads:
- increasingly slower shell startup as nushell has to parse more and more code
- users having to override unwanted settings: they might prefer their own custom solutions rather than vendor provided code
`$NU_VENDOR_LIB_DIRS` would be where modules that just needs to be available would be placed. Like `$nu.vendor-autoload-dirs`, generated from `XDG_DATA_DIRS`
| Autoload | Modules |
|------------------------------------------|-----------------------------------------|
| `/usr/share/nushell/vendor/autoload` | `/usr/share/nushell/vendor/modules` |
| `~/.local/share/nushell/vendor/autoload` | `~/.local/share/nushell/vendor/modules` |
This way we avoid startup slowdown and actually activating the code is up to the user.
> [!NOTE]
> We don't actually need to have a separate `$NU_VENDOR_LIB_DIRS` variable.
> Just add `$nu.vendor-lib-dirs` _and_ include them in `$NU_LIB_DIRS` by default.
> User can choose to override `$NU_LIB_DIRS` to add or remove them as they want.
> [!NOTE]
> Let's have a documentation page on nushell.sh for third party integrators
- [ ] **Tracking Issues for Experimental Options**
Stefan mentioned in the PR about more info on experimental options that we maybe should have tracking issues besides them https://github.com/nushell/nushell/pull/16142#discussion_r2198479260
We should come up with how we want to deal with experimental options and define some documentation for that
- [ ]
## Discussed Topics
### Proposal for `$env.NU_VENDOR_LIB_DIRS`
- Use case: user explicitly `use`s module which was provided by a third party integration
- Douglas: could this just be covered by explicit addition to `NU_LIB_DIRS`
- Rose: explicit `use` vs auto-import for parsing efficiency
#### Challenges for the requirements
- different opinionated package management solutions
- e.g. nix vs apt vs cargo install vs ...
- ease of setup vs. what gets autoloaded/dumped/parsed -> perf/setup flexibility
- Rose: shared config (e.g. in VCS) operating with integrations that are on one machine provided as user level and on the other as a system level package.
#### example `carapace`
rundown by rose:
user level (handled by `carapace init`):
- create vendor/modules/carapace/mod.nu
- create vendor/modules/autoload/carapace.nu (contains `use carapace`)
package level:
- create vendor/modules/carapace/mod.nu
- user manually adds `use carapace` to their config
#### can we still have the `$tool init` pattern with nicely arranged modules
### Experimental options / Tracking issues
- replace `PR` field with tracking issue
- add to CONTRIBUTING.md how we want to deal with experimental options including creating tracking issues
- template for tracking issue