Commit graph

16 commits

Author SHA1 Message Date
Ben Siraphob 1e82a2f358
doc: fix typos 2025-09-09 13:14:34 +07:00
Shahar "Dawn" Or 5186921ded lib.evalModules: add graph attribute
Co-authored-by: Ali Jamadi <jamadi1377@gmail.com>
2025-08-07 11:38:16 +07:00
Robert Hensing 736327d6ca doc/module-system: Adjust markdown syntax 2025-05-09 18:39:42 +02:00
Robert Hensing 5e6504c0df
doc/module-system: Apply suggestions from code review
Co-authored-by: Valentin Gagarin <valentin@gagarin.work>
2025-05-09 18:26:10 +02:00
Robert Hensing 1de329f5e1 doc: Module arguments 2025-04-15 13:42:29 +02:00
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