-
-
Notifications
You must be signed in to change notification settings - Fork 15.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
doc/module-system: Introduce concepts #390993
base: master
Are you sure you want to change the base?
Conversation
This is reference material in a form that is meant to provide somewhat of an overview. It doesn't defers to other sections to provide the full depth, which is uncharacteristic of reference material. It is however not an explanation, as it is does not cover the why; only the what. (Except for the eDSL part I guess)
The module system is a language for handling configuration, implemented as a Nix library. | ||
|
||
Compared to plain Nix, it adds documentation, type checking and composition or extensibility. | ||
It was historically known as the NixOS module system. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was historically known as the NixOS module system. | |
It was historically known as the NixOS module system, but the mechanism is not specific to NixOS. |
This chapter is new and not complete yet. | ||
Its purpose is to "extend" the Nix language with | ||
|
||
- **dynamic type checking** to find mistakes early on, improving error messages; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- **dynamic type checking** to find mistakes early on, improving error messages; | |
- **dynamic type checking** to catch and locate mistakes early on; |
It would be a bit tone deaf to speak about improving error messages from the position of official documentation.
- **documentation**, so that each option has a description, conveniently located in the file that declares it | ||
- **modularity** or **aspect oriented programming**: separate files can all contribute to the same option. | ||
|
||
The following sections are dense introductory reference material. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The following sections are dense introductory reference material. | |
The following sections are introductory reference material. |
Not sure what "dense" would mean.
In order to further reduce scope of each PR (and also to avoid an eternal construction site) I recommend to splice out smaller chunks:
This is essentially what the tracking issue also says, but what I want to say is that I see no reason to splat out everything at once and leave each piece incomplete for an indefinite amount of time. |
This is the rebase of #240531.
Since I cannot force push to the hercules-ci mirror branch ^^
I'd like to merge the things that we can agree on; are improvments
The docs might not be complete but we can still iterate on them. Everything else would just bloat this PR
I made a tracking issue here for the remaining work #391001
Things done
nix.conf
? (See Nix manual)sandbox = relaxed
sandbox = true
nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"
. Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/
)Add a 👍 reaction to pull requests you find important.