34 lines
858 B
Nix
34 lines
858 B
Nix
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;
|
|
}
|