|
|
|
@ -1,35 +1,30 @@ |
|
|
|
|
# A nix flake that sets up a complete Synapse development environment. Dependencies |
|
|
|
|
# A Nix flake that sets up a complete Synapse development environment. Dependencies |
|
|
|
|
# for the SyTest (https://github.com/matrix-org/sytest) and Complement |
|
|
|
|
# (https://github.com/matrix-org/complement) Matrix homeserver test suites are also |
|
|
|
|
# installed automatically. |
|
|
|
|
# |
|
|
|
|
# You must have already installed nix (https://nixos.org) on your system to use this. |
|
|
|
|
# nix can be installed on Linux or MacOS; NixOS is not required. Windows is not |
|
|
|
|
# directly supported, but nix can be installed inside of WSL2 or even Docker |
|
|
|
|
# You must have already installed Nix (https://nixos.org) on your system to use this. |
|
|
|
|
# Nix can be installed on Linux or MacOS; NixOS is not required. Windows is not |
|
|
|
|
# directly supported, but Nix can be installed inside of WSL2 or even Docker |
|
|
|
|
# containers. Please refer to https://nixos.org/download for details. |
|
|
|
|
# |
|
|
|
|
# You must also enable support for flakes in Nix. See the following for how to |
|
|
|
|
# do so permanently: https://nixos.wiki/wiki/Flakes#Enable_flakes |
|
|
|
|
# |
|
|
|
|
# Be warned: you'll need over 3.75 GB of free space to download all the dependencies. |
|
|
|
|
# |
|
|
|
|
# Usage: |
|
|
|
|
# |
|
|
|
|
# With nix installed, navigate to the directory containing this flake and run |
|
|
|
|
# With Nix installed, navigate to the directory containing this flake and run |
|
|
|
|
# `nix develop --impure`. The `--impure` is necessary in order to store state |
|
|
|
|
# locally from "services", such as PostgreSQL and Redis. |
|
|
|
|
# |
|
|
|
|
# You should now be dropped into a new shell with all programs and dependencies |
|
|
|
|
# availabile to you! |
|
|
|
|
# |
|
|
|
|
# You can start up pre-configured, local PostgreSQL and Redis instances by |
|
|
|
|
# You can start up pre-configured local Synapse, PostgreSQL and Redis instances by |
|
|
|
|
# running: `devenv up`. To stop them, use Ctrl-C. |
|
|
|
|
# |
|
|
|
|
# A PostgreSQL database called 'synapse' will be set up for you, along with |
|
|
|
|
# a PostgreSQL user named 'synapse_user'. |
|
|
|
|
# The 'host' can be found by running `echo $PGHOST` with the development |
|
|
|
|
# shell activated. Use these values to configure your Synapse to connect |
|
|
|
|
# to the local PostgreSQL database. You do not need to specify a password. |
|
|
|
|
# https://matrix-org.github.io/synapse/latest/postgres |
|
|
|
|
# |
|
|
|
|
# All state (the venv, postgres and redis data and config) are stored in |
|
|
|
|
# .devenv/state. Deleting a file from here and then re-entering the shell |
|
|
|
|
# will recreate these files from scratch. |
|
|
|
@ -66,7 +61,7 @@ |
|
|
|
|
let |
|
|
|
|
pkgs = nixpkgs.legacyPackages.${system}; |
|
|
|
|
in { |
|
|
|
|
# Everything is configured via devenv - a nix module for creating declarative |
|
|
|
|
# Everything is configured via devenv - a Nix module for creating declarative |
|
|
|
|
# developer environments. See https://devenv.sh/reference/options/ for a list |
|
|
|
|
# of all possible options. |
|
|
|
|
default = devenv.lib.mkShell { |
|
|
|
@ -153,11 +148,39 @@ |
|
|
|
|
# Redis is needed in order to run Synapse in worker mode. |
|
|
|
|
services.redis.enable = true; |
|
|
|
|
|
|
|
|
|
# Configure and start Synapse. Before starting Synapse, this shell code: |
|
|
|
|
# * generates a default homeserver.yaml config file if one does not exist, and |
|
|
|
|
# * ensures a directory containing two additional homeserver config files exists; |
|
|
|
|
# one to configure using the development environment's PostgreSQL as the |
|
|
|
|
# database backend and another for enabling Redis support. |
|
|
|
|
process.before = '' |
|
|
|
|
python -m synapse.app.homeserver -c homeserver.yaml --generate-config --server-name=synapse.dev --report-stats=no |
|
|
|
|
mkdir -p homeserver-config-overrides.d |
|
|
|
|
cat > homeserver-config-overrides.d/database.yaml << EOF |
|
|
|
|
## Do not edit this file. This file is generated by flake.nix |
|
|
|
|
database: |
|
|
|
|
name: psycopg2 |
|
|
|
|
args: |
|
|
|
|
user: synapse_user |
|
|
|
|
database: synapse |
|
|
|
|
host: $PGHOST |
|
|
|
|
cp_min: 5 |
|
|
|
|
cp_max: 10 |
|
|
|
|
EOF |
|
|
|
|
cat > homeserver-config-overrides.d/redis.yaml << EOF |
|
|
|
|
## Do not edit this file. This file is generated by flake.nix |
|
|
|
|
redis: |
|
|
|
|
enabled: true |
|
|
|
|
EOF |
|
|
|
|
''; |
|
|
|
|
# Start synapse when `devenv up` is run. |
|
|
|
|
processes.synapse.exec = "poetry run python -m synapse.app.homeserver -c homeserver.yaml --config-directory homeserver-config-overrides.d"; |
|
|
|
|
|
|
|
|
|
# Define the perl modules we require to run SyTest. |
|
|
|
|
# |
|
|
|
|
# This list was compiled by cross-referencing https://metacpan.org/ |
|
|
|
|
# with the modules defined in './cpanfile' and then finding the |
|
|
|
|
# corresponding nix packages on https://search.nixos.org/packages. |
|
|
|
|
# corresponding Nix packages on https://search.nixos.org/packages. |
|
|
|
|
# |
|
|
|
|
# This was done until `./install-deps.pl --dryrun` produced no output. |
|
|
|
|
env.PERL5LIB = "${with pkgs.perl536Packages; makePerlPath [ |
|
|
|
|