egirls-nixos/backup.nix
2024-12-19 22:25:03 -05:00

41 lines
1 KiB
Nix

{ config, pkgs, ... }:
let
user = "misskey-backup";
group = user;
# shell script file to be sourced. must have values "MISSKEY_BACKUP_BUCKET" "MISSKEY_BACKUP_PREFIX" and "S3CFG"
backupConfigFile = "/etc/misskey-backup";
backupScript = pkgs.writeShellApplication {
name = "misskey-backup";
runtimeInputs = with pkgs; [
gzip
config.services.postgresql.package
s3cmd
coreutils
];
extraShellCheckFlags = [ "-x" "/etc/misskey-backup" ];
text = ''
source "${backupConfigFile}"
pg_dump misskey | gzip | s3cmd put --config "$S3CFG" - "s3://$MISSKEY_BACKUP_BUCKET/$MISSKEY_BACKUP_PREFIX/misskey-pgdump-$(date --iso-8601).sql.gz"
'';
};
in {
users.users."${user}" = {
isSystemUser = true;
inherit group;
};
users.groups."${group}" = { };
services.postgresql.ensureUsers = [{ name = user; }];
services.cron = {
enable = true;
systemCronJobs = [
# run every monday at ass in the morning, EST"
"0 8 0 0 1 ${user} ${backupScript}"
];
};
}