Skip to content
Snippets Groups Projects
Unverified Commit 4ec40b16 authored by axel simon's avatar axel simon Committed by GitHub
Browse files

flake.nix: start synapse automatically, add space usage warning (#15613)

parent 68dcd2cb
No related branches found
No related tags found
No related merge requests found
Warn users that at least 3.75GB of space is needed for the nix Synapse development environment.
# 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 # for the SyTest (https://github.com/matrix-org/sytest) and Complement
# (https://github.com/matrix-org/complement) Matrix homeserver test suites are also # (https://github.com/matrix-org/complement) Matrix homeserver test suites are also
# installed automatically. # installed automatically.
# #
# You must have already installed nix (https://nixos.org) on your system to use this. # 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 # 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 # directly supported, but Nix can be installed inside of WSL2 or even Docker
# containers. Please refer to https://nixos.org/download for details. # 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 # 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 # 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: # 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 # `nix develop --impure`. The `--impure` is necessary in order to store state
# locally from "services", such as PostgreSQL and Redis. # locally from "services", such as PostgreSQL and Redis.
# #
# You should now be dropped into a new shell with all programs and dependencies # You should now be dropped into a new shell with all programs and dependencies
# availabile to you! # 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. # 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 # 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 # .devenv/state. Deleting a file from here and then re-entering the shell
# will recreate these files from scratch. # will recreate these files from scratch.
...@@ -66,7 +61,7 @@ ...@@ -66,7 +61,7 @@
let let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
in { 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 # developer environments. See https://devenv.sh/reference/options/ for a list
# of all possible options. # of all possible options.
default = devenv.lib.mkShell { default = devenv.lib.mkShell {
...@@ -153,11 +148,39 @@ ...@@ -153,11 +148,39 @@
# Redis is needed in order to run Synapse in worker mode. # Redis is needed in order to run Synapse in worker mode.
services.redis.enable = true; 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. # Define the perl modules we require to run SyTest.
# #
# This list was compiled by cross-referencing https://metacpan.org/ # This list was compiled by cross-referencing https://metacpan.org/
# with the modules defined in './cpanfile' and then finding the # 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. # This was done until `./install-deps.pl --dryrun` produced no output.
env.PERL5LIB = "${with pkgs.perl536Packages; makePerlPath [ env.PERL5LIB = "${with pkgs.perl536Packages; makePerlPath [
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment