anchor.diff:                      (data.publicKey != null && data.publicKeyFile == null);
           message = "knownHost ${name} must contain either a publicKey or publicKeyFile";
         });
  +
  +    warnings = mapAttrsToList (name: _: ''programs.ssh.knownHosts.${name}.hostNames is deprecated use programs.ssh.knownHosts.${name}.extraHostNames'')
  +      (filterAttrs (name: {hostNames, extraHostNames, ...}: hostNames != [ name ] ++ extraHostNames) cfg.knownHosts);
   
       # SSH configuration. Slight duplication of the sshd_config
       # generation in the sshd service.
  
positive.code:               '';
              };
            };
            config = {
              hostNames = mkDefault [ name ];
            };
          }));
          description = ''
            The set of system-wide known SSH hosts.
  
negative.code:             };
              hostNames = mkOption {
                type = types.listOf types.str;
                default = [ name ] ++ config.extraHostNames;
                description = ''
                  DEPRECATED, please use <literal>extraHostNames</literal>.
                  A list of host names and/or IP numbers used for accessing
                  the host's ssh service.
                '';
              };
              extraHostNames = mkOption {
                type = types.listOf types.str;
                default = [];
                description = ''
                  A list of additional host names and/or IP numbers used for
                  accessing the host's ssh service.
                '';
              };
              publicKey = mkOption {
  