lol

modules: add mkAliasOptionModuleMD

mkAliasOptionModule should not default to mdDoc descriptions because
that can break out-of-tree users of documentation infrastructure. add an
explicitly-MD variant for now, to be removed some time after the MD
transition is complete.

authored by

pennae and committed by
pennae
4c1cfbdb b2054d3f

+26 -14
+2 -1
lib/default.nix
··· 131 131 mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule 132 132 mkRenamedOptionModule mkRenamedOptionModuleWith 133 133 mkMergedOptionModule mkChangedOptionModule 134 - mkAliasOptionModule mkDerivedConfig doRename; 134 + mkAliasOptionModule mkDerivedConfig doRename 135 + mkAliasOptionModuleMD; 135 136 inherit (self.options) isOption mkEnableOption mkSinkUndeclaredOptions 136 137 mergeDefaultOption mergeOneOption mergeEqualOption mergeUniqueOption 137 138 getValues getFiles
+11 -2
lib/modules.nix
··· 1108 1108 visible = true; 1109 1109 warn = false; 1110 1110 use = id; 1111 + wrapDescription = lib.id; 1112 + }; 1113 + 1114 + /* Transitional version of mkAliasOptionModule that uses MD docs. */ 1115 + mkAliasOptionModuleMD = from: to: doRename { 1116 + inherit from to; 1117 + visible = true; 1118 + warn = false; 1119 + use = id; 1111 1120 }; 1112 1121 1113 1122 /* mkDerivedConfig : Option a -> (a -> Definition b) -> Definition b ··· 1130 1139 (opt.highestPrio or defaultOverridePriority) 1131 1140 (f opt.value); 1132 1141 1133 - doRename = { from, to, visible, warn, use, withPriority ? true }: 1142 + doRename = { from, to, visible, warn, use, withPriority ? true, wrapDescription ? lib.mdDoc }: 1134 1143 { config, options, ... }: 1135 1144 let 1136 1145 fromOpt = getAttrFromPath from options; ··· 1141 1150 { 1142 1151 options = setAttrByPath from (mkOption { 1143 1152 inherit visible; 1144 - description = lib.mdDoc "Alias of {option}`${showOption to}`."; 1153 + description = wrapDescription "Alias of {option}`${showOption to}`."; 1145 1154 apply = x: use (toOf config); 1146 1155 } // optionalAttrs (toType != null) { 1147 1156 type = toType;
+5 -3
nixos/lib/make-options-doc/mergeJSON.py
··· 306 306 print("Explanation: The documentation contains descriptions, examples, or defaults written in DocBook. " + 307 307 "NixOS is in the process of migrating from DocBook to Markdown, and " + 308 308 "DocBook is disallowed for in-tree modules. To change your contribution to "+ 309 - "use Markdown, apply mdDoc and literalMD. For example:\n" + 309 + "use Markdown, apply mdDoc and literalMD and use the *MD variants of option creation " + 310 + "functions where they are available. For example:\n" + 310 311 "\n" + 311 312 " example.foo = mkOption {\n" + 312 313 " description = lib.mdDoc ''your description'';\n" + 313 314 " defaultText = lib.literalMD ''your description of default'';\n" + 314 - " }\n" + 315 + " };\n" + 315 316 "\n" + 316 - " example.enable = mkEnableOption (lib.mdDoc ''your thing'');", 317 + " example.enable = mkEnableOption (lib.mdDoc ''your thing'');\n" + 318 + " imports = [ (mkAliasOptionModuleMD [ \"example\" \"args\" ] [ \"example\" \"settings\" ]) ];", 317 319 file = sys.stderr) 318 320 319 321 if hasErrors:
+2 -2
nixos/modules/config/users-groups.nix
··· 444 444 445 445 in { 446 446 imports = [ 447 - (mkAliasOptionModule [ "users" "extraUsers" ] [ "users" "users" ]) 448 - (mkAliasOptionModule [ "users" "extraGroups" ] [ "users" "groups" ]) 447 + (mkAliasOptionModuleMD [ "users" "extraUsers" ] [ "users" "users" ]) 448 + (mkAliasOptionModuleMD [ "users" "extraGroups" ] [ "users" "groups" ]) 449 449 (mkRenamedOptionModule ["security" "initialRootPassword"] ["users" "users" "root" "initialHashedPassword"]) 450 450 ]; 451 451
+1 -1
nixos/modules/rename.nix
··· 14 14 15 15 # This alias module can't be where _module.check is defined because it would 16 16 # be added to submodules as well there 17 - (mkAliasOptionModule [ "environment" "checkConfigurationOptions" ] [ "_module" "check" ]) 17 + (mkAliasOptionModuleMD [ "environment" "checkConfigurationOptions" ] [ "_module" "check" ]) 18 18 19 19 # Completely removed modules 20 20 (mkRemovedOptionModule [ "environment" "blcr" "enable" ] "The BLCR module has been removed")
+2 -2
nixos/modules/services/networking/ssh/sshd.nix
··· 79 79 80 80 { 81 81 imports = [ 82 - (mkAliasOptionModule [ "services" "sshd" "enable" ] [ "services" "openssh" "enable" ]) 83 - (mkAliasOptionModule [ "services" "openssh" "knownHosts" ] [ "programs" "ssh" "knownHosts" ]) 82 + (mkAliasOptionModuleMD [ "services" "sshd" "enable" ] [ "services" "openssh" "enable" ]) 83 + (mkAliasOptionModuleMD [ "services" "openssh" "knownHosts" ] [ "programs" "ssh" "knownHosts" ]) 84 84 (mkRenamedOptionModule [ "services" "openssh" "challengeResponseAuthentication" ] [ "services" "openssh" "kbdInteractiveAuthentication" ]) 85 85 ]; 86 86
+2 -2
nixos/modules/services/torrent/transmission.nix
··· 19 19 imports = [ 20 20 (mkRenamedOptionModule ["services" "transmission" "port"] 21 21 ["services" "transmission" "settings" "rpc-port"]) 22 - (mkAliasOptionModule ["services" "transmission" "openFirewall"] 23 - ["services" "transmission" "openPeerPorts"]) 22 + (mkAliasOptionModuleMD ["services" "transmission" "openFirewall"] 23 + ["services" "transmission" "openPeerPorts"]) 24 24 ]; 25 25 options = { 26 26 services.transmission = {
+1 -1
nixos/modules/services/x11/picom.nix
··· 41 41 in { 42 42 43 43 imports = [ 44 - (mkAliasOptionModule [ "services" "compton" ] [ "services" "picom" ]) 44 + (mkAliasOptionModuleMD [ "services" "compton" ] [ "services" "picom" ]) 45 45 (mkRemovedOptionModule [ "services" "picom" "refreshRate" ] '' 46 46 This option corresponds to `refresh-rate`, which has been unused 47 47 since picom v6 and was subsequently removed by upstream.