Age | Commit message (Collapse) | Author |
|
Looks like this was accidentally left commented out by
5f077e229625583072ebf63ea48b11170771b0ed.
|
|
This reverts commit cad8957eabcbf73062226d28366fd446c15c8737. It
breaks NixOps, but more importantly, such major changes to the module
system really need to be reviewed.
|
|
- Enforce that an option declaration has a "defaultText" if and only if the
type of the option derives from "package", "packageSet" or "nixpkgsConfig"
and if a "default" attribute is defined.
- Enforce that the value of the "example" attribute is wrapped with "literalExample"
if the type of the option derives from "package", "packageSet" or "nixpkgsConfig".
- Warn if a "defaultText" is defined in an option declaration if the type of
the option does not derive from "package", "packageSet" or "nixpkgsConfig".
- Warn if no "type" is defined in an option declaration.
|
|
Option aliases/deprecations can now be declared in any NixOS module,
not just in nixos/modules/rename.nix. This is more modular (since it
allows for example grub-related aliases to be declared in the grub
module), and allows aliases outside of NixOS (e.g. in NixOps modules).
The syntax is a bit funky. Ideally we'd have something like:
options = {
foo.bar.newOption = mkOption { ... };
foo.bar.oldOption = mkAliasOption [ "foo" "bar" "newOption" ];
};
but that's not possible because options cannot define values in
*other* options - you need to have a "config" for that. So instead we
have functions that return a *module*: mkRemovedOptionModule,
mkRenamedOptionModule and mkAliasOptionModule. These can be used via
"imports", e.g.
imports = [
(mkAliasOptionModule [ "foo" "bar" "oldOption" ] [ "foo" "bar" "newOption" ]);
];
As an added bonus, deprecation warnings now show the file name of the
offending module.
Fixes #10385.
|
|
system.
|
|
Fixes https://github.com/NixOS/nixops/issues/325.
|
|
These are options that can have only one definition, regardless of
priority.
|
|
|
|
This gives about a 5% speedup.
Issue #8152.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This move idioms which were used in `evalOptionValue` and in the `merge`
functions of `listOf` and `attrsOf` types, such that we can use a names such
as `isDefined` and `optionalValue` instead or repeating identical
comparisons of `defsFinal == []`.
|
|
each others.
|
|
arguments.
The current implementation of the ApplyIfFunction is looking at the
arguments of a module to decide which arguments should be given to each
module. This patch make sure that we do not wrap a submodule function in
order to keep functionArgs working as expected.
|
|
|
|
Ideally the module system could be configured pretty much completely by
the contents of the modules themselves, so add comments about avoiding
complicating it further and possibly removing now-redundant
configurability from the existing interface.
|
|
|
|
|
|
This allows for module arguments to be handled modularly, in particular
allowing the nixpkgs module to handle the nixpkgs import internally.
This creates the __internal option namespace, which should only be added
to by the module system itself.
|
|
This makes the relationship between property types clearer, and more
importantly will let option types parameterized by other option types
reuse the code for delegated type checking and merging.
|
|
|
|
Feel free to improve or remove :-)
|
|
For NixOS evaluation, this gives a ~21% reduction in the number of
values allocated and a ~4% speedup. It's also more readable.
|
|
|
|
Now we should be able to have multiple declaration of the same option as
long as all declarations have the same type. If the type has a sub module,
then it is merged with the submodules of other declarations, as done with
option sets.
In addition, the file of the option declaration is passed into the
submodule, such as the documentation can display it correctly.
|
|
This modification improves NixOS manual by listing in which file, each
submodule option is declared. This solve the issue that files are not
reported when looking at options such as fileSystems.<name?>.neededForBoot
|
|
|
|
Signed-off-by: Domen Kožar <domen@dev.si>
|
|
deployments to keep working.
|
|
|
|
Since mkOption, types, etc. are defined there, lib is really part of the interface
|
|
|
|
"with" used to be less lazy, so don't rely on that. Also don't use
the "<" operator.
|
|
E.g.
The unique option `fileSystems./.device' is defined multiple times, in `/etc/nixos/configuration.nix' and `/etc/nixos/foo.nix'.
This requires passing file/value tuples to the merge functions.
|
|
|
|
This requires delaying the declaredness check until later, otherwise
we get an infinite recursion querying
environment.checkConfigurationOptions.
|
|
|
|
NixOps uses it.
|
|
|
|
Now that overriding fileSystems in qemu-vm.nix works again, it's
important that the VM tests that add additional file systems use the
same override priority. Instead of using the same magic constant
everywhere, they can now use mkVMOverride.
http://hydra.nixos.org/build/6695561
|
|
In particular, it no longer produces an "infinite recursion" error
when run with no arguments.
|
|
For instance, if time.timeZone is defined multiple times, you now get
the error message:
error: user-thrown exception: The unique option `time.timeZone' is defined multiple times, in `/etc/nixos/configurations/misc/eelco/x11vnc.nix' and `/etc/nixos/configuration.nix'.
while previously you got:
error: user-thrown exception: Multiple definitions of string. Only one is allowed for this option.
and only an inspection of the stack trace gave a clue as to what
option caused the problem.
|
|
|
|
|
|
|