Commit Graph

11 Commits

Author SHA1 Message Date
Robert Hensing
0f9034d8b5 lib: Discourage use of extend
It creates interoperability issues that can not be reconciled by
`lib` or maintainers of projects that use the Nixpkgs library.
Occasionally, end users may be able to solve the problems they run
into, but most are not prepared to deal with this set of problems,
nor should they be.

Typical conflict:
- User wants to propagate their own lib, because it has some function
  they like to use throughout their projects
- Project maintainer requires the project's lib to be used

No sane language uses a single namespace for combining all the things.
(Arguably not even C with its extensive use of prefixing)

Meanwhile, in Nix, all symbols are first class variables. We don't even
have the concept of a global top-level namespace to pour everything into.
With `lib` you can try to approximate that, I get the appeal of its
apparent simplicity, but since `lib` can't be global, we just don't even
get that apparent simplicity.

I apologize for not offering concrete solutions to this in the text.
The manuals are limited to reference documentation.
Alternatives - of which we have multiple - are best provided in
task-oriented documentation, e.g. nix.dev.
2025-01-23 08:27:29 +01:00
Johannes Kirschbauer
ccfdbc34fd docs: add references to module system section 2025-01-02 20:05:54 +01:00
Robert Hensing
eab660d91e lib.modules: configurationClass -> class
This simplifies the documentation. `configuration` is implied by `_type`.
2023-05-06 18:32:59 +02:00
Robert Hensing
89491bef8d lib.modules: in evalModules return move _module.class -> configurationClass 2023-05-06 18:32:59 +02:00
Robert Hensing
4c7aa7d831 doc/module-system: _module is not internal 2023-05-06 18:32:59 +02:00
Robert Hensing
fd88c79418 lib.modules: Change class declaration in module to _class 2023-05-06 18:32:59 +02:00
Robert Hensing
8054785157 lib/modules: Move class out of specialArgs 2023-05-06 18:32:58 +02:00
Robert Hensing
8f02e95aff module-system.chapter.md: Elaborate on extendModules performance 2023-05-06 18:32:58 +02:00
Robert Hensing
5fac39307d module-system.chapter.md: Add mental model to type and extendModules 2023-05-06 18:32:58 +02:00
Robert Hensing
03a465f048 fixup! doc: Add Module System chapter start 2023-05-06 18:32:12 +02:00
Robert Hensing
ee1e14be0c doc: Add Module System chapter start 2023-05-06 18:29:05 +02:00