dput-ng: fix eval (#364540)
[NixPkgs.git] / nixos / modules / services / security / munge.nix
blob16481f116532e5bb0d557e056d4d3f38e065a00d
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
8 with lib;
10 let
12   cfg = config.services.munge;
18   ###### interface
20   options = {
22     services.munge = {
23       enable = mkEnableOption "munge service";
25       password = mkOption {
26         default = "/etc/munge/munge.key";
27         type = types.path;
28         description = ''
29           The path to a daemon's secret key.
30         '';
31       };
33     };
35   };
37   ###### implementation
39   config = mkIf cfg.enable {
41     environment.systemPackages = [ pkgs.munge ];
43     users.users.munge = {
44       description = "Munge daemon user";
45       isSystemUser = true;
46       group = "munge";
47     };
49     users.groups.munge = { };
51     systemd.services.munged = {
52       wantedBy = [ "multi-user.target" ];
53       wants = [
54         "network-online.target"
55         "time-sync.target"
56       ];
57       after = [
58         "network-online.target"
59         "time-sync.target"
60       ];
62       path = [
63         pkgs.munge
64         pkgs.coreutils
65       ];
67       serviceConfig = {
68         ExecStartPre = "+${pkgs.coreutils}/bin/chmod 0400 ${cfg.password}";
69         ExecStart = "${pkgs.munge}/bin/munged --foreground --key-file ${cfg.password}";
70         User = "munge";
71         Group = "munge";
72         StateDirectory = "munge";
73         StateDirectoryMode = "0711";
74         Restart = "on-failure";
75         RuntimeDirectory = "munge";
76       };
78     };
80   };