]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - nixops/modules/websites/tools/cloud/default.nix
5c3e9a8e7cb8cf2b7ce7c2c06c039235af6582f7
[perso/Immae/Config/Nix.git] / nixops / modules / websites / tools / cloud / default.nix
1 { lib, pkgs, config, myconfig, mylibs, ... }:
2 let
3 nextcloud = pkgs.callPackage ./nextcloud.nix {
4 env = myconfig.env.tools.nextcloud;
5 };
6
7 cfg = config.services.myWebsites.tools.cloud;
8 in {
9 options.services.myWebsites.tools.cloud = {
10 enable = lib.mkEnableOption "enable cloud website";
11 };
12
13 config = lib.mkIf cfg.enable {
14 security.acme.certs."eldiron".extraDomains."cloud.immae.eu" = null;
15
16 services.myWebsites.tools.modules = nextcloud.apache.modules;
17
18 services.myWebsites.tools.vhostConfs.cloud = {
19 certName = "eldiron";
20 hosts = ["cloud.immae.eu" ];
21 root = nextcloud.apache.root;
22 extraConfig = [
23 nextcloud.apache.vhostConf
24 ];
25 };
26
27 mySecrets.keys = nextcloud.keys;
28 users.users.root.packages = let
29 occ = pkgs.writeScriptBin "nextcloud-occ" ''
30 #! ${pkgs.stdenv.shell}
31 cd ${nextcloud.webRoot}
32 NEXTCLOUD_CONFIG_DIR="${nextcloud.webRoot}/config" \
33 exec \
34 sudo -u wwwrun ${pkgs.php}/bin/php \
35 -c ${pkgs.php}/etc/php.ini \
36 occ $*
37 '';
38 in [ occ ];
39
40 system.activationScripts.nextcloud = nextcloud.activationScript;
41 system.extraSystemBuilderCmds = ''
42 mkdir -p $out/webapps
43 ln -s ${nextcloud.webRoot} $out/webapps/${nextcloud.apache.webappName}
44 '';
45
46 services.myPhpfpm = {
47 poolPhpConfigs.nextcloud = nextcloud.phpFpm.phpConfig;
48 poolConfigs.nextcloud = nextcloud.phpFpm.pool;
49 };
50
51 services.cron = {
52 enable = true;
53 systemCronJobs = [
54 ''
55 LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive
56 */15 * * * * wwwrun ${pkgs.php}/bin/php -f ${nextcloud.webRoot}/cron.php
57 ''
58 ];
59 };
60 };
61 }