matrix: modularise properly
This commit is contained in:
parent
f05bb1ff02
commit
91d132a9a0
@ -4,7 +4,6 @@
|
|||||||
imports = [
|
imports = [
|
||||||
../../modules/common/default.nix
|
../../modules/common/default.nix
|
||||||
../../modules/drone/server.nix
|
../../modules/drone/server.nix
|
||||||
../../modules/matrix/default.nix
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -20,7 +19,10 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
## Custom Services
|
## Custom Services
|
||||||
custom.www.global.enable = true;
|
custom = {
|
||||||
|
www.global.enable = true;
|
||||||
|
services.matrix.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
## Networking
|
## Networking
|
||||||
networking.interfaces.ens18.ipv4.addresses = [{
|
networking.interfaces.ens18.ipv4.addresses = [{
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
./backups/default.nix
|
./backups/default.nix
|
||||||
./desktop/awesome/default.nix
|
./desktop/awesome/default.nix
|
||||||
./resilio.nix
|
./resilio.nix
|
||||||
|
./services/matrix.nix
|
||||||
./tailscale.nix
|
./tailscale.nix
|
||||||
./www/global.nix
|
./www/global.nix
|
||||||
./www/www-repo.nix
|
./www/www-repo.nix
|
||||||
|
@ -1,87 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
config.custom.backups.matrix.enable = true;
|
|
||||||
|
|
||||||
## Matrix (matrix.hillion.co.uk)
|
|
||||||
config.age.secrets."matrix/matrix.hillion.co.uk/macaroon_secret_key" = {
|
|
||||||
file = ../../secrets/matrix/matrix.hillion.co.uk/macaroon_secret_key.age;
|
|
||||||
owner = "matrix-synapse";
|
|
||||||
group = "matrix-synapse";
|
|
||||||
};
|
|
||||||
config.age.secrets."matrix/matrix.hillion.co.uk/email" = {
|
|
||||||
file = ../../secrets/matrix/matrix.hillion.co.uk/email.age;
|
|
||||||
owner = "matrix-synapse";
|
|
||||||
group = "matrix-synapse";
|
|
||||||
};
|
|
||||||
|
|
||||||
config.services.postgresql = {
|
|
||||||
enable = true;
|
|
||||||
initialScript = pkgs.writeText "synapse-init.sql" ''
|
|
||||||
CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD 'synapse';
|
|
||||||
CREATE DATABASE "matrix-synapse" WITH OWNER "matrix-synapse"
|
|
||||||
TEMPLATE template0
|
|
||||||
LC_COLLATE = "C"
|
|
||||||
LC_CTYPE = "C";
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
config.services.matrix-synapse = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
extraConfigFiles = [
|
|
||||||
config.age.secrets."matrix/matrix.hillion.co.uk/macaroon_secret_key".path
|
|
||||||
config.age.secrets."matrix/matrix.hillion.co.uk/email".path
|
|
||||||
];
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
server_name = "hillion.co.uk";
|
|
||||||
public_baseurl = "https://matrix.hillion.co.uk/";
|
|
||||||
listeners = [
|
|
||||||
{
|
|
||||||
port = 8008;
|
|
||||||
tls = false;
|
|
||||||
type = "http";
|
|
||||||
x_forwarded = true;
|
|
||||||
bind_addresses = [ "::1" ];
|
|
||||||
resources = [
|
|
||||||
{
|
|
||||||
names = [ "client" "federation" ];
|
|
||||||
compress = false;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
database = {
|
|
||||||
name = "psycopg2";
|
|
||||||
args = {
|
|
||||||
database = "matrix-synapse";
|
|
||||||
user = "matrix-synapse";
|
|
||||||
password = "synapse";
|
|
||||||
host = "127.0.0.1";
|
|
||||||
cp_min = 5;
|
|
||||||
cp_max = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
enable_registration = true;
|
|
||||||
registrations_require_3pid = [ "email" ];
|
|
||||||
allowed_local_3pids = [
|
|
||||||
{
|
|
||||||
medium = "email";
|
|
||||||
pattern = "^[^@]+@hillion\.co\.uk$";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
suppress_key_server_warning = true;
|
|
||||||
dynamic_thumbnails = true;
|
|
||||||
app_service_config_files = [
|
|
||||||
"/var/lib/heisenbridge/registration.yml"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config.services.heisenbridge = {
|
|
||||||
enable = true;
|
|
||||||
owner = "@jake:hillion.co.uk";
|
|
||||||
homeserver = "https://matrix.hillion.co.uk";
|
|
||||||
};
|
|
||||||
}
|
|
112
modules/services/matrix.nix
Normal file
112
modules/services/matrix.nix
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.custom.services.matrix;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.custom.services.matrix = {
|
||||||
|
enable = lib.mkEnableOption "matrix";
|
||||||
|
|
||||||
|
backup = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
|
||||||
|
heisenbridge = lib.mkOption {
|
||||||
|
default = true;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
custom = {
|
||||||
|
backups.matrix.enable = cfg.backup;
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets = {
|
||||||
|
"matrix/matrix.hillion.co.uk/macaroon_secret_key" = {
|
||||||
|
file = ../../secrets/matrix/matrix.hillion.co.uk/macaroon_secret_key.age;
|
||||||
|
owner = "matrix-synapse";
|
||||||
|
group = "matrix-synapse";
|
||||||
|
};
|
||||||
|
|
||||||
|
"matrix/matrix.hillion.co.uk/email" = {
|
||||||
|
file = ../../secrets/matrix/matrix.hillion.co.uk/email.age;
|
||||||
|
owner = "matrix-synapse";
|
||||||
|
group = "matrix-synapse";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
postgresql = {
|
||||||
|
enable = true;
|
||||||
|
initialScript = pkgs.writeText "synapse-init.sql" ''
|
||||||
|
CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD 'synapse';
|
||||||
|
CREATE DATABASE "matrix-synapse" WITH OWNER "matrix-synapse"
|
||||||
|
TEMPLATE template0
|
||||||
|
LC_COLLATE = "C"
|
||||||
|
LC_CTYPE = "C";
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
matrix-synapse = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraConfigFiles = [
|
||||||
|
config.age.secrets."matrix/matrix.hillion.co.uk/macaroon_secret_key".path
|
||||||
|
config.age.secrets."matrix/matrix.hillion.co.uk/email".path
|
||||||
|
];
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
server_name = "hillion.co.uk";
|
||||||
|
public_baseurl = "https://matrix.hillion.co.uk/";
|
||||||
|
listeners = [
|
||||||
|
{
|
||||||
|
port = 8008;
|
||||||
|
tls = false;
|
||||||
|
type = "http";
|
||||||
|
x_forwarded = true;
|
||||||
|
bind_addresses = [ "::1" ];
|
||||||
|
resources = [
|
||||||
|
{
|
||||||
|
names = [ "client" "federation" ];
|
||||||
|
compress = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
database = {
|
||||||
|
name = "psycopg2";
|
||||||
|
args = {
|
||||||
|
database = "matrix-synapse";
|
||||||
|
user = "matrix-synapse";
|
||||||
|
password = "synapse";
|
||||||
|
host = "127.0.0.1";
|
||||||
|
cp_min = 5;
|
||||||
|
cp_max = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
enable_registration = true;
|
||||||
|
registrations_require_3pid = [ "email" ];
|
||||||
|
allowed_local_3pids = [
|
||||||
|
{
|
||||||
|
medium = "email";
|
||||||
|
pattern = "^[^@]+@hillion\.co\.uk$";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
suppress_key_server_warning = true;
|
||||||
|
dynamic_thumbnails = true;
|
||||||
|
app_service_config_files = lib.mkIf cfg.heisenbridge [
|
||||||
|
"/var/lib/heisenbridge/registration.yml"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
heisenbridge = lib.mkIf cfg.heisenbridge {
|
||||||
|
enable = true;
|
||||||
|
owner = "@jake:hillion.co.uk";
|
||||||
|
homeserver = "https://matrix.hillion.co.uk";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user