2008-02-01 13:01:27 +01:00
|
|
|
{pkgs, config}:
|
2007-01-10 18:09:00 +01:00
|
|
|
|
2008-02-01 13:01:27 +01:00
|
|
|
let
|
|
|
|
|
2008-02-01 13:35:51 +01:00
|
|
|
# !!! This should be defined somewhere else.
|
|
|
|
locatedb = "/var/cache/locatedb";
|
|
|
|
|
|
|
|
updatedbCmd =
|
|
|
|
"${config.services.locate.period} root " +
|
|
|
|
"mkdir -m 0755 -p $(dirname ${locatedb}) && " +
|
|
|
|
"nice -n 19 ${pkgs.utillinux}/bin/ionice -c 3 " +
|
|
|
|
"updatedb --localuser=nobody --output=${locatedb} > /var/log/updatedb 2>&1";
|
|
|
|
|
|
|
|
|
|
|
|
# Put all the system cronjobs together.
|
|
|
|
systemCronJobs =
|
|
|
|
config.services.cron.systemCronJobs ++
|
|
|
|
pkgs.lib.optional config.services.locate.enable updatedbCmd;
|
2008-02-01 13:01:27 +01:00
|
|
|
|
|
|
|
systemCronJobsFile = pkgs.writeText "system-crontab" ''
|
|
|
|
SHELL=${pkgs.bash}/bin/sh
|
2008-02-01 13:35:51 +01:00
|
|
|
PATH=${pkgs.coreutils}/bin:${pkgs.findutils}/bin:${pkgs.gnused}/bin:${pkgs.su}/bin
|
2008-10-26 00:03:12 +02:00
|
|
|
MAILTO="${config.services.cron.mailto}"
|
2008-02-01 13:01:27 +01:00
|
|
|
${pkgs.lib.concatStrings (map (job: job + "\n") systemCronJobs)}
|
|
|
|
'';
|
|
|
|
|
|
|
|
in
|
|
|
|
|
2007-01-10 18:09:00 +01:00
|
|
|
{
|
|
|
|
name = "cron";
|
|
|
|
|
2008-02-01 13:01:27 +01:00
|
|
|
extraEtc = [
|
|
|
|
# The system-wide crontab.
|
|
|
|
{ source = systemCronJobsFile;
|
|
|
|
target = "crontab";
|
|
|
|
mode = "0600"; # Cron requires this.
|
|
|
|
}
|
|
|
|
];
|
2007-01-10 18:09:00 +01:00
|
|
|
|
2008-02-01 13:01:27 +01:00
|
|
|
job = ''
|
|
|
|
description "Cron daemon"
|
2007-01-10 18:09:00 +01:00
|
|
|
|
2008-02-01 13:01:27 +01:00
|
|
|
start on startup
|
|
|
|
stop on shutdown
|
|
|
|
|
2008-02-01 14:56:36 +01:00
|
|
|
# Needed to interpret times in the local timezone.
|
|
|
|
env TZ=${config.time.timeZone}
|
|
|
|
|
2008-02-01 13:01:27 +01:00
|
|
|
respawn ${pkgs.cron}/sbin/cron -n
|
|
|
|
'';
|
2007-01-10 18:09:00 +01:00
|
|
|
}
|