diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-10-10 13:28:20 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-10-10 13:28:20 +0200 |
commit | 5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010 (patch) | |
tree | a6c0f605be6de3f372ae69905b331f9f75452da7 /nixos/modules/services/backup/mysql-backup.nix | |
parent | 6070bc016bd2fd945b04347e25cfd3738622d2ac (diff) | |
download | nixpkgs-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar nixpkgs-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.gz nixpkgs-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.bz2 nixpkgs-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.lz nixpkgs-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.xz nixpkgs-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.tar.zst nixpkgs-5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010.zip |
Move all of NixOS to nixos/ in preparation of the repository merge
Diffstat (limited to 'nixos/modules/services/backup/mysql-backup.nix')
-rw-r--r-- | nixos/modules/services/backup/mysql-backup.nix | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/nixos/modules/services/backup/mysql-backup.nix b/nixos/modules/services/backup/mysql-backup.nix new file mode 100644 index 00000000000..3ff9978fbb9 --- /dev/null +++ b/nixos/modules/services/backup/mysql-backup.nix @@ -0,0 +1,81 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + + inherit (pkgs) mysql gzip; + + cfg = config.services.mysqlBackup ; + location = cfg.location ; + mysqlBackupCron = db : '' + ${cfg.period} ${cfg.user} ${mysql}/bin/mysqldump ${if cfg.singleTransaction then "--single-transaction" else ""} ${db} | ${gzip}/bin/gzip -c > ${location}/${db}.gz + ''; + +in + +{ + options = { + + services.mysqlBackup = { + + enable = mkOption { + default = false; + description = '' + Whether to enable MySQL backups. + ''; + }; + + period = mkOption { + default = "15 01 * * *"; + description = '' + This option defines (in the format used by cron) when the + databases should be dumped. + The default is to update at 01:15 (at night) every day. + ''; + }; + + user = mkOption { + default = "mysql"; + description = '' + User to be used to perform backup. + ''; + }; + + databases = mkOption { + default = []; + description = '' + List of database names to dump. + ''; + }; + + location = mkOption { + default = "/var/backup/mysql"; + description = '' + Location to put the gzipped MySQL database dumps. + ''; + }; + + singleTransaction = mkOption { + default = false; + description = '' + Whether to create database dump in a single transaction + ''; + }; + }; + + }; + + config = mkIf config.services.mysqlBackup.enable { + + services.cron.systemCronJobs = map mysqlBackupCron config.services.mysqlBackup.databases; + + system.activationScripts.mysqlBackup = stringAfter [ "stdio" "users" ] + '' + mkdir -m 0700 -p ${config.services.mysqlBackup.location} + chown ${config.services.mysqlBackup.user} ${config.services.mysqlBackup.location} + ''; + + }; + +} |