add declarative configuration of nextcloud preview generator app
fixes #65
This commit is contained in:
parent
3f83285759
commit
1581f054aa
2 changed files with 69 additions and 8 deletions
|
@ -4,6 +4,10 @@ let
|
||||||
cfg = config.shb.nextcloud;
|
cfg = config.shb.nextcloud;
|
||||||
|
|
||||||
fqdn = "${cfg.subdomain}.${cfg.domain}";
|
fqdn = "${cfg.subdomain}.${cfg.domain}";
|
||||||
|
|
||||||
|
# Make sure to bump both nextcloudPkg and nextcloudApps at the same time.
|
||||||
|
nextcloudPkg = pkgs.nextcloud27;
|
||||||
|
nextcloudApps = pkgs.nextcloud27Packages.apps;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.shb.nextcloud = {
|
options.shb.nextcloud = {
|
||||||
|
@ -121,11 +125,12 @@ in
|
||||||
type = lib.types.submodule {
|
type = lib.types.submodule {
|
||||||
options = {
|
options = {
|
||||||
onlyoffice = lib.mkOption {
|
onlyoffice = lib.mkOption {
|
||||||
description = "If non null, set up an Only Office service.";
|
description = ''
|
||||||
default = {
|
Only Office App. [Nextcloud App Store](https://apps.nextcloud.com/apps/onlyoffice)
|
||||||
enable = false;
|
|
||||||
jwtSecretFile = "";
|
Enabling this app will also start an OnlyOffice instance accessible at the given
|
||||||
};
|
subdomain from the given network range.
|
||||||
|
'';
|
||||||
type = lib.types.submodule {
|
type = lib.types.submodule {
|
||||||
options = {
|
options = {
|
||||||
enable = lib.mkEnableOption "Nextcloud OnlyOffice App";
|
enable = lib.mkEnableOption "Nextcloud OnlyOffice App";
|
||||||
|
@ -144,7 +149,35 @@ in
|
||||||
|
|
||||||
jwtSecretFile = lib.mkOption {
|
jwtSecretFile = lib.mkOption {
|
||||||
type = lib.types.path;
|
type = lib.types.path;
|
||||||
description = "File containing the JWT secret.";
|
description = "File containing the JWT secret. This option is required.";
|
||||||
|
default = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
previewgenerator = lib.mkOption {
|
||||||
|
description = ''
|
||||||
|
Preview Generator App. [Nextcloud App Store](https://apps.nextcloud.com/apps/previewgenerator)
|
||||||
|
|
||||||
|
Enabling this app will create a cron job running every minute to generate thumbnails
|
||||||
|
for new and updated files.
|
||||||
|
|
||||||
|
To generate thumbnails for already existing files, run:
|
||||||
|
|
||||||
|
```
|
||||||
|
nextcloud-occ -vvv preview:generate-all
|
||||||
|
```
|
||||||
|
'';
|
||||||
|
type = lib.types.nullOr (lib.types.submodule {
|
||||||
|
options = {
|
||||||
|
enable = lib.mkEnableOption "Nextcloud Preview Generator App";
|
||||||
|
|
||||||
|
debug = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
description = "Enable more verbose logging.";
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -219,7 +252,7 @@ in
|
||||||
# not loading to realize those scripts are inserted by extensions. Doh.
|
# not loading to realize those scripts are inserted by extensions. Doh.
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud27;
|
package = nextcloudPkg;
|
||||||
|
|
||||||
datadir = cfg.dataDir;
|
datadir = cfg.dataDir;
|
||||||
|
|
||||||
|
@ -250,7 +283,7 @@ in
|
||||||
# Very important for a bunch of scripts to load correctly. Otherwise you get Content-Security-Policy errors. See https://docs.nextcloud.com/server/13/admin_manual/configuration_server/harden_server.html#enable-http-strict-transport-security
|
# Very important for a bunch of scripts to load correctly. Otherwise you get Content-Security-Policy errors. See https://docs.nextcloud.com/server/13/admin_manual/configuration_server/harden_server.html#enable-http-strict-transport-security
|
||||||
https = config.shb.ssl.enable;
|
https = config.shb.ssl.enable;
|
||||||
|
|
||||||
extraApps = cfg.extraApps pkgs.nextcloud27Packages.apps;
|
extraApps = cfg.extraApps nextcloudApps;
|
||||||
extraAppsEnable = true;
|
extraAppsEnable = true;
|
||||||
appstoreEnable = true;
|
appstoreEnable = true;
|
||||||
|
|
||||||
|
@ -386,5 +419,31 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.apps.previewgenerator.enable {
|
||||||
|
services.nextcloud.extraApps = {
|
||||||
|
inherit (nextcloudApps) previewgenerator;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configured as defined in https://github.com/nextcloud/previewgenerator
|
||||||
|
systemd.timers.nextcloud-cron-previewgenerator = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
after = [ "nextcloud-setup.service" ];
|
||||||
|
timerConfig.OnBootSec = "10m";
|
||||||
|
timerConfig.OnUnitActiveSec = "10m";
|
||||||
|
timerConfig.Unit = "nextcloud-cron-previewgenerator.service";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.nextcloud-cron-previewgenerator = {
|
||||||
|
environment.NEXTCLOUD_CONFIG_DIR = "${config.services.nextcloud.datadir}/config";
|
||||||
|
serviceConfig.Type = "oneshot";
|
||||||
|
serviceConfig.User = "nextcloud";
|
||||||
|
serviceConfig.ExecStart =
|
||||||
|
let
|
||||||
|
debug = if cfg.debug or cfg.apps.previewgenerator.debug then "-vvv" else "";
|
||||||
|
in
|
||||||
|
"${config.services.nextcloud.occ}/bin/nextcloud-occ ${debug} preview:pre-generate";
|
||||||
|
};
|
||||||
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,8 @@ This NixOS module is a service that sets up a [Nextcloud Server](https://nextclo
|
||||||
## Features {#services-nextcloud-server-features}
|
## Features {#services-nextcloud-server-features}
|
||||||
|
|
||||||
- Declarative Apps Configuration - no need to configure through the UI.
|
- Declarative Apps Configuration - no need to configure through the UI.
|
||||||
|
- [Preview Generator](https://apps.nextcloud.com/apps/previewgenerator) app: enables app and sets
|
||||||
|
up required cron job.
|
||||||
- [Only Office](https://apps.nextcloud.com/apps/onlyoffice) app: enables app and sets up Only
|
- [Only Office](https://apps.nextcloud.com/apps/onlyoffice) app: enables app and sets up Only
|
||||||
Office service.
|
Office service.
|
||||||
- [Demo](./demo-nextcloud-server.html)
|
- [Demo](./demo-nextcloud-server.html)
|
||||||
|
|
Loading…
Reference in a new issue