Cron

NixOS generally uses systemd which provides “Timers” as a replacement for cron. However, for your convenience, regular cron is available on NixOS machines.

Note

User crontabs are not managed within the NixOS configuration model: there is no versioning and no atomic loading. Use systemd timers instead, if you can.

Installing user crontabs

You can edit a user’s crontab with the regular crontab command. See crontab(1) for details.

Environment

Cron jobs are executed with a rather minimal environment. The default is something like:

HOME=/home/user
LOGNAME=user
PATH=/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin
SHELL=/bin/sh
USER=user

Often, this set of environment variables is not sufficient. To get a full environment similar to the one present in interactive sessions, prefix your cronjob with source /etc/profile;, e.g.:

* * * * * source /etc/profile; complicated_command

There is also the possibility to set custom environment variables at the top of a user crontab. See crontab(5) for details.

We advise strongly to include a line like

MAILTO=mail@address

into the top section to get error mails delivered to an address where they are actually read and acted upon.