rework nextcloud service

This commit is contained in:
2025-07-29 14:38:22 +07:00
parent 99c3ee6ffe
commit 49ed4d78c3
15 changed files with 177 additions and 68 deletions

View File

@@ -1,3 +1,4 @@
{ ... }:
{
_class = "clan.service";
manifest.name = "nextcloud";
@@ -5,79 +6,45 @@
manifest.categories = [ "System" ];
roles.default = {
interface =
{ lib, pkgs, ... }:
{
options = {
domain = lib.mkOption {
type = lib.types.str;
default = "cloud";
description = "Sub domain for Nextcloud to run.";
};
package = lib.mkOption {
type = lib.types.package;
description = "Which package to use for the Nextcloud instance.";
};
};
};
perInstance =
perInstance.nixosModule =
{
settings,
config,
pkgs,
lib,
...
}:
{
nixosModule =
{
config,
pkgs,
...
}:
let
domain = "${settings.domain}.${config.networking.fqdn}";
nextcloudUser = "nextcloud";
in
{
clan.core.vars.generators.nextcloud = {
files = {
adminpassFile = {
owner = nextcloudUser;
group = nextcloudUser;
secret = true;
};
};
script = ''
xkcdpass --numwords 4 --delimiter - --count 1 | tr -d "\n" > "$out"/adminpassFile
'';
runtimeInputs = [
pkgs.xkcdpass
];
};
services.nextcloud = {
enable = true;
hostName = domain;
package = pkgs.nextcloud31;
database.createLocally = true;
config = {
dbtype = "pgsql";
dbhost = "/run/postgresql";
dbuser = nextcloudUser;
dbname = nextcloudUser;
adminuser = "admin";
adminpassFile = config.clan.core.vars.generators.nextcloud.files.adminpassFile.path;
};
settings = {
overwriteprotocol = "https";
trusted_domains = [ ];
trusted_proxies = [ ];
};
};
services.nginx.virtualHosts."${domain}" = {
useACMEHost = "${config.networking.fqdn}";
forceSSL = true;
clan.core.vars.generators.nextcloud = {
files = {
adminpassFile = {
owner = "nextcloud";
group = "nextcloud";
secret = true;
};
};
script = ''
xkcdpass --numwords 4 --delimiter - --count 1 | tr -d "\n" > "$out"/adminpassFile
'';
runtimeInputs = [
pkgs.xkcdpass
];
};
services.nextcloud = {
enable = lib.mkDefault true;
hostName = lib.mkDefault "localhost";
database.createLocally = lib.mkDefault true;
config = {
dbtype = lib.mkDefault "pgsql";
dbhost = lib.mkDefault "/run/postgresql";
dbuser = lib.mkDefault "nextcloud";
dbname = lib.mkDefault "nextcloud";
adminuser = lib.mkDefault "admin";
adminpassFile = lib.mkDefault config.clan.core.vars.generators.nextcloud.files.adminpassFile.path;
};
};
};
};
}