nixos/hosts/architect/nextcloud.nix
2023-12-19 00:36:05 +01:00

85 lines
1.7 KiB
Nix

{ pkgs, config, lib, ... }:
let
domain = "cloud.giugl.io";
redis_port = 6379;
utilities = import ./utilities.nix { inherit lib config; };
inherit (utilities) architectInterfaceAddress;
in
{
environment.systemPackages = with pkgs; [
nodejs-18_x
libtensorflow
ffmpeg
];
services = {
nginx.virtualHosts.${domain} = {
forceSSL = true;
enableACME = true;
extraConfig = ''
aio threads;
directio 1M;
output_buffers 3 1M;
sendfile on;
sendfile_max_chunk 0;
autoindex on;
'';
};
mysql = {
enable = true;
package = pkgs.mariadb_1011;
};
redis = {
vmOverCommit = true;
servers."nextcloud" = {
enable = true;
port = redis_port;
};
};
nextcloud = {
enable = true;
hostName = domain;
https = true;
package = pkgs.nextcloud28;
datadir = "/services/nextcloud";
configureRedis = true;
caching = {
redis = true;
};
autoUpdateApps.enable = true;
autoUpdateApps.startAt = "05:00:00";
maxUploadSize = "50G";
config = {
overwriteProtocol = "https";
dbtype = "mysql";
dbuser = "nextcloud";
dbhost = "localhost";
dbname = "nextcloud";
dbpassFile = "/secrets/nextcloud/dbpass.txt";
adminpassFile = "/secrets/nextcloud/dbpass.txt";
};
};
};
systemd.services."nextcloud-setup" = {
requires = [ "mysql.service" ];
after = [ "mysql.service" ];
};
networking.extraHosts = ''
${architectInterfaceAddress "lan"} ${domain}
${architectInterfaceAddress "tailscale"} ${domain}
'';
}