--- /dev/null
+{ config, pkgs, lib, ... }:
+let
+ cfg = config.myServices.websites.tools.cryptpad;
+ envCfg = config.myEnv.tools.cryptpad;
+ 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.dns.zones."immae.eu".subdomains.cryptpad =
+ with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
+
+ myServices.chatonsProperties.hostings.cryptpad = {
+ file.datetime = "2022-08-21T01:20:00";
+ hosting = {
+ name = "Cryptpad";
+ description = "Collaboration suite, encrypted and open-source";
+ website = "https://cryptpad.immae.eu/";
+ logo = "https://cryptpad.immae.eu/customize/favicon/main-favicon.png";
+ type = "INSTANCE";
+ status.level = "OK";
+ status.description = "OK";
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ };
+ myServices.chatonsProperties.services.cryptpad = {
+ file.datetime = "2022-08-21T01:20:00";
+ service = {
+ name = "Cryptpad";
+ description = "Collaboration suite, encrypted and open-source";
+ website = "https://cryptpad.immae.eu/";
+ logo = "https://cryptpad.immae.eu/customize/favicon/main-favicon.png";
+ status.level = "OK";
+ status.description = "OK";
+ registration."" = ["NONE" "FREE" "MEMBER" "CLIENT"];
+ registration.load = "OPEN";
+ install.type = "PACKAGE";
+ };
+ software = {
+ name = "Cryptpad";
+ website = "https://cryptpad.org/";
+ license.url = "https://github.com/xwiki-labs/cryptpad/blob/main/LICENSE";
+ license.name = "GNU Affero General Public License v3.0";
+ version = pkgs.cryptpad.version;
+ source.url = "https://github.com/xwiki-labs/cryptpad";
+ };
+ };
+ myServices.tools.cryptpad.farm.hosts.immaeEu = {
+ inherit domain port;
+ config = configFile;
+ };
+ services.websites.env.tools.modules = [ "proxy_wstunnel" ];
+ security.acme.certs.eldiron.extraDomainNames = [ domain ];
+ services.websites.env.tools.vhostConfs.cryptpad = {
+ certName = "eldiron";
+ hosts = [domain];
+ root = config.myServices.tools.cryptpad.farm.vhostRoots.immaeEu;
+ extraConfig = [
+ config.myServices.tools.cryptpad.farm.vhosts.immaeEu
+ ];
+ };
+ };
+}