111 lines
2.9 KiB
Nix
111 lines
2.9 KiB
Nix
{
|
|
lib,
|
|
pkgs,
|
|
inputs,
|
|
namespace,
|
|
system,
|
|
target,
|
|
format,
|
|
virtual,
|
|
systems,
|
|
config,
|
|
...
|
|
}:
|
|
with lib;
|
|
with lib.custom; {
|
|
sops.secrets."services/nextcloud/dbPassword" = {owner = "nextcloud";};
|
|
sops.secrets."services/nextcloud/whiteboard" = {owner = "nextcloud";};
|
|
services.nextcloud = {
|
|
enable = true;
|
|
package = pkgs.nextcloud31;
|
|
database.createLocally = true;
|
|
config = {
|
|
dbtype = "pgsql";
|
|
adminpassFile = config.sops.secrets."services/nextcloud/dbPassword".path;
|
|
};
|
|
hostName = "nextcloud.kylekrein.com";
|
|
https = true;
|
|
# https://github.com/NixOS/nixpkgs/blob/nixpkgs-unstable/pkgs/servers/nextcloud/packages/nextcloud-apps.json
|
|
extraApps = {
|
|
inherit
|
|
(config.services.nextcloud.package.packages.apps)
|
|
contacts
|
|
calendar
|
|
tasks
|
|
whiteboard
|
|
#twofactor_totp
|
|
spreed
|
|
integration_paperless
|
|
deck
|
|
notes
|
|
bookmarks
|
|
richdocuments
|
|
;
|
|
};
|
|
autoUpdateApps.enable = true;
|
|
extraAppsEnable = true;
|
|
configureRedis = true;
|
|
appstoreEnable = true;
|
|
};
|
|
services.nextcloud-whiteboard-server = {
|
|
enable = true;
|
|
settings = {
|
|
NEXTCLOUD_URL = "https://nextcloud.kylekrein.com";
|
|
};
|
|
secrets = [
|
|
config.sops.secrets."services/nextcloud/whiteboard".path
|
|
];
|
|
};
|
|
# https://diogotc.com/blog/collabora-nextcloud-nixos/
|
|
services.collabora-online = {
|
|
enable = true;
|
|
port = 9980;
|
|
settings = {
|
|
# Rely on reverse proxy for SSL
|
|
ssl = {
|
|
enable = false;
|
|
termination = true;
|
|
};
|
|
|
|
# Listen on loopback interface only, and accept requests from ::1
|
|
net = {
|
|
listen = "loopback";
|
|
post_allow.host = ["::1"];
|
|
};
|
|
|
|
# Restrict loading documents from WOPI Host nextcloud.example.com
|
|
storage.wopi = {
|
|
"@allow" = true;
|
|
host = ["nextcloud.kylekrein.com"];
|
|
};
|
|
|
|
# Set FQDN of server
|
|
server_name = "collabora.kylekrein.com";
|
|
};
|
|
};
|
|
|
|
systemd.services.nextcloud-config-collabora = let
|
|
inherit (config.services.nextcloud) occ;
|
|
|
|
wopi_url = "http://[::1]:${toString config.services.collabora-online.port}";
|
|
public_wopi_url = "https://collabora.kylekrein.com";
|
|
wopi_allowlist = lib.concatStringsSep "," [
|
|
"192.168.178.129"
|
|
"127.0.0.1"
|
|
"::1"
|
|
];
|
|
in {
|
|
wantedBy = ["multi-user.target"];
|
|
after = ["nextcloud-setup.service" "coolwsd.service"];
|
|
requires = ["coolwsd.service"];
|
|
script = ''
|
|
${occ}/bin/nextcloud-occ config:app:set richdocuments wopi_url --value ${lib.escapeShellArg wopi_url}
|
|
${occ}/bin/nextcloud-occ config:app:set richdocuments public_wopi_url --value ${lib.escapeShellArg public_wopi_url}
|
|
${occ}/bin/nextcloud-occ config:app:set richdocuments wopi_allowlist --value ${lib.escapeShellArg wopi_allowlist}
|
|
${occ}/bin/nextcloud-occ richdocuments:setup
|
|
'';
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
};
|
|
};
|
|
}
|