summaryrefslogtreecommitdiffstats
path: root/lib/modules.nix
AgeCommit message (Collapse)Author
2016-06-01Fix display of deprecated option definition warningsEelco Dolstra
Looks like this was accidentally left commented out by 5f077e229625583072ebf63ea48b11170771b0ed.
2016-03-01Revert "Add the tool "nixos-typecheck" that can check an option declaration to:"Eelco Dolstra
This reverts commit cad8957eabcbf73062226d28366fd446c15c8737. It breaks NixOps, but more importantly, such major changes to the module system really need to be reviewed.
2016-02-29Add the tool "nixos-typecheck" that can check an option declaration to:Thomas Strobel
- 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.
2015-10-14Factor out option renamingEelco Dolstra
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.
2015-08-09Update option-usages.nix expression to work with newer version of the module ↵Nicolas B. Pierron
system.
2015-08-05Module system: Fix ‘definitions’ fieldEelco Dolstra
Fixes https://github.com/NixOS/nixops/issues/325.
2015-07-30Add read-only optionsEelco Dolstra
These are options that can have only one definition, regardless of priority.
2015-07-28Remove superfluous copy of "min"Eelco Dolstra
2015-07-28Minor module system evaluation speedupsEelco Dolstra
This gives about a 5% speedup. Issue #8152.
2015-07-28Fix indentationEelco Dolstra
2015-07-23concatLists (map ...) -> concatMapEelco Dolstra
2015-07-23Use foldl' instead of fold in some placesEelco Dolstra
2015-07-14NixOS modules: Add error context on module arguments evaluation.Nicolas B. Pierron
2015-06-15types.uniq types.bool -> types.boolEelco Dolstra
2015-06-08Bring an importable modulesPath back from the dead, in the only way I knowDan Peebles
2015-03-15Document and rename internal option of modules.Nicolas B. Pierron
2015-03-12Share common code for merging option definitions.Nicolas B. Pierron
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 == []`.
2015-03-12Rename mergeDefinitions internal steps to functions which are independent of ↵Nicolas B. Pierron
each others.
2015-03-12Expose submodule arguments to builtins.functionArgs before applying the ↵Nicolas B. Pierron
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.
2015-03-12Add comment about limitation on __internal.checkShea Levy
2015-03-12Add comments about the module system interfaceShea Levy
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.
2015-03-12evalModules: Add internal option for the check argumentShea Levy
2015-03-12nixos: Don't evaluate twice to get the value of config.nixpkgsShea Levy
2015-03-12modules.nix: Generate the extra argument set from the configurationShea Levy
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.
2015-03-12Move property processing, type checking, and merge code into a functionShea Levy
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.
2014-12-22modules: Extract mkAliasDefinition from the rename.nix NixOS module.Nicolas B. Pierron
2014-11-01nixos: Try to show an helpful message when the user sets config. or options.Luca Bruno
Feel free to improve or remove :-)
2014-10-05Replace hasAttr/getAttr calls with the ? and . operatorsEelco Dolstra
For NixOS evaluation, this gives a ~21% reduction in the number of values allocated and a ~4% speedup. It's also more readable.
2014-10-05lib: Use arithmetic operators rather than builtins.add etc.Eelco Dolstra
2014-09-07Merge options having the submodule type.Nicolas Pierron
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.
2014-09-07Annotate option-set options with the file in which they are declared.Nicolas Pierron
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
2014-08-29Add error an message to prevent use of useless submodules.Nicolas Pierron
2014-06-26minor fix in documentationJan Malakhovski
Signed-off-by: Domen Kožar <domen@dev.si>
2014-05-05Re-introduce (marked as obsolete) mkStrict function, to allow old nixops ↵Rob Vermaas
deployments to keep working.
2014-03-30Bring back mkOrderEelco Dolstra
2014-02-11Pass lib to modulesShea Levy
Since mkOption, types, etc. are defined there, lib is really part of the interface
2013-11-12Add some primops to libEelco Dolstra
2013-10-30Fix backward compatibility with Nix < 1.6Eelco Dolstra
"with" used to be less lazy, so don't rely on that. Also don't use the "<" operator.
2013-10-30Show correct position info for errors in submodulesEelco Dolstra
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.
2013-10-30Export only the files of the active definitionsEelco Dolstra
2013-10-29Fix environment.checkConfigurationOptionsEelco Dolstra
This requires delaying the declaredness check until later, otherwise we get an infinite recursion querying environment.checkConfigurationOptions.
2013-10-29fixMergeModules shouldn't check whether options are declaredEelco Dolstra
2013-10-29Add fixMergeModules back inEelco Dolstra
NixOps uses it.
2013-10-29Support module keys that are pathsEelco Dolstra
2013-10-29Add a priority level for overrides in VM testsEelco Dolstra
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
2013-10-28Fix nixos-optionEelco Dolstra
In particular, it no longer produces an "infinite recursion" error when run with no arguments.
2013-10-28Show precise error messages in option merge failuresEelco Dolstra
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.
2013-10-28Support mkOverride in non-leaf nodesEelco Dolstra
2013-10-28Allow imports in plain modulesEelco Dolstra
2013-10-28Remove debug codeEelco Dolstra