This commit is contained in:
2025-12-20 21:32:55 +00:00
parent 60d89ca103
commit 49ba2163a7

View File

@@ -21,57 +21,75 @@ in {
description = "Path to the environment file containing S3 credentials and cipher passphrase"; description = "Path to the environment file containing S3 credentials and cipher passphrase";
}; };
s3 = { s3 = mkOption {
endpoint = mkOption { type = types.submodule {
type = types.str; options = {
default = "s3.eu-central-003.backblazeb2.com"; endpoint = mkOption {
description = "S3 endpoint URL"; type = types.str;
}; default = "s3.eu-central-003.backblazeb2.com";
description = "S3 endpoint URL";
};
bucket = mkOption { bucket = mkOption {
type = types.str; type = types.str;
description = "S3 bucket name"; description = "S3 bucket name";
}; };
region = mkOption { region = mkOption {
type = types.str; type = types.str;
default = "eu-central-003"; default = "eu-central-003";
description = "S3 region"; description = "S3 region";
}; };
path = mkOption { path = mkOption {
type = types.str; type = types.str;
default = "/backups"; default = "/backups";
description = "Path within the S3 bucket"; description = "Path within the S3 bucket";
};
};
}; };
default = {};
description = "S3 storage configuration";
}; };
retention = { retention = mkOption {
full = mkOption { type = types.submodule {
type = types.int; options = {
default = 7; full = mkOption {
description = "Number of full backups to retain"; type = types.int;
}; default = 7;
description = "Number of full backups to retain";
};
diff = mkOption { diff = mkOption {
type = types.int; type = types.int;
default = 7; default = 7;
description = "Number of differential backups to retain"; description = "Number of differential backups to retain";
};
};
}; };
default = {};
description = "Backup retention configuration";
}; };
compression = { compression = mkOption {
type = mkOption { type = types.submodule {
type = types.str; options = {
default = "zst"; type = mkOption {
description = "Compression algorithm (none, gz, lz4, zst)"; type = types.str;
}; default = "zst";
description = "Compression algorithm (none, gz, lz4, zst)";
};
level = mkOption { level = mkOption {
type = types.int; type = types.int;
default = 3; default = 3;
description = "Compression level"; description = "Compression level";
};
};
}; };
default = {};
description = "Compression configuration";
}; };
processMax = mkOption { processMax = mkOption {
@@ -80,18 +98,24 @@ in {
description = "Maximum number of processes for parallel operations"; description = "Maximum number of processes for parallel operations";
}; };
schedule = { schedule = mkOption {
full = mkOption { type = types.submodule {
type = types.str; options = {
default = "daily"; full = mkOption {
description = "OnCalendar expression for full backups"; type = types.str;
}; default = "daily";
description = "OnCalendar expression for full backups";
};
diff = mkOption { diff = mkOption {
type = types.str; type = types.str;
default = "hourly"; default = "hourly";
description = "OnCalendar expression for differential backups"; description = "OnCalendar expression for differential backups";
};
};
}; };
default = {};
description = "Backup schedule configuration";
}; };
}; };