{ config, lib, ... }: 
let
  allUsers = lib.concatMap (peer: if peer.syscfg ? users then peer.syscfg.users else []) config.syscfg.peers;
  groupedUsers = lib.groupBy (u: u.username) allUsers;
  allowedUsernames = map (u: u.username) config.syscfg.users;
  activeUsers = lib.filterAttrs (name: _: lib.elem name allowedUsernames) groupedUsers;
in {
  config = lib.mkIf (config.syscfg.server.openssh) {
    services.openssh = {
        enable = true;
        ports = [ 422 ];
        settings = {
        #Banner = "";
        PasswordAuthentication = false;
        PermitRootLogin = "no";
        ClientAliveInterval = 60;
        ClientAliveCountMax = 3;
        TCPKeepAlive = true;
        };
    };
    users.users = lib.mapAttrs (name: userList: {
        openssh.authorizedKeys.keys = lib.unique (
        lib.concatMap (u: if u ? pubssh then [ u.pubssh ] else []) userList
        );
    }) activeUsers;
    };
}