3
0
Fork 0
forked from mirrors/nixpkgs

Merge pull request #5441 from nbp/mkAlias

modules: Extract mkAliasDefinition from the rename.nix NixOS module.
This commit is contained in:
Nicolas B. Pierron 2015-01-01 06:59:42 -08:00
commit 816229593a
2 changed files with 27 additions and 2 deletions

View file

@ -356,6 +356,31 @@ rec {
mkBefore = mkOrder 500; mkBefore = mkOrder 500;
mkAfter = mkOrder 1500; mkAfter = mkOrder 1500;
# Convenient property used to transfer all definitions and their
# properties from one option to another. This property is useful for
# renaming options, and also for including properties from another module
# system, including sub-modules.
#
# { config, options, ... }:
#
# {
# # 'bar' might not always be defined in the current module-set.
# config.foo.enable = mkAliasDefinitions (options.bar.enable or {});
#
# # 'barbaz' has to be defined in the current module-set.
# config.foobar.paths = mkAliasDefinitions options.barbaz.paths;
# }
#
# Note, this is different than taking the value of the option and using it
# as a definition, as the new definition will not keep the mkOverride /
# mkDefault properties of the previous option.
#
mkAliasDefinitions = mkAliasAndWrapDefinitions id;
mkAliasAndWrapDefinitions = wrap: option:
mkMerge
(optional (isOption option && option.isDefined)
(wrap (mkMerge option.definitions)));
/* Compatibility. */ /* Compatibility. */
fixMergeModules = modules: args: evalModules { inherit modules args; check = false; }; fixMergeModules = modules: args: evalModules { inherit modules args; check = false; };

View file

@ -55,8 +55,8 @@ let
apply = x: use (toOf config); apply = x: use (toOf config);
inherit visible; inherit visible;
}); });
}
{ config = setTo (mkMerge (if (fromOf options).isDefined then [ (define (mkMerge (fromOf options).definitions)) ] else [])); config = setTo (mkAliasAndWrapDefinitions define (fromOf options));
} }
]; ];