varnish: fix localstatedir for varnish* tools (#17508)

The varnish tools (varnishstat, varnishlog, ...) tried to load the VSM
file from a spurious var directory in the Nix store. Fix the default so
the tools "just work" when also keeping services.varnish.stateDir at the
default.

Notes:
- The tools use $localstatedir/$HOSTNAME so I've adapted the default for
  stateDir as well to contain hostName.
- Added postStop action to remove the localstatedir. There is no point
  in keeping it around when varnish does not run, as it regenerates it
  on startup anyway.

Fixes #7495
This commit is contained in:
Christian Kauhaus 2016-08-04 15:25:23 +02:00 committed by Rok Garbas
parent 8f52a0f926
commit ea7e705cd9
2 changed files with 6 additions and 1 deletions

View File

@ -28,7 +28,7 @@ with lib;
};
stateDir = mkOption {
default = "/var/spool/varnish";
default = "/var/spool/varnish/${config.networking.hostName}";
description = "
Directory holding all state for Varnish to run.
";
@ -46,6 +46,9 @@ with lib;
mkdir -p ${cfg.stateDir}
chown -R varnish:varnish ${cfg.stateDir}
'';
postStop = ''
rm -rf ${cfg.stateDir}
'';
path = [ pkgs.gcc ];
serviceConfig.ExecStart = "${pkgs.varnish}/sbin/varnishd -a ${cfg.http_address} -f ${pkgs.writeText "default.vcl" cfg.config} -n ${cfg.stateDir} -u varnish";
serviceConfig.Type = "forking";

View File

@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
buildInputs = [ pcre libxslt groff ncurses pkgconfig readline python
pythonPackages.docutils];
buildFlags = "localstatedir=/var/spool";
meta = {
description = "Web application accelerator also known as a caching HTTP reverse proxy";
homepage = "https://www.varnish-cache.org";