{ lib, ... }: { imports = [ ./state.nix ]; 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 ''; }; restore = lib.mkOption { type = lib.types.str; description = '' script to restore a backup should take an optional service name as argument gets ARCHIVE_ID, LOCATION, JOB and FOLDERS as environment variables ARCHIVE_ID is the id of the backup LOCATION is the remote identifier of the backup JOB is the job name of the backup FOLDERS is a colon separated list of folders to restore ''; }; create = lib.mkOption { type = lib.types.str; description = '' script to start a backup ''; }; }; })); default = { }; description = '' Configured backup providers which are used by this machine ''; }; }; }