From 9f62e1a6a57dc160fef8bea363369b6b0ac20a2e Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 1 Feb 2008 12:01:27 +0000 Subject: [PATCH] * Declarative specification of the system cron jobs. Ideally this would abstract over the Crontab syntax though. svn path=/nixos/trunk/; revision=10447 --- system/options.nix | 18 ++++++++++++++++++ upstart-jobs/cron.nix | 36 ++++++++++++++++++++++++++++-------- upstart-jobs/default.nix | 2 +- 3 files changed, 47 insertions(+), 9 deletions(-) diff --git a/system/options.nix b/system/options.nix index 1bb75e0d5a4..8f482de5ebf 100644 --- a/system/options.nix +++ b/system/options.nix @@ -528,6 +528,24 @@ }; + cron = { + + systemCronJobs = mkOption { + default = []; + example = [ + "* * * * * test ls -l / > /tmp/cronout 2>&1" + "* * * * * eelco echo Hello World > /home/eelco/cronout" + ]; + description = '' + A list of Cron jobs to be appended to the system-wide + crontab. See the manual page for crontab for the expected + format. + ''; + }; + + }; + + ttyBackgrounds = { enable = mkOption { diff --git a/upstart-jobs/cron.nix b/upstart-jobs/cron.nix index 289fee630eb..a7145f1d284 100644 --- a/upstart-jobs/cron.nix +++ b/upstart-jobs/cron.nix @@ -1,15 +1,35 @@ -{cron}: +{pkgs, config}: +let + + systemCronJobs = config.services.cron.systemCronJobs; + + systemCronJobsFile = pkgs.writeText "system-crontab" '' + SHELL=${pkgs.bash}/bin/sh + PATH=${pkgs.coreutils}/bin + MAILTO= + ${pkgs.lib.concatStrings (map (job: job + "\n") systemCronJobs)} + ''; + +in + { name = "cron"; - job = " -description \"Cron daemon\" + extraEtc = [ + # The system-wide crontab. + { source = systemCronJobsFile; + target = "crontab"; + mode = "0600"; # Cron requires this. + } + ]; -start on startup -stop on shutdown + job = '' + description "Cron daemon" -respawn ${cron}/sbin/cron -n - "; - + start on startup + stop on shutdown + + respawn ${pkgs.cron}/sbin/cron -n + ''; } diff --git a/upstart-jobs/default.nix b/upstart-jobs/default.nix index 017c1c3fda0..c2af3fff345 100644 --- a/upstart-jobs/default.nix +++ b/upstart-jobs/default.nix @@ -78,7 +78,7 @@ let # Cron daemon. (import ../upstart-jobs/cron.nix { - inherit (pkgs) cron; + inherit config pkgs; }) # Name service cache daemon.