From e2b25f94347da698994a00120e79ed67f40b8f38 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 22 Jul 2015 15:12:47 +0200 Subject: [PATCH] Use environment.etc to manage /etc/crontab Otherwise, /etc/crontab won't be deleted when cron is disabled. --- nixos/modules/services/scheduling/cron.nix | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/nixos/modules/services/scheduling/cron.nix b/nixos/modules/services/scheduling/cron.nix index c81d2bdefa7..a92e8b65d2a 100644 --- a/nixos/modules/services/scheduling/cron.nix +++ b/nixos/modules/services/scheduling/cron.nix @@ -91,9 +91,7 @@ in config = mkMerge [ - { services.cron.enable = mkDefault (allFiles != []); - - } + { services.cron.enable = mkDefault (allFiles != []); } (mkIf (config.services.cron.enable && allFiles != []) { @@ -101,6 +99,17 @@ in environment.systemPackages = [ cronNixosPkg ]; + environment.etc.crontab = + { source = pkgs.runCommand "crontabs" { inherit allFiles; } + '' + touch $out + for i in $allFiles; do + cat "$i" >> $out + done + ''; + mode = "0600"; # Cron requires this. + }; + systemd.services.cron = { description = "Cron Daemon"; @@ -108,10 +117,6 @@ in preStart = '' - rm -f /etc/crontab - cat ${concatMapStrings (f: "\"${f}\" ") allFiles} > /etc/crontab - chmod 0600 /etc/crontab - mkdir -m 710 -p /var/cron # By default, allow all users to create a crontab. This