created nextcloud service

This commit is contained in:
Leyla Becker 2025-01-03 13:39:08 -06:00
parent 12e1f8067b
commit 7dfb67f1f4
3 changed files with 56 additions and 30 deletions

View file

@ -1,8 +1,6 @@
{ {
lib, lib,
config, config,
pkgs,
inputs,
... ...
}: { }: {
imports = []; imports = [];
@ -40,31 +38,13 @@
}; };
config = { config = {
sops.secrets = {
"services/nextcloud_adminpass" = {
sopsFile = "${inputs.secrets}/defiant-services.yaml";
owner = config.users.users.nextcloud.name;
};
};
systemd = { systemd = {
services = { services = {
# nextcloud-setup = {
# after = ["network.target"];
# };
headscale = { headscale = {
after = ["postgresql.service"]; after = ["postgresql.service"];
requires = ["postgresql.service"]; requires = ["postgresql.service"];
}; };
}; };
# disable computer sleeping
targets = {
sleep.enable = false;
suspend.enable = false;
hibernate.enable = false;
hybrid-sleep.enable = false;
};
}; };
services = { services = {
@ -92,16 +72,6 @@
}; };
}; };
# nextcloud here is built using its auto setup mysql db because it was not playing nice with postgres
nextcloud = {
enable = true;
package = pkgs.nextcloud30;
hostName = config.apps.nextcloud.hostname;
config = {
adminpassFile = config.sops.secrets."services/nextcloud_adminpass".path;
};
};
nginx = { nginx = {
enable = true; enable = true;
virtualHosts = { virtualHosts = {

View file

@ -9,5 +9,6 @@
./searx.nix ./searx.nix
./home-assistant.nix ./home-assistant.nix
./pihole.nix ./pihole.nix
./nextcloud.nix
]; ];
} }

View file

@ -0,0 +1,55 @@
{
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";
}
];
};
})
]);
}