at 15.09-beta 2.0 kB view raw
1{ config, lib, pkgs, ... }: 2 3with lib; 4 5let 6 7 inherit (pkgs) prayer; 8 9 cfg = config.services.prayer; 10 11 stateDir = "/var/lib/prayer"; 12 13 prayerUser = "prayer"; 14 prayerGroup = "prayer"; 15 16 prayerExtraCfg = pkgs.writeText "extraprayer.cf" '' 17 prefix = "${prayer}" 18 var_prefix = "${stateDir}" 19 prayer_user = "${prayerUser}" 20 prayer_group = "${prayerGroup}" 21 sendmail_path = "/var/setuid-wrappers/sendmail" 22 23 use_http_port ${cfg.port} 24 25 ${cfg.extraConfig} 26 ''; 27 28 prayerCfg = pkgs.runCommand "prayer.cf" { } '' 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 ''; 33 34in 35 36{ 37 38 ###### interface 39 40 options = { 41 42 services.prayer = { 43 44 enable = mkOption { 45 default = false; 46 description = '' 47 Whether to run the prayer webmail http server. 48 ''; 49 }; 50 51 port = mkOption { 52 default = "2080"; 53 description = '' 54 Port the prayer http server is listening to. 55 ''; 56 }; 57 58 extraConfig = mkOption { 59 default = "" ; 60 description = '' 61 Extra configuration. Contents will be added verbatim to the configuration file. 62 ''; 63 }; 64 }; 65 66 }; 67 68 69 ###### implementation 70 71 config = mkIf config.services.prayer.enable { 72 environment.systemPackages = [ prayer ]; 73 74 users.extraUsers = singleton 75 { name = prayerUser; 76 uid = config.ids.uids.prayer; 77 description = "Prayer daemon user"; 78 home = stateDir; 79 }; 80 81 users.extraGroups = singleton 82 { name = prayerGroup; 83 gid = config.ids.gids.prayer; 84 }; 85 86 jobs.prayer = 87 { name = "prayer"; 88 89 startOn = "startup"; 90 91 preStart = 92 '' 93 mkdir -m 0755 -p ${stateDir} 94 chown ${prayerUser}.${prayerGroup} ${stateDir} 95 ''; 96 97 daemonType = "daemon"; 98 99 exec = "${prayer}/sbin/prayer --config-file=${prayerCfg}"; 100 }; 101 }; 102 103}