main
1{lib, ...}: {
2 den.aspects.services.artalk = {
3 settings.host = {
4 domain = lib.mkOption {
5 type = lib.types.str;
6 };
7 address = lib.mkOption {
8 type = lib.types.str;
9 default = "127.0.0.1";
10 };
11 port = lib.mkOption {
12 type = lib.types.port;
13 default = 7364;
14 };
15 };
16
17 persist = {config, ...}: let
18 cfg = config.services.artalk;
19 in {
20 directories = [
21 {
22 directory = cfg.workdir;
23 inherit (cfg) user group;
24 mode = "0700";
25 }
26 ];
27 files = lib.optional (cfg.allowModify) {
28 file = cfg.configFile;
29 parent = {
30 inherit (cfg) user group;
31 mode = "0700";
32 };
33 };
34 };
35
36 reverseProxy = {host, ...}: let
37 cfg = host.settings.services.artalk;
38 in {
39 ${cfg.domain} = {
40 port = cfg.port;
41 };
42 };
43
44 nixos = {host, ...}: let
45 cfg = host.settings.services.artalk;
46 in {
47 services.artalk = {
48 enable = true;
49 allowModify = true;
50 settings = {
51 host = cfg.address;
52 port = cfg.port;
53 debug = false;
54 db = {
55 type = "sqlite";
56 file = "./data/artalk.db";
57 user = "artalk";
58 charset = "utf8mb4";
59 };
60 log = {
61 enabled = true;
62 filename = "./data/artalk.log";
63 };
64 };
65 };
66 };
67 };
68}