61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								import ./make-test-python.nix ({ pkgs, lib, ... }:
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  name = "hedgedoc";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  meta = with lib.maintainers; {
							 | 
						||
| 
								 | 
							
								    maintainers = [ willibutz ];
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  nodes = {
							 | 
						||
| 
								 | 
							
								    hedgedocSqlite = { ... }: {
							 | 
						||
| 
								 | 
							
								      services = {
							 | 
						||
| 
								 | 
							
								        hedgedoc = {
							 | 
						||
| 
								 | 
							
								          enable = true;
							 | 
						||
| 
								 | 
							
								          configuration.dbURL = "sqlite:///var/lib/hedgedoc/hedgedoc.db";
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    hedgedocPostgres = { ... }: {
							 | 
						||
| 
								 | 
							
								      systemd.services.hedgedoc.after = [ "postgresql.service" ];
							 | 
						||
| 
								 | 
							
								      services = {
							 | 
						||
| 
								 | 
							
								        hedgedoc = {
							 | 
						||
| 
								 | 
							
								          enable = true;
							 | 
						||
| 
								 | 
							
								          configuration.dbURL = "postgres://hedgedoc:\${DB_PASSWORD}@localhost:5432/hedgedocdb";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          /*
							 | 
						||
| 
								 | 
							
								           * Do not use pkgs.writeText for secrets as
							 | 
						||
| 
								 | 
							
								           * they will end up in the world-readable Nix store.
							 | 
						||
| 
								 | 
							
								           */
							 | 
						||
| 
								 | 
							
								          environmentFile = pkgs.writeText "hedgedoc-env" ''
							 | 
						||
| 
								 | 
							
								            DB_PASSWORD=snakeoilpassword
							 | 
						||
| 
								 | 
							
								          '';
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        postgresql = {
							 | 
						||
| 
								 | 
							
								          enable = true;
							 | 
						||
| 
								 | 
							
								          initialScript = pkgs.writeText "pg-init-script.sql" ''
							 | 
						||
| 
								 | 
							
								            CREATE ROLE hedgedoc LOGIN PASSWORD 'snakeoilpassword';
							 | 
						||
| 
								 | 
							
								            CREATE DATABASE hedgedocdb OWNER hedgedoc;
							 | 
						||
| 
								 | 
							
								          '';
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  testScript = ''
							 | 
						||
| 
								 | 
							
								    start_all()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    with subtest("HedgeDoc sqlite"):
							 | 
						||
| 
								 | 
							
								        hedgedocSqlite.wait_for_unit("hedgedoc.service")
							 | 
						||
| 
								 | 
							
								        hedgedocSqlite.wait_for_open_port(3000)
							 | 
						||
| 
								 | 
							
								        hedgedocSqlite.wait_until_succeeds("curl -sSf http://localhost:3000/new")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    with subtest("HedgeDoc postgres"):
							 | 
						||
| 
								 | 
							
								        hedgedocPostgres.wait_for_unit("postgresql.service")
							 | 
						||
| 
								 | 
							
								        hedgedocPostgres.wait_for_unit("hedgedoc.service")
							 | 
						||
| 
								 | 
							
								        hedgedocPostgres.wait_for_open_port(5432)
							 | 
						||
| 
								 | 
							
								        hedgedocPostgres.wait_for_open_port(3000)
							 | 
						||
| 
								 | 
							
								        hedgedocPostgres.wait_until_succeeds("curl -sSf http://localhost:3000/new")
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								})
							 |