args@{ config, lib, pkgs, ... }: { imports = [ ../options.nix ]; options.aether = { streams = { # INTERNAL _internal.streams-src = lib.mkOption { type = lib.types.pathInStore; description = '' The source repository of (streams). ''; }; _internal.vendorHash = lib.mkOption { type = lib.types.str; description = '' The vendor hash to use when finding PHP dependencies. ''; }; # OPTIONS package = lib.mkOption { type = lib.types.package; default = pkgs.callPackage ./package.nix { src = config.aether.streams._internal.streams-src; vendorHash = config.aether.streams._internal.vendorHash; inherit (config.aether.streams) addonRepos themeRepos; }; description = '' The (streams) package to use. The derivation must be built in a precise way to be compatible with this module; see the package.nix file for details. ''; }; subdomain = lib.mkOption { type = lib.types.nullOr lib.types.str; default = "streams"; description = '' The subdomain to host the (streams) instance under. If null, then (streams) is hosted at the domain itself. ''; }; user = lib.mkOption { type = lib.types.str; default = "streams"; description = '' The user to run (streams) with. ''; }; createUser = lib.mkOption { type = lib.types.bool; default = true; description = '' Whether to create the (streams) user automatically. ''; }; addonRepos = lib.mkOption { type = lib.types.listOf lib.types.pathInStore; default = []; defaultText = "[ ]"; description = '' A list of repositories containing addons. The official addon repository is provided by default. ''; }; themeRepos = lib.mkOption { type = lib.types.listOf lib.types.pathInStore; default = []; description = '' A list of repositories containing themes. ''; }; }; }; config.assertions = lib.mkIf config.aether.https [ { assertion = !(builtins.isNull config.aether.acmeEmail); message = "HTTPS support requires providing a contact email"; } ]; }