83 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { lib, stdenv, python3, openssl
 | |
| , enableSystemd ? stdenv.isLinux, nixosTests
 | |
| , enableRedis ? false
 | |
| , callPackage
 | |
| }:
 | |
| 
 | |
| with python3.pkgs;
 | |
| 
 | |
| let
 | |
|   plugins = python3.pkgs.callPackage ./plugins { };
 | |
|   tools = callPackage ./tools { };
 | |
| in
 | |
| buildPythonApplication rec {
 | |
|   pname = "matrix-synapse";
 | |
|   version = "1.26.0";
 | |
| 
 | |
|   src = fetchPypi {
 | |
|     inherit pname version;
 | |
|     sha256 = "1jppwqxamj3a65fw2a87brz4iqgijaa4lja51wlxh2xdkqj0sn6l";
 | |
|   };
 | |
| 
 | |
|   patches = [
 | |
|     # adds an entry point for the service
 | |
|     ./homeserver-script.patch
 | |
|   ];
 | |
| 
 | |
|   propagatedBuildInputs = [
 | |
|     setuptools
 | |
|     bcrypt
 | |
|     bleach
 | |
|     canonicaljson
 | |
|     daemonize
 | |
|     frozendict
 | |
|     jinja2
 | |
|     jsonschema
 | |
|     lxml
 | |
|     msgpack
 | |
|     netaddr
 | |
|     phonenumbers
 | |
|     pillow
 | |
|     prometheus_client
 | |
|     psutil
 | |
|     psycopg2
 | |
|     pyasn1
 | |
|     pymacaroons
 | |
|     pynacl
 | |
|     pyopenssl
 | |
|     pysaml2
 | |
|     pyyaml
 | |
|     requests
 | |
|     signedjson
 | |
|     sortedcontainers
 | |
|     treq
 | |
|     twisted
 | |
|     unpaddedbase64
 | |
|     typing-extensions
 | |
|     authlib
 | |
|     pyjwt
 | |
|   ] ++ lib.optional enableSystemd systemd
 | |
|     ++ lib.optional enableRedis hiredis;
 | |
| 
 | |
|   checkInputs = [ mock parameterized openssl ];
 | |
| 
 | |
|   doCheck = !stdenv.isDarwin;
 | |
| 
 | |
|   checkPhase = ''
 | |
|     ${lib.optionalString (!enableRedis) "rm -r tests/replication # these tests need the optional dependency 'hiredis'"}
 | |
|     PYTHONPATH=".:$PYTHONPATH" ${python3.interpreter} -m twisted.trial tests
 | |
|   '';
 | |
| 
 | |
|   passthru.tests = { inherit (nixosTests) matrix-synapse; };
 | |
|   passthru.plugins = plugins;
 | |
|   passthru.tools = tools;
 | |
|   passthru.python = python3;
 | |
| 
 | |
|   meta = with lib; {
 | |
|     homepage = "https://matrix.org";
 | |
|     description = "Matrix reference homeserver";
 | |
|     license = licenses.asl20;
 | |
|     maintainers = teams.matrix.members;
 | |
|   };
 | |
| }
 | 
