diff options
author | Volth <volth@webmaster.ms> | 2017-07-15 22:17:53 +0000 |
---|---|---|
committer | Volth <volth@webmaster.ms> | 2017-07-26 23:32:49 +0000 |
commit | c6128d2feb842cf346de137086db73f08b21a46d (patch) | |
tree | 39e79fafa28b96082a27383476e6abb5b3272af1 /nixos/modules | |
parent | 588e3da3f430c5915f9b368c714cf5273c516da3 (diff) | |
download | nixlib-c6128d2feb842cf346de137086db73f08b21a46d.tar nixlib-c6128d2feb842cf346de137086db73f08b21a46d.tar.gz nixlib-c6128d2feb842cf346de137086db73f08b21a46d.tar.bz2 nixlib-c6128d2feb842cf346de137086db73f08b21a46d.tar.lz nixlib-c6128d2feb842cf346de137086db73f08b21a46d.tar.xz nixlib-c6128d2feb842cf346de137086db73f08b21a46d.tar.zst nixlib-c6128d2feb842cf346de137086db73f08b21a46d.zip |
nixos/varnish: made compatible with varnish 5.2.1, add modules
* nixos/varnish: command line compatible with varnish 5.2.1, fixes https://github.com/NixOS/nixpkgs/issues/27409 * nixos/varnish: add support for modules (services.varnish.extraModules) * varnish-modules: init at 0.10.2 * varnish-geoip: init at 1.0.2 * varnish-rtstatus: init at 1.2.0 * varnish-digest: init at 1.0.1 * added services.varnish.extraCommandLine option
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/services/web-servers/varnish/default.nix | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/nixos/modules/services/web-servers/varnish/default.nix b/nixos/modules/services/web-servers/varnish/default.nix index 5433db3b91c8..c3bc065d4651 100644 --- a/nixos/modules/services/web-servers/varnish/default.nix +++ b/nixos/modules/services/web-servers/varnish/default.nix @@ -7,14 +7,10 @@ with lib; { options = { services.varnish = { - enable = mkOption { - default = false; - description = " - Enable the Varnish Server. - "; - }; + enable = mkEnableOption "Varnish Server"; http_address = mkOption { + type = types.str; default = "*:6081"; description = " HTTP listen address and port. @@ -22,17 +18,37 @@ with lib; }; config = mkOption { + type = types.lines; description = " Verbatim default.vcl configuration. "; }; stateDir = mkOption { + type = types.path; default = "/var/spool/varnish/${config.networking.hostName}"; description = " Directory holding all state for Varnish to run. "; }; + + extraModules = mkOption { + type = types.listOf types.package; + default = []; + example = literalExample "[ pkgs.varnish-geoip ]"; + description = " + Varnish modules (except 'std'). + "; + }; + + extraCommandLine = mkOption { + type = types.str; + default = ""; + example = "-s malloc,256M"; + description = " + Command line switches for varnishd (run 'varnishd -?' to get list of options) + "; + }; }; }; @@ -42,6 +58,7 @@ with lib; systemd.services.varnish = { description = "Varnish"; wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; preStart = '' mkdir -p ${cfg.stateDir} chown -R varnish:varnish ${cfg.stateDir} @@ -49,8 +66,19 @@ with lib; postStop = '' rm -rf ${cfg.stateDir} ''; - 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"; + 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"; + Restart = "always"; + RestartSec = "5s"; + User = "varnish"; + Group = "varnish"; + AmbientCapabilities = "cap_net_bind_service"; + NoNewPrivileges = true; + LimitNOFILE = 131072; + }; }; environment.systemPackages = [ pkgs.varnish ]; |