2023-05-12 22:05:10 +01:00
|
|
|
{ pkgs, config, lib, ... }:
|
2021-07-13 09:53:22 +01:00
|
|
|
|
2021-12-08 16:39:00 +00:00
|
|
|
let
|
|
|
|
domain = "cloud.giugl.io";
|
2022-10-28 12:32:49 +01:00
|
|
|
redis_port = 6379;
|
2023-05-12 22:05:10 +01:00
|
|
|
|
|
|
|
utilities = import ./utilities.nix { inherit lib config; };
|
|
|
|
inherit (utilities) architectInterfaceAddress;
|
2023-02-11 02:29:48 +00:00
|
|
|
in
|
|
|
|
{
|
2024-12-06 21:17:00 +00:00
|
|
|
age.secrets = {
|
|
|
|
nextcloud-admin = {
|
|
|
|
file = ../../secrets/nextcloud-admin.age;
|
|
|
|
owner = "nextcloud";
|
2024-12-09 10:36:10 +00:00
|
|
|
group ="nginx";
|
2024-12-06 21:17:00 +00:00
|
|
|
};
|
|
|
|
nextcloud-database = {
|
|
|
|
file = ../../secrets/nextcloud-database.age;
|
|
|
|
owner = "nextcloud";
|
2024-12-09 10:36:10 +00:00
|
|
|
group = "nginx";
|
2024-12-06 21:17:00 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-06-11 00:30:34 +01:00
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
nodejs-18_x
|
|
|
|
libtensorflow
|
|
|
|
ffmpeg
|
|
|
|
];
|
|
|
|
|
2021-07-13 09:53:22 +01:00
|
|
|
services = {
|
2023-05-12 22:05:10 +01:00
|
|
|
nginx.virtualHosts.${domain} = {
|
|
|
|
forceSSL = true;
|
|
|
|
enableACME = true;
|
2023-06-26 22:24:04 +01:00
|
|
|
extraConfig = ''
|
|
|
|
aio threads;
|
|
|
|
directio 1M;
|
|
|
|
output_buffers 3 1M;
|
|
|
|
|
|
|
|
sendfile on;
|
|
|
|
sendfile_max_chunk 0;
|
|
|
|
|
|
|
|
autoindex on;
|
|
|
|
'';
|
2023-05-12 22:05:10 +01:00
|
|
|
};
|
2023-06-05 03:43:42 +01:00
|
|
|
|
2022-10-28 12:32:49 +01:00
|
|
|
mysql = {
|
|
|
|
enable = true;
|
2023-06-11 00:30:34 +01:00
|
|
|
package = pkgs.mariadb_1011;
|
2022-10-28 12:32:49 +01:00
|
|
|
};
|
2021-11-25 11:42:32 +00:00
|
|
|
|
2022-10-28 12:32:49 +01:00
|
|
|
redis = {
|
|
|
|
vmOverCommit = true;
|
|
|
|
servers."nextcloud" = {
|
|
|
|
enable = true;
|
|
|
|
port = redis_port;
|
|
|
|
};
|
|
|
|
};
|
2021-07-13 09:53:22 +01:00
|
|
|
|
|
|
|
nextcloud = {
|
|
|
|
enable = true;
|
2022-10-28 12:32:49 +01:00
|
|
|
hostName = domain;
|
2021-07-13 09:53:22 +01:00
|
|
|
https = true;
|
2024-11-17 20:30:21 +00:00
|
|
|
package = pkgs.nextcloud30;
|
2022-12-01 13:28:10 +00:00
|
|
|
datadir = "/services/nextcloud";
|
2023-06-05 03:43:42 +01:00
|
|
|
configureRedis = true;
|
2022-10-28 12:32:49 +01:00
|
|
|
caching = {
|
|
|
|
redis = true;
|
|
|
|
};
|
2021-07-13 09:53:22 +01:00
|
|
|
|
|
|
|
autoUpdateApps.enable = true;
|
|
|
|
autoUpdateApps.startAt = "05:00:00";
|
|
|
|
|
2023-06-05 03:43:42 +01:00
|
|
|
maxUploadSize = "50G";
|
2023-06-11 00:30:34 +01:00
|
|
|
|
2024-06-01 11:41:26 +01:00
|
|
|
settings = {
|
|
|
|
overwriteprotocol = "https";
|
|
|
|
};
|
2024-12-06 21:17:00 +00:00
|
|
|
|
2021-07-13 09:53:22 +01:00
|
|
|
config = {
|
|
|
|
dbtype = "mysql";
|
2023-06-05 03:43:42 +01:00
|
|
|
dbuser = "nextcloud";
|
2021-07-13 09:53:22 +01:00
|
|
|
dbhost = "localhost";
|
2023-06-05 03:43:42 +01:00
|
|
|
dbname = "nextcloud";
|
2024-12-06 21:17:00 +00:00
|
|
|
dbpassFile = config.age.secrets.nextcloud-database.path;
|
|
|
|
adminpassFile = config.age.secrets.nextcloud-admin.path;
|
2021-07-13 09:53:22 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
systemd.services."nextcloud-setup" = {
|
2021-11-25 11:42:32 +00:00
|
|
|
requires = [ "mysql.service" ];
|
|
|
|
after = [ "mysql.service" ];
|
2021-07-13 09:53:22 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
networking.extraHosts = ''
|
2023-05-12 22:05:10 +01:00
|
|
|
${architectInterfaceAddress "lan"} ${domain}
|
|
|
|
${architectInterfaceAddress "tailscale"} ${domain}
|
2021-07-13 09:53:22 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
}
|