forked from M-Labs/it-infra
65 lines
2.5 KiB
Nix
65 lines
2.5 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
with lib;
|
|
let
|
|
excludePaths = [
|
|
"/var/lib/gitea/repositories/*/*.git/archives"
|
|
"/var/lib/gitea/data/repo-archive"
|
|
"/var/lib/gitea/data/indexers"
|
|
"/var/vmail/m-labs.hk/js"
|
|
"/var/lib/afws/.cache"
|
|
"/var/lib/mattermost/data/2019*"
|
|
"/var/lib/mattermost/data/2020*"
|
|
"/var/lib/mattermost/data/2021*"
|
|
"/var/lib/mattermost/data/2022*"
|
|
"/var/lib/mattermost/data/2023*"
|
|
];
|
|
makeBackup = pkgs.writeScript "make-backup" ''
|
|
#!${pkgs.bash}/bin/bash -p
|
|
|
|
set -e
|
|
umask 0077
|
|
|
|
DBDUMPDIR=`mktemp -d`
|
|
trap "rm -rf $DBDUMPDIR" EXIT
|
|
cd $DBDUMPDIR
|
|
|
|
${config.services.mysql.package}/bin/mysqldump --user=root --single-transaction flarum > flarum.sql
|
|
${config.services.postgresql.package}/bin/pg_dump mattermost > mattermost.sql
|
|
${config.services.postgresql.package}/bin/pg_dump rt5 > rt.sql
|
|
${config.services.postgresql.package}/bin/pg_dump gitea > gitea.sql
|
|
|
|
exec 6< /etc/nixos/secret/backup-passphrase
|
|
${pkgs.gnutar}/bin/tar cf - ${lib.concatMapStringsSep " " (p: "--exclude \"${p}\"") excludePaths} /etc/nixos /var/vmail /var/lib/hedgedoc /var/lib/gitea /var/lib/afws /var/lib/mattermost/data /var/www/193thz flarum.sql mattermost.sql rt.sql gitea.sql | \
|
|
${pkgs.bzip2}/bin/bzip2 | \
|
|
${pkgs.gnupg}/bin/gpg --symmetric --batch --passphrase-fd 6
|
|
'';
|
|
cfg = config.services.mlabs-backup;
|
|
in
|
|
{
|
|
options.services.mlabs-backup = {
|
|
enable = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Enable backups";
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
users.extraGroups.backupdl = { };
|
|
users.extraUsers.backupdl = {
|
|
isNormalUser = true;
|
|
extraGroups = ["backupdl" "nextcloud"];
|
|
openssh.authorizedKeys.keys = [
|
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCbH+l0FIBTPdUKOS9H5OOT5ro/nljKLsiCTzTzublCScdPPmCNy27ORbLgNHX5Ughlug5wr2rAIU9AexV+L71V5MeVHUWDfKgRsNIpUTtY6wpJkAP7r1ipk2kTWc/sxhrxyPea62cohmy1dOeLlwXO6U8FnsiZfYKmgjZ8wuTo6ixDB8krXsAZ8VY/bj5WFcXqeW8GF1Qjpel7HgpCpj3HIUyC63uwIyUoYe+cgnhjzNLbRYdU9Yx2iqcUCwEUX2cMdz5VX+xbLkL8CWcuiMFg6TFo+CUPFtuA/kVzHcZ4Pa3BiilL3rf7oXlIXGN12JVsN+caX7j2weVqm2b5u5eVsyDxiLx1KA37ukq92CYAAdOuKE+saMPsLuOn+Qd9B6D5oYnYgsWg460uEGgwczwOTXLAZTT5wrwRaKIE+ezKqtRP+Tz7l2IEixulyj1MUR+XpSwECZXiFJx5DGofwzxcd2kWnNOPBReDkHv0At5ZLNIrLuxFMz2L6UXbqvHwEu8= backupdl@minipc"
|
|
];
|
|
};
|
|
security.wrappers.mlabs-backup = {
|
|
source = makeBackup;
|
|
setuid = true;
|
|
owner = "root";
|
|
group = "backupdl";
|
|
permissions = "g+x";
|
|
};
|
|
};
|
|
}
|