let allKeyDir = "/etc/nixos/ssh_keys"; readKeyFile = filePath: let content = builtins.readFile filePath; lines = builtins.filter (line: line != "") ( builtins.filter builtins.isString ( builtins.split "\n" content ) ); in lines; getUserKeys = username: let userDir = "${allKeyDir}/${username}"; in if builtins.pathExists userDir then let files = builtins.attrNames (builtins.readDir userDir); allKeys = builtins.concatMap (file: readKeyFile "${userDir}/${file}" ) files; in allKeys else []; users = builtins.attrNames (builtins.readDir allKeyDir); in rec { keys = builtins.listToAttrs (map (user: { name = user; value = getUserKeys user; }) users); ssh_users = users; getKeys = getUserKeys; }