python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / networking / prayer.nix
blob197aa8a6f44807d430d0c961b186be455d635e61
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   inherit (pkgs) prayer;
9   cfg = config.services.prayer;
11   stateDir = "/var/lib/prayer";
13   prayerUser = "prayer";
14   prayerGroup = "prayer";
16   prayerExtraCfg = pkgs.writeText "extraprayer.cf" ''
17     prefix = "${prayer}"
18     var_prefix = "${stateDir}"
19     prayer_user = "${prayerUser}"
20     prayer_group = "${prayerGroup}"
21     sendmail_path = "/run/wrappers/bin/sendmail"
23     use_http_port ${cfg.port}
25     ${cfg.extraConfig}
26   '';
28   prayerCfg = pkgs.runCommand "prayer.cf" { preferLocalBuild = true; } ''
29     # We have to remove the http_port 80, or it will start a server there
30     cat ${prayer}/etc/prayer.cf | grep -v http_port > $out
31     cat ${prayerExtraCfg} >> $out
32   '';
38   ###### interface
40   options = {
42     services.prayer = {
44       enable = mkEnableOption (lib.mdDoc "the prayer webmail http server");
46       port = mkOption {
47         default = 2080;
48         type = types.port;
49         description = lib.mdDoc ''
50           Port the prayer http server is listening to.
51         '';
52       };
54       extraConfig = mkOption {
55         type = types.lines;
56         default = "" ;
57         description = lib.mdDoc ''
58           Extra configuration. Contents will be added verbatim to the configuration file.
59         '';
60       };
61     };
63   };
66   ###### implementation
68   config = mkIf config.services.prayer.enable {
69     environment.systemPackages = [ prayer ];
71     users.users.${prayerUser} =
72       { uid = config.ids.uids.prayer;
73         description = "Prayer daemon user";
74         home = stateDir;
75       };
77     users.groups.${prayerGroup} =
78       { gid = config.ids.gids.prayer; };
80     systemd.services.prayer = {
81       wantedBy = [ "multi-user.target" ];
82       serviceConfig.Type = "forking";
83       preStart = ''
84         mkdir -m 0755 -p ${stateDir}
85         chown ${prayerUser}:${prayerGroup} ${stateDir}
86       '';
87       script = "${prayer}/sbin/prayer --config-file=${prayerCfg}";
88     };
89   };