33 lines
974 B
Nix
33 lines
974 B
Nix
|
{
|
||
|
dns = rec {
|
||
|
findSvc = name: [
|
||
|
"any.${name}"
|
||
|
"local.${name}"
|
||
|
"tunnel.${name}"
|
||
|
"wired.${name}"
|
||
|
"wireless.${name}"
|
||
|
"*.if.${name}"
|
||
|
];
|
||
|
findResolve = list: dnameResolve (append "find" list) ++ append "f.void" list;
|
||
|
dnameResolve = list: append "private.void" list ++ append "privatevoid.net" list;
|
||
|
vpnResolve = list: dnameResolve (append "vpn" list);
|
||
|
llmnrResolve = append "local";
|
||
|
append = part: map (x: "${x}.${part}");
|
||
|
portMap = port: map (x: "[${x}]:${builtins.toString port}");
|
||
|
as = x: [x];
|
||
|
|
||
|
clientResolve = x: [x] ++
|
||
|
findResolve (findSvc x) ++
|
||
|
vpnResolve [x] ++
|
||
|
llmnrResolve [x];
|
||
|
|
||
|
subResolve = name: sub: [name] ++ dnameResolve ["${name}.${sub}"];
|
||
|
};
|
||
|
ssh = {
|
||
|
extraConfig = patterns: config: with builtins; let
|
||
|
match = "Host ${concatStringsSep " " patterns}";
|
||
|
indent = map (x: " " + x) config;
|
||
|
in concatStringsSep "\n" ([match] ++ indent);
|
||
|
};
|
||
|
}
|