42 lines
1 KiB
Nix
42 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}"
|
||
|
];
|
||
|
};
|
||
|
}
|