about summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorJoachim F <joachifm@users.noreply.github.com>2018-02-20 19:22:28 +0000
committerGitHub <noreply@github.com>2018-02-20 19:22:28 +0000
commit46afc63b6f968b3322af99b272c8cf1a3b310ffc (patch)
tree97e0bac3366c6aa46a7d8eda8944d8dccda3a195 /nixos/modules
parentb30fae01cddee73473a7b2eca9254b4c755741bd (diff)
parentbfee33661493df9d995f581ffea542d25ccbbcc9 (diff)
downloadnixlib-46afc63b6f968b3322af99b272c8cf1a3b310ffc.tar
nixlib-46afc63b6f968b3322af99b272c8cf1a3b310ffc.tar.gz
nixlib-46afc63b6f968b3322af99b272c8cf1a3b310ffc.tar.bz2
nixlib-46afc63b6f968b3322af99b272c8cf1a3b310ffc.tar.lz
nixlib-46afc63b6f968b3322af99b272c8cf1a3b310ffc.tar.xz
nixlib-46afc63b6f968b3322af99b272c8cf1a3b310ffc.tar.zst
nixlib-46afc63b6f968b3322af99b272c8cf1a3b310ffc.zip
Merge pull request #32062 from volth/patch-73
nixos/varnish: check .vcl syntax at compile time
Diffstat (limited to 'nixos/modules')
-rw-r--r--nixos/modules/services/web-servers/varnish/default.nix17
1 files changed, 14 insertions, 3 deletions
diff --git a/nixos/modules/services/web-servers/varnish/default.nix b/nixos/modules/services/web-servers/varnish/default.nix
index c3bc065d4651..d63fb954ef96 100644
--- a/nixos/modules/services/web-servers/varnish/default.nix
+++ b/nixos/modules/services/web-servers/varnish/default.nix
@@ -1,9 +1,13 @@
 { config, lib, pkgs, ...}:
+
+with lib;
+
 let
   cfg = config.services.varnish;
 
+  commandLine = "-f ${pkgs.writeText "default.vcl" cfg.config}" +
+      optionalString (cfg.extraModules != []) " -p vmod_path='${makeSearchPathOutput "lib" "lib/varnish/vmods" ([pkgs.varnish] ++ cfg.extraModules)}' -r vmod_path";
 in
-with lib;
 {
   options = {
     services.varnish = {
@@ -69,8 +73,7 @@ with lib;
       serviceConfig = {
         Type = "simple";
         PermissionsStartOnly = true;
-        ExecStart = "${pkgs.varnish}/sbin/varnishd -a ${cfg.http_address} -f ${pkgs.writeText "default.vcl" cfg.config} -n ${cfg.stateDir} -F ${cfg.extraCommandLine}"
-          + optionalString (cfg.extraModules != []) " -p vmod_path='${makeSearchPathOutput "lib" "lib/varnish/vmods" ([pkgs.varnish] ++ cfg.extraModules)}' -r vmod_path";
+        ExecStart = "${pkgs.varnish}/sbin/varnishd -a ${cfg.http_address} -n ${cfg.stateDir} -F ${cfg.extraCommandLine} ${commandLine}";
         Restart = "always";
         RestartSec = "5s";
         User = "varnish";
@@ -83,6 +86,14 @@ with lib;
 
     environment.systemPackages = [ pkgs.varnish ];
 
+    # check .vcl syntax at compile time (e.g. before nixops deployment)
+    system.extraDependencies = [
+      (pkgs.stdenv.mkDerivation {
+        name = "check-varnish-syntax";
+        buildCommand = "${pkgs.varnish}/sbin/varnishd -C ${commandLine} 2> $out";
+      })
+    ];
+
     users.extraUsers.varnish = {
       group = "varnish";
       uid = config.ids.uids.varnish;