{ lib, ... }: let inherit (lib) mkEnableOption mkOption types; syncType = types.submodule ( { ... }: { options = { dirName = mkOption { type = types.str; description = "The name of the directory to sync the remote files to."; }; cacheDuration = mkOption { type = types.nullOr types.str; description = "The amount of time to keep files in the cache."; default = null; }; }; } ); commonOptions = { enable = mkEnableOption "rclone"; }; userOptions = commonOptions // { configurations = mkOption { type = types.attrsOf syncType; description = "The configurations of the rclone mounts."; default = { }; }; }; in { options = { valhalla.linux = { programs.rclone = commonOptions; users = mkOption { type = types.attrsOf (types.submodule ( { ... }: { options = { programs.rclone = userOptions; }; } )); }; }; }; }