{ config, lib, pkgs, ... }: { options.garden.caddy = { package = { plugins = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ ]; description = "Caddy plugins to install"; }; hash = lib.mkOption { type = lib.types.str; default = lib.fakeSha256; description = "Hash for Caddy plugins"; }; }; layer4 = lib.mkOption { type = lib.types.lines; default = ""; description = "Caddy-L4 configurations"; }; }; config = { services.caddy = { package = pkgs.caddy.withPlugins { plugins = config.garden.caddy.package.plugins; hash = config.garden.caddy.package.hash; }; globalConfig = lib.mkIf (config.garden.caddy.layer4 != "") '' layer4 { ${config.garden.caddy.layer4} } ''; }; }; }