at 15.09-beta 1.1 kB view raw
1{pkgs, config, lib, ...}: 2 3let 4 5 inherit (lib) mkOption mkIf singleton; 6 7 inherit (pkgs) uptimed; 8 9 stateDir = "/var/spool/uptimed"; 10 11 uptimedUser = "uptimed"; 12 13in 14 15{ 16 17 ###### interface 18 19 options = { 20 21 services.uptimed = { 22 23 enable = mkOption { 24 default = false; 25 description = '' 26 Uptimed allows you to track your highest uptimes. 27 ''; 28 }; 29 30 }; 31 32 }; 33 34 35 ###### implementation 36 37 config = mkIf config.services.uptimed.enable { 38 39 environment.systemPackages = [ uptimed ]; 40 41 users.extraUsers = singleton 42 { name = uptimedUser; 43 uid = config.ids.uids.uptimed; 44 description = "Uptimed daemon user"; 45 home = stateDir; 46 }; 47 48 jobs.uptimed = 49 { description = "Uptimed daemon"; 50 51 startOn = "startup"; 52 53 preStart = 54 '' 55 mkdir -m 0755 -p ${stateDir} 56 chown ${uptimedUser} ${stateDir} 57 58 if ! test -f ${stateDir}/bootid ; then 59 ${uptimed}/sbin/uptimed -b 60 fi 61 ''; 62 63 exec = "${uptimed}/sbin/uptimed"; 64 }; 65 66 }; 67 68}