From 1f61fbf3260dc01afd4d44d309aef682d3558fb3 Mon Sep 17 00:00:00 2001 From: Ioannis Koutras Date: Sat, 8 Feb 2020 12:38:38 +0100 Subject: [PATCH] nixos/traefik: make config deep mergeable --- nixos/modules/services/web-servers/traefik.nix | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/web-servers/traefik.nix b/nixos/modules/services/web-servers/traefik.nix index 436136f4736..4ab7307c3b6 100644 --- a/nixos/modules/services/web-servers/traefik.nix +++ b/nixos/modules/services/web-servers/traefik.nix @@ -4,6 +4,20 @@ with lib; let cfg = config.services.traefik; + jsonValue = with types; + let + valueType = nullOr (oneOf [ + bool + int + float + str + (lazyAttrsOf valueType) + (listOf valueType) + ]) // { + description = "JSON value"; + emptyValue.value = { }; + }; + in valueType; dynamicConfigFile = if cfg.dynamicConfigFile == null then pkgs.runCommand "config.toml" { buildInputs = [ pkgs.remarshal ]; @@ -52,7 +66,7 @@ in { description = '' Static configuration for Traefik. ''; - type = types.attrs; + type = jsonValue; default = { entryPoints.http.address = ":80"; }; example = { entryPoints.web.address = ":8080"; @@ -76,7 +90,7 @@ in { description = '' Dynamic configuration for Traefik. ''; - type = types.attrs; + type = jsonValue; default = { }; example = { http.routers.router1 = {