nixos-config/modules/nextcloud.nix

119 lines
2.8 KiB
Nix
Raw Normal View History

2022-09-25 02:14:33 +02:00
{ pkgs, config, lib, ... }:
let
oo_domain = "onlyoffice.mc-fucker.cool";
in
2021-11-23 11:17:26 +01:00
{
2022-09-25 02:14:33 +02:00
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "corefonts" ]; #allow a single package from unfree
services.postgresql = {
ensureDatabases = [ "nextcloud" ];
ensureUsers = [
{
name = "nextcloud";
ensurePermissions = {
"DATABASE nextcloud" = "ALL PRIVILEGES";
};
}
];
};
services.postgresqlBackup.databases = [ "nextcloud" ];
2021-11-23 11:17:26 +01:00
services.nextcloud = {
2021-11-23 12:41:14 +01:00
autoUpdateApps.enable = true;
2021-11-23 11:17:26 +01:00
enable = true;
2021-12-02 16:30:19 +01:00
caching.redis = true;
2021-11-23 11:17:26 +01:00
hostName = "nc.mc-fucker.cool";
2022-10-27 02:00:09 +02:00
package = pkgs.nextcloud25;
2021-11-23 11:17:26 +01:00
https = true;
config = {
dbtype = "pgsql";
#dbhost = "postgres";
dbhost = "/run/postgresql";
#dbpassFile = "/etc/nixos/keys/nextcloud-dbpassword";
extraTrustedDomains = [ "mc4" ];
adminpassFile = "/etc/nixos/keys/nextcloud-adminpassword";
adminuser = "Superadmin";
defaultPhoneRegion = "DE";
2021-11-23 11:17:26 +01:00
};
2021-12-02 16:30:19 +01:00
#poolSettings = {
# "pm" = "dynamic";
# "pm.max_children" = "256";
# "pm.max_requests" = "1000";
# "pm.max_spare_servers" = "64";
# "pm.min_spare_servers" = "24";
# "pm.start_servers" = "32";
#};
2021-11-23 11:17:26 +01:00
};
services.nginx = {
#package = pkgs.nginxMainline;
package = pkgs.nginxQuic;
virtualHosts."${config.services.nextcloud.hostName}" = {
forceSSL = true;
enableACME = true;
2021-12-21 14:41:36 +01:00
#http3 = true;
2021-11-23 11:17:26 +01:00
};
};
2021-12-02 16:30:19 +01:00
services.redis = {
enable = true;
unixSocket = "/run/redis/redis.sock";
unixSocketPerm = 770;
};
2022-09-25 02:14:33 +02:00
services.onlyoffice = {
enable = true;
hostname = oo_domain;
};
services.nginx.virtualHosts."${oo_domain}" = {
forceSSL = true;
enableACME = true;
};
users.users = {
nginx = {
extraGroups = [ "onlyoffice" ];
};
};
2021-12-02 16:30:19 +01:00
users.groups.redis.members = [ "nextcloud" ];
2021-11-23 11:17:26 +01:00
networking.firewall.allowedTCPPorts = [ 80 443 ];
security.acme = {
acceptTerms = true;
defaults.email = "dev@mc-fucker.cool";
2021-11-23 11:17:26 +01:00
};
2021-12-02 16:30:19 +01:00
systemd.services.nextcloud-redis-setup = let
redisConfig = pkgs.writeText "nextcloud-redis-config.php" ''
<?php
$CONFIG = [
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => '${config.services.redis.unixSocket}',
'port' => 0,
'dbindex' => 0,
'timeout' => 1.5,
],
'allow_local_remote_servers' => true,
2021-12-02 16:30:19 +01:00
];
'';
in {
wantedBy = [ "multi-user.target" ];
before = [ "phpfpm-nextcloud.service" ];
script = ''
ln -sf ${redisConfig} ${config.services.nextcloud.datadir}/config/redis.config.php
'';
serviceConfig.Type = "oneshot";
serviceConfig.User = "nextcloud";
};
2021-11-23 11:17:26 +01:00
}
# vim: set et ts=2 sw=2 ai: