# https://mich-murphy.com/configure-nextcloud-nixos/ { pkgs, config, ... }: let adminPass = "nextcloud/admin-pass"; domain = "beta.nextcloud.martials.no"; dbname = "nextcloud"; dbuser = dbname; in { services = { nextcloud = { enable = true; autoUpdateApps.enable = true; config = { adminpassFile = config.sops.secrets.${adminPass}.path; dbtype = "pgsql"; dbname = dbname; dbuser = dbuser; # default directory for postgresql, ensures automatic setup of db dbhost = "/run/postgresql"; adminuser = "admin"; defaultPhoneRegion = "NO"; }; extraApps = { inherit (config.services.nextcloud.package.packages.apps) contacts deck notes tasks ; }; extraAppsEnable = true; hostName = domain; https = true; maxUploadSize = "0"; package = pkgs.nextcloud31; settings = { trusted_domains = [ domain ]; }; }; postgresql = { enable = true; ensureDatabases = [ dbname ]; ensureUsers = [ { name = dbuser; ensureDBOwnership = true; } ]; }; postgresqlBackup = { enable = true; location = "/data/backup/nextclouddb"; databases = [ dbname ]; # time to start backup in systemd.time format startAt = "*-*-* 23:15:00"; }; }; sops.secrets.${adminPass}.neededForUsers = true; # ensure postgresql db is started with nextcloud systemd.services."nextcloud-setup" = { requires = [ "postgresql.service" ]; after = [ "postgresql.service" ]; }; }