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 = {}; + }; }; };