From ceccdea8598fc0b8836a28d49a35f471f1c5d6a3 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 14 May 2024 13:18:38 +0200 Subject: [PATCH] Declare options for rclone syncs --- lib/modules/rclone.nix | 49 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) 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 = {}; + }; }; };