{ config, lib, pkgs, ... }: { options.sysconfig.opts.virtualization.nextcloud.enable = lib.options.mkOption { type = lib.types.bool; default = false; }; config = lib.mkIf config.sysconfig.opts.virtualization.nextcloud.enable { sops.templates."nextcloud_pass.txt" = { content = '' ${config.sops.placeholder."nextcloud/pass"} ''; path = "/ssd1/Nextcloud/nextcloud_pass.txt"; }; containers.nextcloud = { autoStart = true; privateNetwork = true; hostAddress = "192.168.100.10"; localAddress = "192.168.100.16"; bindMounts = { "/var/lib/nextcloud" = { hostPath = "/ssd1/Nextcloud"; isReadOnly = false; }; }; config = { networking.firewall.allowedTCPPorts = [ 80 ]; services.nextcloud = { enable = true; package = pkgs.nextcloud30; hostName = "localhost"; config.adminpassFile = "/var/lib/nextcloud/nextcloud_pass.txt"; datadir = "/var/lib/nextcloud/data"; home = "/var/lib/nextcloud/nextcloud_home"; https = true; maxUploadSize = "5G"; settings = { overwriteprotocol = "https"; }; }; system.stateVersion = "24.05"; }; }; }; }