diff --git a/lib/modules/rclone.nix b/lib/modules/rclone.nix
index 30fa9f9..c512886 100644
--- a/lib/modules/rclone.nix
+++ b/lib/modules/rclone.nix
@@ -17,6 +17,7 @@ let
 
   mkProvider =
     {
+        displayName ? "Custom",
         secretsScript ? "",
         environment ? { },
         config ? { },
@@ -24,7 +25,8 @@ let
         defaultOptions ? { }
     }:
       { ... }: {
-      inherit
+        inherit
+          displayName
           secretsScript
           environment
           config
@@ -38,7 +40,7 @@ let
     manual = mkProvider {};
   };
 
-  syncType = lib.types.submodule (
+  mkSyncType = provider: lib.types.submodule (
     { config, name, ... }: {
       options = {
         type = lib.mkOption {
@@ -55,11 +57,8 @@ let
 
         providerOptions = lib.mkOption {
           description = "The options of the sync";
-          type = lib.types.oneOf [
-            (builtins.map
-              (provider: provider.options)
-              syncProviders)
-          ];
+          type = lib.types.submodule { inherit (provider config) options; };
+          default = {};
         };
 
         systemdDependencies = mkSystemdDependencyOption {
@@ -105,11 +104,12 @@ in {
         default = {};
       };
 
-      configs = lib.mkOption {
-        type = lib.types.attrsOf syncType;
-        description = "The synchronizations to set up.";
-        default = {};
-      };
+      configs = (builtins.mapAttrs
+        (name: provider: lib.mkOption {
+          type = lib.types.attrsOf (mkSyncType provider);
+          description = "The ${(provider config).displayName} synchronizations to set up.";
+        })
+        syncProviders);
     };
   };
 
@@ -148,36 +148,39 @@ in {
         };
       } // (
         lib.attrsets.concatMapAttrs
-        (name: sync:
-          let
-            serviceName = "rclone-sync-${name}";
-          in {
-            ${serviceName} = {
-              Unit = {
-                Description = "${sync.type}";
-              };
+        (providerName: configs:
+          lib.attrsets.concatMapAttrs
+          (name: sync:
+            let
+              serviceName = "rclone-${providerName}-sync-${name}";
+            in {
+              ${serviceName} = {
+                Unit = {
+                  Description = "rclone sync service for ${name} at using ${providerName}";
+                };
 
-              Service = {
-                Environment = lib.mapAttrsToList
-                  (key: val: (lib.escapeShellArg "${key}=${val}"))
-                  sync.environment;
+                Service = {
+                  Environment = lib.mapAttrsToList
+                    (key: val: (lib.escapeShellArg "${key}=${val}"))
+                    sync.environment;
 
-                ExecStart =
-                  let
-                    script = pkgs.writeShellScriptBin serviceName ''
-                      ${sync.secretsScript}
-                      bash -c echo hello world
-                    '';
-                  in
-                    (lib.getExe script);
-              };
+                  ExecStart =
+                    let
+                      script = pkgs.writeShellScriptBin serviceName ''
+                        ${sync.secretsScript}
+                        bash -c echo hello world
+                      '';
+                    in
+                      (lib.getExe script);
+                };
 
-              Install = {
-                WantedBy = lib.optional sync.autoStart "${targetName}.target";
-                After = builtins.concatLists(builtins.attrValues sync.systemdDependencies);
+                Install = {
+                  WantedBy = lib.optional sync.autoStart "${targetName}.target";
+                  After = builtins.concatLists(builtins.attrValues sync.systemdDependencies);
+                };
               };
-            };
-          })
+            })
+            configs)
         cfg.configs);
 
       targets.${targetName} = {