From bb1993232d1a03128793a625305291ff18f800da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joshua=20Kobsch=C3=A4tzki?= Date: Sat, 25 Jan 2025 18:34:00 +0100 Subject: [PATCH] squid: add config validation Inspired by NGINX config validation with pkgs.writers --- nixos/modules/services/networking/squid.nix | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/networking/squid.nix b/nixos/modules/services/networking/squid.nix index 4865718b24f7..7bcbc0ec151f 100644 --- a/nixos/modules/services/networking/squid.nix +++ b/nixos/modules/services/networking/squid.nix @@ -6,8 +6,19 @@ let cfg = config.services.squid; + configWriter = + if cfg.validateConfig then + ( + content: + pkgs.writers.makeScriptWriter { + check = "${cfg.package}/bin/squid -k parse -f"; + interpreter = "${cfg.package}/bin/squid"; + } "squid.conf" content + ) + else + (content: pkgs.writeText "squid.conf" content); - squidConfig = pkgs.writeText "squid.conf" + squidConfig = configWriter (if cfg.configText != null then cfg.configText else '' # @@ -111,6 +122,12 @@ in description = "Whether to run squid web proxy."; }; + validateConfig = mkOption { + type = types.bool; + default = true; + description = "Validate config syntax."; + }; + package = mkPackageOption pkgs "squid" { }; proxyAddress = mkOption {