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/postgresql-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/postgresql-backup.nix')
-rw-r--r-- | nixos/modules/services/backup/postgresql-backup.nix | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/nixos/modules/services/backup/postgresql-backup.nix b/nixos/modules/services/backup/postgresql-backup.nix new file mode 100644 index 00000000000..e68ad794a96 --- /dev/null +++ b/nixos/modules/services/backup/postgresql-backup.nix @@ -0,0 +1,66 @@ +{ config, pkgs, ... }: + +with pkgs.lib; + +let + inherit (pkgs) postgresql gzip; + + location = config.services.postgresqlBackup.location ; + + postgresqlBackupCron = db: + '' + ${config.services.postgresqlBackup.period} root ${postgresql}/bin/pg_dump ${db} | ${gzip}/bin/gzip -c > ${location}/${db}.gz + ''; + +in + +{ + + options = { + + services.postgresqlBackup = { + + enable = mkOption { + default = false; + description = '' + Whether to enable PostgreSQL dumps. + ''; + }; + + 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. + ''; + }; + + databases = mkOption { + default = []; + description = '' + List of database names to dump. + ''; + }; + + location = mkOption { + default = "/var/backup/postgresql"; + description = '' + Location to put the gzipped PostgreSQL database dumps. + ''; + }; + }; + + }; + + config = mkIf config.services.postgresqlBackup.enable { + services.cron.systemCronJobs = map postgresqlBackupCron config.services.postgresqlBackup.databases; + + system.activationScripts.postgresqlBackup = stringAfter [ "stdio" "users" ] + '' + mkdir -m 0700 -p ${config.services.postgresqlBackup.location} + chown root ${config.services.postgresqlBackup.location} + ''; + }; + +} |