Skip to content

Commit e8f532d

Browse files
authored
nixos/mealie: add 'database.createLocally' (#403670)
2 parents 2a3d3d0 + b8e36dd commit e8f532d

File tree

2 files changed

+52
-10
lines changed

2 files changed

+52
-10
lines changed

nixos/modules/services/web-apps/mealie.nix

+28-1
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,24 @@ in
5050
Expects the format of an `EnvironmentFile=`, as described by {manpage}`systemd.exec(5)`.
5151
'';
5252
};
53+
54+
database = {
55+
createLocally = lib.mkOption {
56+
type = lib.types.bool;
57+
default = false;
58+
description = ''
59+
Configure local PostgreSQL database server for Mealie.
60+
'';
61+
};
62+
};
5363
};
5464

5565
config = lib.mkIf cfg.enable {
5666
systemd.services.mealie = {
5767
description = "Mealie, a self hosted recipe manager and meal planner";
5868

59-
after = [ "network-online.target" ];
69+
after = [ "network-online.target" ] ++ lib.optional cfg.database.createLocally "postgresql.service";
70+
requires = lib.optional cfg.database.createLocally "postgresql.service";
6071
wants = [ "network-online.target" ];
6172
wantedBy = [ "multi-user.target" ];
6273

@@ -78,5 +89,21 @@ in
7889
StandardOutput = "journal";
7990
};
8091
};
92+
93+
services.mealie.settings = lib.mkIf cfg.database.createLocally {
94+
DB_ENGINE = "postgres";
95+
POSTGRES_URL_OVERRIDE = "postgresql://mealie:@/mealie?host=/run/postgresql";
96+
};
97+
98+
services.postgresql = lib.mkIf cfg.database.createLocally {
99+
enable = true;
100+
ensureDatabases = [ "mealie" ];
101+
ensureUsers = [
102+
{
103+
name = "mealie";
104+
ensureDBOwnership = true;
105+
}
106+
];
107+
};
81108
};
82109
}

nixos/tests/mealie.nix

+24-9
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,35 @@ import ./make-test-python.nix (
1010
];
1111
};
1212

13-
nodes = {
14-
server = {
15-
services.mealie = {
16-
enable = true;
17-
port = 9001;
13+
nodes =
14+
let
15+
sqlite = {
16+
services.mealie = {
17+
enable = true;
18+
port = 9001;
19+
};
1820
};
21+
postgres = {
22+
imports = [ sqlite ];
23+
services.mealie.database.createLocally = true;
24+
};
25+
in
26+
{
27+
inherit sqlite postgres;
1928
};
20-
};
2129

2230
testScript = ''
2331
start_all()
24-
server.wait_for_unit("mealie.service")
25-
server.wait_for_open_port(9001)
26-
server.succeed("curl --fail http://localhost:9001")
32+
33+
def test_mealie(node):
34+
node.wait_for_unit("mealie.service")
35+
node.wait_for_open_port(9001)
36+
node.succeed("curl --fail http://localhost:9001")
37+
38+
test_mealie(sqlite)
39+
simple.send_monitor_command("quit")
40+
simple.wait_for_shutdown()
41+
test_mealie(postgres)
2742
'';
2843
}
2944
)

0 commit comments

Comments
 (0)