diff --git a/lib/modules/rclone.nix b/lib/modules/rclone.nix
index 8499a74..132ed93 100644
--- a/lib/modules/rclone.nix
+++ b/lib/modules/rclone.nix
@@ -1,7 +1,54 @@
-{ config, lib, pkgs, ... }: {
+{ config, lib, pkgs, ... }:
+let
+  nextcloud = "nextcloud";
+  proton = "proton";
+  syncType = lib.types.submodule (
+    { name, ... }: {
+      options = {
+        type = lib.mkOption {
+          type = lib.types.enum [
+            nextcloud
+            proton
+          ];
+        };
+
+        autoStart = lib.mkOption {
+          type = lib.types.bool;
+          description = "Whether to start this sync automatically.";
+          default = true;
+        };
+
+        systemdDependencies = lib.mkOption {
+          type = lib.types.attrsOf lib.types.str;
+          description = "The systemd services this sync depends on.";
+          example = {
+            secrets = "sops-nix.service";
+          };
+        };
+
+        environment = lib.mkOption {
+          type = lib.types.attrsOf lib.types.envVar;
+          description = "The environment variables to pass to the service.";
+          default = {};
+        };
+
+        preLaunch = lib.mkOption {
+          type = lib.types.lines;
+          description = "A set of statements to run before launching the sync.";
+          default = [];
+        };
+      };
+    });
+in {
   options = {
     programs.rclone = {
       enable = lib.mkEnableOption "rclone";
+
+      configs = lib.mkOption {
+        type = lib.types.attrsOf syncType;
+        description = "The synchronizations to set up.";
+        default = {};
+      };
     };
   };