clan-core/nixosModules/clanCore/backups.nix

70 lines
1.9 KiB
Nix
Raw Normal View History

{ lib, ... }:
{
options.clanCore.state = lib.mkOption {
default = { };
type = lib.types.attrsOf
2023-12-04 16:05:37 +00:00
(lib.types.submodule ({ ... }: {
options = {
2023-12-04 16:05:37 +00:00
folders = lib.mkOption {
type = lib.types.listOf lib.types.str;
description = ''
Folder where state resides in
'';
};
preRestoreScript = lib.mkOption {
type = lib.types.str;
default = ":";
description = ''
script to run before restoring the state dir from a backup
'';
};
postRestoreScript = lib.mkOption {
2023-12-04 16:05:37 +00:00
type = lib.types.str;
default = ":";
description = ''
script to restore the service after the state dir was restored from a backup
'';
};
};
}));
};
options.clanCore.backups = {
providers = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule ({ name, ... }: {
options = {
name = lib.mkOption {
type = lib.types.str;
default = name;
description = ''
Name of the backup provider
'';
};
list = lib.mkOption {
type = lib.types.str;
description = ''
script to list backups
'';
};
2023-12-04 16:05:37 +00:00
restore = lib.mkOption {
type = lib.types.str;
description = ''
2023-12-04 16:05:37 +00:00
script to restore a backup
should take an optional service name as argument
'';
};
start = lib.mkOption {
type = lib.types.str;
description = ''
script to start a backup
'';
};
};
}));
2023-12-06 16:12:38 +00:00
default = { };
description = ''
Configured backup providers which are used by this machine
'';
};
};
}