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:             };
              hostNames = mkOption {
                type = types.listOf types.str;
                default = [];
                description = ''
                  A list of host names and/or IP numbers used for accessing
                  the host's ssh service.
                '';
              };
              publicKey = mkOption {
  
negative.code:         example = literalExpression ''
            {
              myhost = {
                extraHostNames = [ "myhost.mydomain.com" "10.10.1.4" ];
                publicKeyFile = ./pubkeys/myhost_ssh_host_dsa_key.pub;
              };
              "myhost2.net".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILIRuJ8p1Fi+m6WkHV0KWnRfpM1WxoW8XAS+XvsSKsTK";
            }
          '';
        };
  