args@{ config, lib, ... }: { options.aether = { # Referenced general options inherit (import ../options.nix args) domain https acmeEmail; # Module-specific options forgejo = { subdomain = lib.mkOption { type = lib.types.nullOr lib.types.str; default = "git"; description = '' The subdomain to host the Forgejo instance under. If null, then Forgejo is hosted at the domain itself. ''; }; user = lib.mkOption { type = lib.types.str; default = "git"; description = '' The user to run Forgejo with. ''; }; createUser = lib.mkOption { type = lib.types.bool; default = true; description = '' Whether to create the Forgejo user automatically. ''; }; templates = lib.mkOption { type = lib.types.nullOr lib.types.path; default = null; description = '' A directory of templates for customizing Forgejo's appearance. ''; }; }; }; config.assertions = lib.mkIf config.aether.https [ { assertion = !(builtins.isNull config.aether.acmeEmail); message = "HTTPS support requires providing a contact email"; } ]; }