grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / security / munge.nix
blobe124f098bfbd360e8e0fc837fdc8d3ea06141847
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   cfg = config.services.munge;
9 in
13   ###### interface
15   options = {
17     services.munge = {
18       enable = mkEnableOption "munge service";
20       password = mkOption {
21         default = "/etc/munge/munge.key";
22         type = types.path;
23         description = ''
24           The path to a daemon's secret key.
25         '';
26       };
28     };
30   };
32   ###### implementation
34   config = mkIf cfg.enable {
36     environment.systemPackages = [ pkgs.munge ];
38     users.users.munge = {
39       description   = "Munge daemon user";
40       isSystemUser  = true;
41       group         = "munge";
42     };
44     users.groups.munge = {};
46     systemd.services.munged = {
47       wantedBy = [ "multi-user.target" ];
48       wants = [
49         "network-online.target"
50         "time-sync.target"
51       ];
52       after = [
53         "network-online.target"
54         "time-sync.target"
55       ];
57       path = [ pkgs.munge pkgs.coreutils ];
59       serviceConfig = {
60         ExecStartPre = "+${pkgs.coreutils}/bin/chmod 0400 ${cfg.password}";
61         ExecStart = "${pkgs.munge}/bin/munged --foreground --key-file ${cfg.password}";
62         User = "munge";
63         Group = "munge";
64         StateDirectory = "munge";
65         StateDirectoryMode = "0711";
66         Restart = "on-failure";
67         RuntimeDirectory = "munge";
68       };
70     };
72   };