diff options
| -rw-r--r-- | kartei/tv/default.nix | 84 | 
1 files changed, 38 insertions, 46 deletions
| diff --git a/kartei/tv/default.nix b/kartei/tv/default.nix index c43c7cbaa..eacb40af3 100644 --- a/kartei/tv/default.nix +++ b/kartei/tv/default.nix @@ -1,47 +1,5 @@  with import ../../lib; -{ config, ... }: let - -  evalHost = hostName: hostConfig: evalSubmodule types.host [ -    hostConfig -    { -      name = hostName; -      owner = config.krebs.users.tv; -    } -    (optionalAttrs (hasAttrByPath ["nets" "retiolum"] hostConfig) { -      nets.retiolum = { -        ip6.addr = -          (krebs.genipv6 "retiolum" "tv" { inherit hostName; }).address; -      }; -    }) -    (let -      pubkey-path = ./wiregrill + "/${hostName}.pub"; -    in optionalAttrs (pathExists pubkey-path) { -      nets.wiregrill = { -        aliases = [ -          "${hostName}.w" -        ]; -        ip6.addr = -          (krebs.genipv6 "wiregrill" "tv" { inherit hostName; }).address; -        wireguard.pubkey = readFile pubkey-path; -      }; -    }) -    (host: mkIf (host.config.ssh.pubkey != null) { -      ssh.privkey = mapAttrs (const mkDefault) { -        path = config.krebs.secret.file "ssh.id_${host.config.ssh.privkey.type}"; -        type = head (toList (match "ssh-([^ ]+) .*" host.config.ssh.pubkey)); -      }; -    }) -  ]; - -  hostFiles = -    mapAttrs' -      (name: type: { -        name = removeSuffix ".nix" name; -        value = ./hosts + "/${name}"; -      }) -      (readDir ./hosts); - -in { +{ config, ... }: {    dns.providers = {      "viljetic.de" = "regfish";    }; @@ -53,9 +11,43 @@ in {            lambda = hostSource { inherit config lib; };            set = hostSource;          }; -      in -        evalHost hostName hostConfig) -      hostFiles; +      in evalSubmodule types.host [ +        hostConfig +        { +          name = hostName; +          owner = config.krebs.users.tv; +        } +        (optionalAttrs (hasAttrByPath ["nets" "retiolum"] hostConfig) { +          nets.retiolum = { +            ip6.addr = +              (krebs.genipv6 "retiolum" "tv" { inherit hostName; }).address; +          }; +        }) +        (let +          pubkey-path = ./wiregrill + "/${hostName}.pub"; +        in optionalAttrs (pathExists pubkey-path) { +          nets.wiregrill = { +            aliases = [ +              "${hostName}.w" +            ]; +            ip6.addr = +              (krebs.genipv6 "wiregrill" "tv" { inherit hostName; }).address; +            wireguard.pubkey = readFile pubkey-path; +          }; +        }) +        (host: mkIf (host.config.ssh.pubkey != null) { +          ssh.privkey = mapAttrs (const mkDefault) { +            path = config.krebs.secret.file "ssh.id_${host.config.ssh.privkey.type}"; +            type = head (toList (match "ssh-([^ ]+) .*" host.config.ssh.pubkey)); +          }; +        }) +      ]) +      (mapAttrs' +        (name: type: { +          name = removeSuffix ".nix" name; +          value = ./hosts + "/${name}"; +        }) +        (readDir ./hosts));    sitemap = {      "http://cgit.krebsco.de" = {        desc = "Git repositories"; | 
