{ config, lib, pkgs, inputs, ... }: { options.sysconfig.opts.virtualization.nextcloud.enable = lib.options.mkOption { type = lib.types.bool; default = false; }; imports = [ inputs.simple-nixos-mailserver.nixosModule ]; config = lib.mkIf config.sysconfig.opts.virtualization.nextcloud.enable { /*services.nginx.virtualHosts."localhost".listen = [ { addr = "0.0.0.0"; port = 8081; } ]; services.nextcloud = { enable = true; package = pkgs.nextcloud30; hostName = "localhost"; config = { adminpassFile = config.sops.secrets."nextcloud/pass".path; adminuser = "root"; dbtype = "mysql"; }; https = true; datadir = "/ssd1/Nextcloud/data"; home = "/ssd1/Nextcloud/nextcloud_home"; appstoreEnable = true; extraApps = with config.services.nextcloud.package.packages.apps; { inherit mail contacts calendar tasks user_oidc; }; extraAppsEnable = true; settings = { overwriteprotocol = "https"; trusted_domains = [ "nextcloud.blunkall.us" "dummy.blunkall.us" ]; trusted_proxies = [ "192.168.100.11" ]; default_phone_region = "US"; }; database.createLocally = true; };*/ containers.nextcloud = { autoStart = true; privateNetwork = true; hostAddress = "192.168.100.10"; localAddress = "192.168.100.15"; bindMounts = { "/etc/nextcloud" = { hostPath = "/ssd1/Nextcloud/data"; isReadOnly = false; }; }; extraFlags = [ "--load-credential=nextcloud-admin-pass:${config.sops.secrets."nextcloud/pass".path}" ]; config = { config, lib, pkgs, ... }: { /*systemd.tmpfiles.rules = [ "Z /etc/nextcloud - nextcloud nextcloud" ];*/ systemd.services.secrets_setup = { wantedBy = [ "nextcloud-setup.service" ]; serviceConfig = { LoadCredential = [ "nextcloud-admin-pass" ]; }; script = '' cat $CREDENTIALS_DIRECTORY/nextcloud-admin-pass > /etc/nextcloud-admin-pass chown nextcloud:nextcloud /etc/nextcloud-admin-pass ''; }; networking.firewall.allowedTCPPorts = [ 80 443 ]; services.nginx = { virtualHosts."192.168.100.15".listen = [ { addr = "0.0.0.0"; port = 80; } ]; user = "nextcloud"; group = "nextcloud"; }; services.nextcloud = { enable = true; package = pkgs.nextcloud30; hostName = "192.168.100.15"; config = { adminpassFile = "/etc/nextcloud-admin-pass"; adminuser = "root"; dbtype = "mysql"; }; https = true; #datadir = "/etc/nextcloud/data"; #home = "/etc/nextcloud/nextcloud_home"; #appstoreEnable = true; extraApps = with config.services.nextcloud.package.packages.apps; { inherit mail contacts calendar tasks user_oidc; }; extraAppsEnable = true; settings = { overwriteprotocol = "https"; trusted_domains = [ "nextcloud.blunkall.us" ]; trusted_proxies = [ "192.168.100.11" ]; default_phone_region = "US"; }; database.createLocally = true; }; system.stateVersion = "24.05"; }; }; }; }