Files
Olympus/system-config/services/containers/nextcloud/default.nix
2024-11-18 16:32:47 -06:00

114 lines
4.0 KiB
Nix

{ 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 = {
"/var/lib/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; } ];
services.nextcloud = {
enable = true;
package = pkgs.nextcloud30;
hostName = "192.168.100.15";
config = {
adminpassFile = "/etc/nextcloud-admin-pass";
adminuser = "root";
dbtype = "mysql";
};
https = true;
home = "/var/lib/nextcloud";
#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";
};
};
};
}