2022-11-05 14:35:26 +01:00
|
|
|
{ custom, domain }: { config, pkgs, ... }:
|
|
|
|
let
|
|
|
|
nextcloudEnvironment = {
|
|
|
|
MYSQL_DATABASE = "nextcloud";
|
|
|
|
MYSQL_USER = "nextcloud";
|
|
|
|
MYSQL_HOST = "172.17.0.1";
|
2022-11-05 23:19:51 +01:00
|
|
|
NEXTCLOUD_TRUSTED_DOMAINS = "${domain} ${config.networking.hostName}.2li.local 10.7.89.103";
|
2022-11-05 14:35:26 +01:00
|
|
|
REDIS_HOST = "redis";
|
|
|
|
SMTP_HOST = "mail.infomaniak.com";
|
|
|
|
SMTP_SECURE = "ssl";
|
|
|
|
SMTP_PORT = "465";
|
|
|
|
};
|
2022-11-05 16:09:17 +01:00
|
|
|
networkName = "nextcloud";
|
2022-11-08 21:27:12 +01:00
|
|
|
nextcloudImage = "ghcr.io/nebucatnetzer/nextcloud-smb/nextcloud-smb:25.0.1@sha256:71148efd6be127a0cae47f8d5a4d2129d24a1cd325d9a973e34cebdf0047675e";
|
2022-11-05 14:35:26 +01:00
|
|
|
in
|
|
|
|
{
|
|
|
|
age.secrets.nextcloudEnv.file = "${custom.inputs.self}/scrts/nextcloud_env.age";
|
|
|
|
|
2022-11-12 13:52:34 +01:00
|
|
|
services.mysql.settings = {
|
|
|
|
mysqld = {
|
|
|
|
"innodb_file_per_table" = 1;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2022-11-05 14:35:26 +01:00
|
|
|
virtualisation.oci-containers = {
|
|
|
|
backend = "docker";
|
|
|
|
containers."nextcloud" = {
|
2022-11-06 08:30:29 +01:00
|
|
|
image = nextcloudImage;
|
2022-11-05 14:35:26 +01:00
|
|
|
autoStart = true;
|
|
|
|
environment = nextcloudEnvironment;
|
|
|
|
environmentFiles = [ config.age.secrets.nextcloudEnv.path ];
|
|
|
|
ports = [
|
|
|
|
"8080:80"
|
|
|
|
];
|
|
|
|
volumes = [
|
|
|
|
"${custom.inputs.self}/modules/nextcloud/custom-php.ini:/usr/local/etc/php/conf.d/zzz-custom.ini"
|
|
|
|
];
|
|
|
|
dependsOn = [ "redis" ];
|
|
|
|
extraOptions = [
|
2022-11-05 15:53:05 +01:00
|
|
|
''--mount=type=volume,source=nextcloud_data,target=/var/www/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/server_data/nextcloud/data,"volume-opt=o=addr=10.7.89.108,rw,nfsvers=4.0,nolock,hard,noatime"''
|
2022-11-05 14:35:26 +01:00
|
|
|
"--add-host=host.docker.internal:host-gateway"
|
2022-11-05 16:09:17 +01:00
|
|
|
"--net=${networkName}"
|
2022-11-05 14:35:26 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
containers."cron" = {
|
2022-11-06 08:30:29 +01:00
|
|
|
image = nextcloudImage;
|
2022-11-05 14:35:26 +01:00
|
|
|
autoStart = true;
|
|
|
|
environment = nextcloudEnvironment;
|
|
|
|
environmentFiles = [ config.age.secrets.nextcloudEnv.path ];
|
|
|
|
entrypoint = "/cron.sh";
|
|
|
|
dependsOn = [ "redis" ];
|
|
|
|
extraOptions = [
|
2022-11-05 15:53:05 +01:00
|
|
|
''--mount=type=volume,source=nextcloud_data,target=/var/www/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/server_data/nextcloud/data,"volume-opt=o=addr=10.7.89.108,rw,nfsvers=4.0,nolock,hard,noatime"''
|
2022-11-05 14:35:26 +01:00
|
|
|
"--add-host=host.docker.internal:host-gateway"
|
|
|
|
"--net=nextcloud"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
containers."redis" = {
|
|
|
|
image = "redis:alpine";
|
|
|
|
autoStart = true;
|
|
|
|
extraOptions = [
|
2022-11-05 16:09:17 +01:00
|
|
|
"--net=${networkName}"
|
2022-11-05 14:35:26 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
2022-11-08 22:51:12 +01:00
|
|
|
system.activationScripts.makeDockerNetwork = ''
|
2022-11-08 22:51:24 +01:00
|
|
|
${pkgs.docker}/bin/docker network ls | ${pkgs.gnugrep}/bin/grep ${networkName} || ${pkgs.docker}/bin/docker network create ${networkName}
|
2022-11-05 14:35:26 +01:00
|
|
|
'';
|
|
|
|
|
2022-11-12 15:13:03 +01:00
|
|
|
environment.shellAliases = {
|
|
|
|
occ = ''${pkgs.docker}/bin/docker exec -u www-data nextcloud php occ'';
|
|
|
|
};
|
2022-11-05 14:35:26 +01:00
|
|
|
}
|