lib: _: rec { my = import ./my.nix lib; dns = import ./dns.nix; isEven = number: assert (builtins.isInt number) || (builtins.isFloat number); builtins.div number 2 == 0; isOdd = !isEven; pow = base: exponent: assert (builtins.isInt base) && (builtins.isInt exponent); assert exponent > 0; builtins.foldl' (x: _: x * base) 1 (builtins.genList (_: _) exponent); mapListToAttrs = f: xs: builtins.listToAttrs (map (name: { name = if builtins.isList name then builtins.elemAt name (builtins.length name - 1) else name; value = f name; }) xs); mkTcpMem = min: ini: max: assert min <= ini && ini <= max; lib.concatMapStrings (x: toString x + " ") (map (pow 2) [min ini max]); # TODO Move these to the NGINX module. nginxInternalOnly = '' if ($internal != 1) { return 403; } access_log off; ''; nginxAppendHead = text: '' sub_filter '' '${lib.concatStrings text}'; sub_filter_once on; ''; htmlPlausibleScript = { domain ? "$host", src ? "https://plausible.shire.net/js/script.js", }: ''''; }