dotfiles/provision/hosts/torus/nextcloud.nix

69 lines
1.6 KiB
Nix
Raw Permalink Normal View History

2024-05-21 21:53:08 -07:00
{ config, lib, pkgs, user, ... }:
2024-11-01 21:23:33 -07:00
let
dumpFolder = "/engi/backup/dumps/nextcloud";
domain = "cloud.tstarr.us";
in {
2024-05-21 21:53:08 -07:00
environment.systemPackages = with pkgs; [
cron
2024-11-01 21:23:33 -07:00
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 -"
2024-05-21 21:53:08 -07:00
];
# nextcloud secrets
age.secrets."nextcloud/password" = {
2024-07-21 16:37:12 -07:00
file = ../../secrets/nextcloud/password.age;
owner = "nextcloud";
group = "nextcloud";
};
2024-05-21 21:53:08 -07:00
services = {
nginx.virtualHosts = {
2024-11-01 21:23:33 -07:00
"${domain}" = {
2024-05-21 21:53:08 -07:00
forceSSL = true;
enableACME = true;
};
};
nextcloud = {
enable = true;
2024-11-01 21:23:33 -07:00
hostName = "${domain}";
2024-05-21 21:53:08 -07:00
# 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";
2024-05-21 21:53:08 -07:00
};
};
};
}