anchor.diff:          subOptions =
             let ss = opt.type.getSubOptions opt.loc;
             in if ss != {} then optionAttrSetToDocList' opt.loc ss else [];
  +        subOptionsVisible = docOption.visible && opt.visible or null != "shallow";
         in
  -        [ docOption ] ++ optionals docOption.visible subOptions) (collect isOption options);
  +        [ docOption ] ++ optionals subOptionsVisible subOptions) (collect isOption options);
   
   
     /* This function recursively removes all derivation attributes from
  
positive.code:     apply ? null,
      # Whether the option is for NixOS developers only.
      internal ? null,
      # Whether the option shows up in the manual.
      visible ? null,
      # Whether the option can be set only once
      readOnly ? null,
  
negative.code:           description = opt.description or (lib.warn "Option `${name}' has no description." "This option has no description.");
            declarations = filter (x: x != unknownModule) opt.declarations;
            internal = opt.internal or false;
            visible =
              if (opt?visible && opt.visible == "shallow")
              then true
              else opt.visible or true;
            readOnly = opt.readOnly or false;
            type = opt.type.description or null;
          }
  