1{ config, lib, pkgs, ... }:
2
3with lib;
4
5let
6
7 cfg = config.services.munge;
8
9in
10
11{
12
13 ###### interface
14
15 options = {
16
17 services.munge = {
18 enable = mkEnableOption "munge service";
19
20 password = mkOption {
21 default = "/etc/munge/munge.key";
22 type = types.string;
23 description = ''
24 The path to a daemon's secret key.
25 '';
26 };
27
28 };
29
30 };
31
32 ###### implementation
33
34 config = mkIf cfg.enable {
35
36 environment.systemPackages = [ pkgs.munge ];
37
38 systemd.services.munged = {
39 wantedBy = [ "multi-user.target" ];
40 after = [ "network.target" ];
41
42 path = [ pkgs.munge pkgs.coreutils ];
43
44 preStart = ''
45 chmod 0700 ${cfg.password}
46 mkdir -p /var/lib/munge -m 0711
47 mkdir -p /var/log/munge -m 0700
48 mkdir -p /run/munge -m 0755
49 '';
50
51 serviceConfig = {
52 ExecStart = "${pkgs.munge}/bin/munged --syslog --key-file ${cfg.password}";
53 PIDFile = "/run/munge/munged.pid";
54 ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
55 };
56
57 };
58
59 };
60
61}