haccfiles/parsons/hedgedoc-hacc.nix

101 lines
2.9 KiB
Nix
Raw Normal View History

{ config, lib, pkgs, evalConfig, ... }:
2021-08-07 17:38:40 +00:00
{
sops.secrets = {
"hedgedoc-hacc/env" = {};
};
2021-08-07 18:27:04 +00:00
containers.pad-hacc = {
2021-08-07 17:38:40 +00:00
privateNetwork = true;
hostAddress = "192.168.100.1";
localAddress = "192.168.100.5";
autoStart = true;
2024-02-22 20:15:41 +00:00
ephemeral = true;
2021-08-07 17:38:40 +00:00
bindMounts = {
"/persist" = {
hostPath = "/persist/containers/pad-hacc";
isReadOnly = false;
};
"/secrets".hostPath = "/run/secrets/hedgedoc-hacc";
2021-08-07 17:38:40 +00:00
};
path = evalConfig ({ config, lib, ... }: {
2021-08-07 17:38:40 +00:00
services.hedgedoc = {
enable = true;
settings = {
2021-08-07 17:38:40 +00:00
allowAnonymous = true;
allowFreeURL = true;
allowGravatar = false;
allowOrigin = [ "localhost" "pad.hacc.space" "fff-muc.de" ];
db = {
host = "/run/postgresql";
2022-01-27 20:20:25 +00:00
username = "codimd";
dialect = "postgres";
database = "codimd";
};
2021-08-07 17:38:40 +00:00
defaultPermission = "limited";
domain = "pad.hacc.space";
host = "0.0.0.0";
protocolUseSSL = true;
hsts.preload = false;
email = false;
oauth2 = {
2022-04-30 20:43:12 +00:00
authorizationURL = "https://login.infra4future.de/oauth2/authorize";
tokenURL = "https://login.infra4future.de/oauth2/token";
2021-08-07 17:38:40 +00:00
clientID = "hedgedoc";
# must be set to make the NixOS module happy, but env var takes precedence
clientSecret = "lol nope";
2021-08-07 17:38:40 +00:00
};
};
environmentFile = "/secrets/env";
2021-08-07 17:38:40 +00:00
};
systemd.services.hedgedoc.environment = {
"CMD_LOGLEVEL" = "warn";
2022-04-30 20:43:12 +00:00
"CMD_OAUTH2_USER_PROFILE_URL" = "https://login.infra4future.de/oauth2/userinfo";
"CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR" = "nickname";
"CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR" = "name";
2021-08-07 17:38:40 +00:00
"CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR" = "email";
"CMD_OAUTH2_PROVIDERNAME" = "Infra4Future";
};
2021-08-07 17:38:40 +00:00
services.postgresql = {
enable = true;
2021-08-07 18:27:04 +00:00
ensureDatabases = [ "codimd" ];
2021-08-07 17:38:40 +00:00
ensureUsers = [{
2021-08-07 18:27:04 +00:00
name = "codimd";
ensureDBOwnership = true;
2021-08-07 17:38:40 +00:00
}];
authentication = ''
local all all trust
2022-01-27 20:20:25 +00:00
host codimd codimd 127.0.0.1/32 trust
'';
package = pkgs.postgresql_15;
2021-08-07 17:38:40 +00:00
};
services.postgresqlBackup = {
enable = true;
2021-08-07 18:27:04 +00:00
databases = [ "codimd" ];
2021-08-07 17:38:40 +00:00
startAt = "*-*-* 23:45:00";
2021-08-07 18:27:04 +00:00
location = "/persist/backups/postgres";
2021-08-07 17:38:40 +00:00
};
hacc.bindToPersist = [ "/var/lib/hedgedoc" ];
});
2021-08-07 17:38:40 +00:00
};
services.nginx.virtualHosts."pad.hacc.earth" = {
enableACME = true;
forceSSL = true;
globalRedirect = "pad.hacc.space";
};
services.nginx.virtualHosts."pad.hacc.space" = {
forceSSL = true;
enableACME = true;
locations."/" = {
2021-08-07 18:27:04 +00:00
proxyPass = "http://${config.containers.pad-hacc.localAddress}:3000";
2021-08-07 17:38:40 +00:00
extraConfig = ''
add_header Access-Control-Allow-Origin "*";
proxy_buffering off;
'';
};
};
}