nix-config/modules/nixos-modules/server/nextcloud.nix

56 lines
1.4 KiB
Nix

{
lib,
pkgs,
config,
inputs,
...
}: let
dataDir = "/var/lib/nextcloud";
in {
options.host.nextcloud = {
enable = lib.mkEnableOption "should nextcloud be enabled on this computer";
subdomain = lib.mkOption {
type = lib.types.str;
description = "subdomain of base domain that nextcloud will be hosted at";
default = "nextcloud";
};
};
config = lib.mkIf config.host.nextcloud.enable (lib.mkMerge [
{
sops.secrets = {
"services/nextcloud_adminpass" = {
sopsFile = "${inputs.secrets}/defiant-services.yaml";
owner = config.users.users.nextcloud.name;
};
};
host.reverse_proxy.subdomains.${config.host.jellyfin.subdomain} = {};
services = {
nextcloud = {
enable = true;
package = pkgs.nextcloud30;
hostName = "${config.host.nextcloud.subdomain}.${config.host.reverse_proxy.hostname}";
config = {
adminpassFile = config.sops.secrets."services/nextcloud_adminpass".path;
};
};
};
}
(lib.mkIf config.host.impermanence.enable {
environment.persistence."/persist/system/root" = {
enable = true;
hideMounts = true;
directories = [
{
directory = dataDir;
user = "nextcloud";
group = "nextcloud";
}
];
};
})
]);
}