diff --git a/lib/yggdrasil-hq.nix b/lib/yggdrasil-hq.nix index ad2ebe1a..1d504b01 100644 --- a/lib/yggdrasil-hq.nix +++ b/lib/yggdrasil-hq.nix @@ -1,16 +1,16 @@ -{ config, lib }: +{ config, lib, ... }: with lib; let cfg = config.hq.yggdrasil; - hostNameHash = hashString "sha256" networking.hostName; - hextets = map (i: substring (4 * i) (4 * (i + 1)) hostNameHash) [0 1 2 3]; + hostNameHash = hashString "sha256" config.networking.hostName; + hextets = map (i: substring (4 * i) (4 * (i + 1)) hostNameHash) [ 0 1 2 3 ]; hostAddr = concatStringsSep ":" hextets; -in -{ +in { options = with types; { hq.yggdrasil = { - enable = mkEnableOption "Configure Yggdrasil access via the Yggdrasil router"; + enable = + mkEnableOption "Configure Yggdrasil access via the Yggdrasil router"; interface = mkOption { type = nullOr str; @@ -20,14 +20,19 @@ in }; }; - networking.interfaces = optionalAttrs cfg.enable { - "${cfg.interface}.ipv6" = { - addresses = [ - { address = "310:5217:69c0:9afc:${hostAddr}"; prefixLength = 64; } - ]; - routes = [ - { address = "200::"; prefixLength = 7; via = "310:5217:69c0:9afc::1"; } - ]; + config = mkIf cfg.enable { + networking.interfaces = { + "${cfg.interface}.ipv6" = { + addresses = [{ + address = "310:5217:69c0:9afc:${hostAddr}"; + prefixLength = 64; + }]; + routes = [{ + address = "200::"; + prefixLength = 7; + via = "310:5217:69c0:9afc::1"; + }]; + }; }; }; }