Document and rename internal option of modules.

Changed files
+23 -24
lib
nixos
+17 -17
lib/modules.nix
···
evalModules) and the less declarative the module set is. */
evalModules = { modules
, prefix ? []
-
, # !!! This can be specified modularly now, can we remove it?
+
, # This would be remove in the future, Prefer _module.args option instead.
args ? {}
-
, # !!! This can be specified modularly now, can we remove it?
+
, # This would be remove in the future, Prefer _module.check option instead.
check ? true
}:
let
+
# This internal module declare internal options under the `_module'
+
# attribute. These options are fragile, as they are used by the
+
# module system to change the interpretation of modules.
internalModule = rec {
_file = ./modules.nix;
key = _file;
options = {
-
__internal.args = mkOption {
-
description = "Arguments passed to each module.";
-
-
# !!! Should this be types.uniq types.unspecified?
+
_module.args = mkOption {
type = types.attrsOf types.unspecified;
-
internal = true;
+
description = "Arguments passed to each module.";
};
-
__internal.check = mkOption {
-
description = "Whether to check whether all option definitions have matching declarations.";
-
+
_module.check = mkOption {
type = types.uniq types.bool;
-
internal = true;
-
default = check;
+
description = "Whether to check whether all option definitions have matching declarations.";
};
};
config = {
-
__internal.args = args;
+
_module.args = args;
};
};
+
closed = closeModules (modules ++ [ internalModule ]) { inherit config options; lib = import ./.; };
+
# Note: the list of modules is reversed to maintain backward
# compatibility with the old module system. Not sure if this is
# the most sensible policy.
options = mergeModules prefix (reverseList closed);
+
# Traverse options and extract the option values into the final
# config set. At the same time, check whether all option
# definitions have matching declarations.
-
# !!! __internal.check's value can't depend on any other config values
+
# !!! _module.check's value can't depend on any other config values
# without an infinite recursion. One way around this is to make the
# 'config' passed around to the modules be unconditionally unchecked,
# and only do the check in 'result'.
···
if isOption v then v.value
else yieldConfig (prefix ++ [n]) v) set) ["_definedNames"];
in
-
if options.__internal.check.value && set ? _definedNames then
+
if options._module.check.value && set ? _definedNames then
fold (m: res:
fold (name: res:
if set ? ${name} then res else throw "The option `${showOption (prefix ++ [name])}' defined in `${m.file}' does not exist.")
···
let
# Module arguments are resolved in a strict manner when attribute set
# deconstruction is used. As the arguments are now defined with the
-
# config.__interanl.args option, the strictness used on the attribute
+
# config._module.args option, the strictness used on the attribute
# set argument would cause an infinite loop, if the result of the
# option is given as argument.
#
···
requiredArgs = builtins.attrNames (builtins.functionArgs f);
extraArgs = builtins.listToAttrs (map (name: {
inherit name;
-
value = config.__internal.args.${name};
+
value = config._module.args.${name};
}) requiredArgs);
in f (extraArgs // arg)
else
-1
lib/types.nix
···
modules = opts' ++ map (def: { _file = def.file; imports = [(coerce def.value)]; }) defs;
in (evalModules {
inherit modules;
-
# !!! See comment about args in lib/modules.nix
args.name = last loc;
prefix = loc;
}).config;
+2 -2
nixos/lib/eval-config.nix
···
key = _file;
config = {
nixpkgs.system = lib.mkDefault system_;
-
__internal.args.pkgs = lib.mkIf (pkgs_ != null) (lib.mkForce pkgs_);
+
_module.args.pkgs = lib.mkIf (pkgs_ != null) (lib.mkForce pkgs_);
};
};
···
inherit modules baseModules;
};
-
inherit (config.__internal.args) pkgs;
+
inherit (config._module.args) pkgs;
}
+1 -1
nixos/modules/misc/extra-arguments.nix
···
{ lib, pkgs, config, ... }:
{
-
__internal.args = {
+
_module.args = {
modulesPath = ../.;
pkgs_i686 = import ../../lib/nixpkgs.nix {
+1 -1
nixos/modules/misc/nixpkgs.nix
···
};
config = {
-
__internal.args.pkgs = import ../../lib/nixpkgs.nix {
+
_module.args.pkgs = import ../../lib/nixpkgs.nix {
system = config.nixpkgs.system;
inherit (config.nixpkgs) config;
+1 -1
nixos/modules/rename.nix
···
++ obsolete [ "services" "mysql55" ] [ "services" "mysql" ]
-
++ obsolete [ "environment" "checkConfigurationOptions" ] [ "__internal" "check" ]
+
++ obsolete [ "environment" "checkConfigurationOptions" ] [ "_module" "check" ]
# Options that are obsolete and have no replacement.
++ obsolete' [ "boot" "loader" "grub" "bootDevice" ]
+1 -1
nixos/modules/services/misc/nixos-manual.nix
···
eval = evalModules {
modules = [ versionModule ] ++ baseModules;
-
args = (config.__internal.args) // { modules = [ ]; };
+
args = (config._module.args) // { modules = [ ]; };
};
manual = import ../../../doc/manual {