grimm-nix-server/modules/nextcloud.nix

83 lines
2.1 KiB
Nix
Raw Permalink Normal View History

2024-01-26 10:14:45 +01:00
{ lib, pkgs, config, ...} :
2023-12-30 13:48:12 +01:00
let
2024-05-08 20:45:41 +02:00
inherit (config.networking) domain;
nextcloud_host = "cloud.${domain}";
2023-12-30 13:48:12 +01:00
nextcloud_port = 8083;
in {
services.postgresql = {
enable = true;
ensureDatabases = [ "nextcloud" ];
ensureUsers = [
{
name = "nextcloud";
ensureDBOwnership = true;
}
];
};
2024-05-08 20:45:41 +02:00
security.acme.certs."${domain}".extraDomainNames = [ nextcloud_host ];
age.secrets = {
nextcloud_admin_pass = {
file = ../secrets/nextcloud_admin_pass.age;
owner = "nextcloud";
group = "nextcloud";
mode = "0600";
};
};
services.redis.servers.nextcloud = {
enable = true;
bind = "::1";
port = 6379;
2023-12-30 13:48:12 +01:00
};
systemd.services.nextcloud-setup.serviceConfig.ExecStartPost = pkgs.writeScript "nextcloud-redis.sh" ''
#!${pkgs.runtimeShell}
nextcloud-occ config:system:set redis 'host' --value '::1' --type string
nextcloud-occ config:system:set redis 'port' --value 6379 --type integer
nextcloud-occ config:system:set memcache.local --value '\OC\Memcache\Redis' --type string
nextcloud-occ config:system:set memcache.locking --value '\OC\Memcache\Redis' --type string
'';
2023-12-30 13:48:12 +01:00
services.nextcloud = {
enable = true;
https = true;
hostName = nextcloud_host;
package = pkgs.nextcloud28;
caching.redis = true;
2023-12-30 13:48:12 +01:00
# extraApps = with config.services.nextcloud.package.packages.apps; [
# news contacts calendar tasks;
# ];
config = {
adminpassFile = config.age.secrets.nextcloud_admin_pass.path;
dbuser = "nextcloud";
2024-01-26 10:14:45 +01:00
dbhost= "localhost:${builtins.toString config.services.postgresql.port}";
dbtype = "pgsql";
2024-01-26 10:14:45 +01:00
};
2024-01-30 18:43:58 +01:00
settings = {
2024-01-26 10:14:45 +01:00
overwriteProtocol = "https";
defaultPhoneRegion = "DE";
filelocking.enabled = true;
redis = {
host = "localhost";
port = 6379;
timeout = 0.0;
};
2024-01-30 18:43:58 +01:00
};
phpOptions = {
"opcache.interned_strings_buffer" = "12";
2023-12-30 13:48:12 +01:00
};
};
services.nginx = {
enable = true;
virtualHosts."${nextcloud_host}" = {
serverName = nextcloud_host;
forceSSL = true;
2024-05-08 20:45:41 +02:00
useACMEHost = domain;
2023-12-30 13:48:12 +01:00
};
};
}