vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / vnstat.nix
blob5e19c399568d80409b8b730910634ed17dad81b9
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.services.vnstat;
7 in {
8   options.services.vnstat = {
9     enable = mkEnableOption "update of network usage statistics via vnstatd";
10   };
12   config = mkIf cfg.enable {
14     environment.systemPackages = [ pkgs.vnstat ];
16     users = {
17       groups.vnstatd = {};
19       users.vnstatd = {
20         isSystemUser = true;
21         group = "vnstatd";
22         description = "vnstat daemon user";
23       };
24     };
26     systemd.services.vnstat = {
27       description = "vnStat network traffic monitor";
28       path = [ pkgs.coreutils ];
29       after = [ "network.target" ];
30       wantedBy = [ "multi-user.target" ];
31       documentation = [
32         "man:vnstatd(1)"
33         "man:vnstat(1)"
34         "man:vnstat.conf(5)"
35       ];
36       serviceConfig = {
37         ExecStart = "${pkgs.vnstat}/bin/vnstatd -n";
38         ExecReload = "${pkgs.procps}/bin/kill -HUP $MAINPID";
40         # Hardening (from upstream example service)
41         ProtectSystem = "strict";
42         StateDirectory = "vnstat";
43         PrivateDevices = true;
44         ProtectKernelTunables = true;
45         ProtectControlGroups = true;
46         ProtectHome = true;
47         ProtectKernelModules = true;
48         PrivateTmp = true;
49         MemoryDenyWriteExecute = true;
50         RestrictRealtime = true;
51         RestrictNamespaces = true;
53         User = "vnstatd";
54         Group = "vnstatd";
55       };
56     };
57   };
59   meta.maintainers = [ maintainers.evils ];