diff --git a/lib/modules.nix b/lib/modules.nix
index 8baae491705..bb4a659e7a7 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -532,9 +532,7 @@ rec {
#
mkAliasDefinitions = mkAliasAndWrapDefinitions id;
mkAliasAndWrapDefinitions = wrap: option:
- mkMerge
- (optional (isOption option && option.isDefined)
- (wrap (mkMerge option.definitions)));
+ mkIf (isOption option && option.isDefined) (wrap (mkMerge option.definitions));
/* Compatibility. */
@@ -669,22 +667,26 @@ rec {
};
doRename = { from, to, visible, warn, use }:
+ { config, options, ... }:
let
+ fromOpt = getAttrFromPath from options;
+ toOpt = getAttrFromPath to options;
toOf = attrByPath to
(abort "Renaming error: option `${showOption to}' does not exist.");
in
- { config, options, ... }:
- { options = setAttrByPath from (mkOption {
- inherit visible;
- description = "Alias of .";
- apply = x: use (toOf config);
- });
- config = {
- warnings =
- let opt = getAttrFromPath from options; in
- optional (warn && opt.isDefined)
- "The option `${showOption from}' defined in ${showFiles opt.files} has been renamed to `${showOption to}'.";
- } // setAttrByPath to (mkAliasDefinitions (getAttrFromPath from options));
- };
+ {
+ options = setAttrByPath from (mkOption {
+ inherit visible;
+ description = "Alias of .";
+ apply = x: use (toOf config);
+ });
+ config = mkMerge [
+ {
+ warnings = optional (warn && fromOpt.isDefined)
+ "The option `${showOption from}' defined in ${showFiles fromOpt.files} has been renamed to `${showOption to}'.";
+ }
+ (mkAliasAndWrapDefinitions (setAttrByPath to) fromOpt)
+ ];
+ };
}