dotfiles/provision/hosts/torus/nextcloud.nix

69 lines
1.6 KiB
Nix

{ config, lib, pkgs, user, ... }:
let
dumpFolder = "/engi/backup/dumps/nextcloud";
domain = "cloud.tstarr.us";
in {
environment.systemPackages = with pkgs; [
cron
zip
rsync
(pkgs.writeScriptBin "dump-nextcloud" ''
#!/bin/sh
cd ${dumpFolder}
[ -e nextcloud-sql ] && rm nextcloud-sql
nextcloud-occ maintenance:mode --on
mysqldump --single-transaction nextcloud > ${dumpFolder}/nextcloud-sql
nextcloud-occ maintenance:mode --off
'')
];
systemd.tmpfiles.rules = [
"d ${dumpFolder} 0775 nextcloud nextcloud -"
];
# nextcloud secrets
age.secrets."nextcloud/password" = {
file = ../../secrets/nextcloud/password.age;
owner = "nextcloud";
group = "nextcloud";
};
services = {
nginx.virtualHosts = {
"${domain}" = {
forceSSL = true;
enableACME = true;
};
};
nextcloud = {
enable = true;
hostName = "${domain}";
# Need to manually increment with every major upgrade.
package = pkgs.nextcloud29;
# Let NixOS install and configure the database automatically.
database.createLocally = true;
# Let NixOS install and configure Redis caching automatically.
configureRedis = true;
# Increase the maximum file upload size to avoid problems uploading videos.
maxUploadSize = "16G";
https = true;
autoUpdateApps.enable = true;
settings = {
overwriteprotocol = "https";
default_phone_region = "US";
};
config = {
dbtype = "mysql";
adminuser = "admin";
adminpassFile = "/run/agenix/nextcloud/password";
};
};
};
}