2021-10-28 20:10:47 +00:00
|
|
|
{ config, pkgs, lib, ... }:
|
2021-10-28 20:07:49 +00:00
|
|
|
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
hosts = import ./hosts;
|
|
|
|
|
|
|
|
cfg = config.services.my-tinc;
|
|
|
|
|
|
|
|
mapAttrs = f: attrs: builtins.listToAttrs (
|
|
|
|
map (name: { inherit name; value = f name (builtins.getAttr name attrs); }) (builtins.attrNames attrs)
|
|
|
|
);
|
|
|
|
in
|
|
|
|
{
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
# All hosts we know of
|
2022-05-31 16:45:33 +00:00
|
|
|
services.tinc.networks.my-tinc.hostSettings = mapAttrs
|
|
|
|
(name: host: {
|
|
|
|
addresses = if (host ? address) then [{ address = host.address; }] else [ ];
|
|
|
|
subnets = [{ address = host.subnetAddr; }];
|
|
|
|
rsaPublicKey = mkIf (host ? "rsaPublicKey") host.rsaPublicKey;
|
|
|
|
settings.Ed25519PublicKey = mkIf (host ? "ed25519PublicKey") host.ed25519PublicKey;
|
|
|
|
})
|
|
|
|
hosts;
|
2022-10-17 12:10:39 +00:00
|
|
|
|
|
|
|
# Add all of them to host
|
|
|
|
networking.extraHosts = lib.strings.concatStringsSep
|
|
|
|
"\n"
|
|
|
|
(lib.attrsets.mapAttrsToList
|
|
|
|
(name: host: "${host.subnetAddr} ${name}.tinc")
|
|
|
|
hosts);
|
2021-10-28 20:07:49 +00:00
|
|
|
};
|
|
|
|
}
|