1{ lib, ... }:
2{
3 name = "freshrss-pgsql";
4 meta.maintainers = with lib.maintainers; [
5 etu
6 stunkymonkey
7 ];
8
9 nodes.machine =
10 { pkgs, ... }:
11 {
12 services.freshrss = {
13 enable = true;
14 baseUrl = "http://localhost";
15 passwordFile = pkgs.writeText "password" "secret";
16 dataDir = "/srv/freshrss";
17 database = {
18 type = "pgsql";
19 port = 5432;
20 user = "freshrss";
21 passFile = pkgs.writeText "db-password" "db-secret";
22 };
23 };
24
25 services.postgresql = {
26 enable = true;
27 ensureDatabases = [ "freshrss" ];
28 ensureUsers = [
29 {
30 name = "freshrss";
31 ensureDBOwnership = true;
32 }
33 ];
34 initialScript = pkgs.writeText "postgresql-password" ''
35 CREATE ROLE freshrss WITH LOGIN PASSWORD 'db-secret' CREATEDB;
36 '';
37 };
38
39 systemd.services."freshrss-config" = {
40 requires = [ "postgresql.target" ];
41 after = [ "postgresql.target" ];
42 };
43 };
44
45 testScript = ''
46 machine.wait_for_unit("multi-user.target")
47 machine.wait_for_open_port(5432)
48 machine.wait_for_open_port(80)
49 response = machine.succeed("curl -vvv -s -H 'Host: freshrss' http://localhost:80/i/")
50 assert '<title>Login · FreshRSS</title>' in response, "Login page didn't load successfully"
51 '';
52}