2023-10-04 15:40:28 +08:00
|
|
|
inputs:
|
|
|
|
{
|
2023-10-04 15:42:34 +08:00
|
|
|
options.nixos.services.nextcloud = let inherit (inputs.lib) mkOption types; in
|
2023-10-04 15:40:28 +08:00
|
|
|
{
|
|
|
|
enable = mkOption { type = types.bool; default = true; };
|
|
|
|
hostname = mkOption { type = types.str; default = "nextcloud.chn.moe"; };
|
|
|
|
};
|
|
|
|
config =
|
|
|
|
let
|
2023-10-04 15:42:34 +08:00
|
|
|
inherit (inputs.config.nixos.services) nextcloud;
|
2023-10-04 15:40:28 +08:00
|
|
|
inherit (inputs.localLib) attrsToList;
|
|
|
|
inherit (inputs.lib) mkIf mkMerge;
|
|
|
|
inherit (builtins) map listToAttrs toString replaceStrings filter toJSON;
|
2023-10-04 15:42:34 +08:00
|
|
|
in mkIf nextcloud.enable
|
2023-10-04 15:40:28 +08:00
|
|
|
{
|
|
|
|
services.nextcloud =
|
|
|
|
{
|
|
|
|
enable = true;
|
2023-10-04 15:42:34 +08:00
|
|
|
hostName = nextcloud.hostname;
|
2023-10-04 15:40:28 +08:00
|
|
|
appstoreEnable = false;
|
|
|
|
https = true;
|
|
|
|
package = inputs.pkgs.nextcloud27;
|
|
|
|
maxUploadSize = "10G";
|
|
|
|
config =
|
|
|
|
{
|
|
|
|
dbtype = "pgsql";
|
|
|
|
dbpassFile = inputs.config.sops.secrets."nextcloud/postgresql".path;
|
|
|
|
dbport = 5432;
|
|
|
|
adminuser = "admin";
|
|
|
|
adminpassFile = inputs.config.sops.secrets."nextcloud/admin".path;
|
|
|
|
overwriteProtocol = "https";
|
|
|
|
defaultPhoneRegion = "CN";
|
|
|
|
};
|
|
|
|
configureRedis = true;
|
|
|
|
secretFile = inputs.config.sops.templates."nextcloud/secret".path;
|
|
|
|
};
|
|
|
|
nixos.services =
|
|
|
|
{
|
|
|
|
postgresql = { enable = true; instances.nextcloud = {}; };
|
|
|
|
redis.instances.nextcloud.port = 3499;
|
|
|
|
};
|
|
|
|
sops =
|
|
|
|
{
|
|
|
|
templates."nextcloud/secret".content = toJSON
|
|
|
|
{ redis.password = inputs.config.sops.placeholder."redis/nextcloud"; };
|
|
|
|
secrets =
|
|
|
|
{
|
|
|
|
"nextcloud/postgresql" = { key = "postgresql/nextcloud"; owner = inputs.config.users.users.nextcloud.name; };
|
|
|
|
"nextcloud/admin".owner = inputs.config.users.users.nextcloud.name;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|