-{ config, pkgs, lib, ... }:
-let
- cfg = config.myServices.websites.tools.cryptpad;
- envCfg = config.myEnv.tools.cryptpad.immaeEu;
- domain = "cryptpad.immae.eu";
- port = envCfg.port;
- configFile = pkgs.writeText "config.js" ''
- // ${pkgs.cryptpad}/lib/node_modules/cryptpad/config/config.example.js
- module.exports = {
- httpUnsafeOrigin: 'https://${domain}',
- httpPort: ${toString port},
- adminEmail: '${envCfg.email}',
- filePath: './datastore/',
- archivePath: './data/archive',
- pinPath: './data/pins',
- taskPath: './data/tasks',
- blockPath: './block',
- blobPath: './blob',
- blobStagingPath: './data/blobstage',
- decreePath: './data/decrees',
- logPath: './data/logs',
- logToStdout: false,
- logLevel: 'info',
- logFeedback: false,
- verbose: false,
- inactiveTime: false,
- maxUploadSize: 100 * 1024 * 1024,
- adminKeys: ${builtins.toJSON envCfg.admins},
- };
- '';
-in
-{
- options.myServices.websites.tools.cryptpad.enable = lib.mkEnableOption "Enable Cryptpad";
- config = lib.mkIf cfg.enable {
- myServices.tools.cryptpad.farm.hosts.immaeEu = {
- inherit domain port;
- config = configFile;
- };
- services.websites.env.tools.modules = [ "proxy_wstunnel" ];
- services.websites.env.tools.vhostConfs.cryptpad = {
- certName = "eldiron";
- addToCerts = true;
- hosts = [domain];
- root = config.myServices.tools.cryptpad.farm.vhostRoots.immaeEu;
- extraConfig = [
- config.myServices.tools.cryptpad.farm.vhosts.immaeEu
- ];
- };
- };
-}