main
1{lib, ...}: {
2 den.aspects.services.artalk = {
3 settings = {
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 parentDirectory = {
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 = {
45 host,
46 pkgs,
47 ...
48 }: let
49 cfg = host.settings.services.artalk;
50 in {
51 services.artalk = {
52 enable = true;
53 package = pkgs.nur.repos.hpcesia.artalk;
54 allowModify = true;
55 settings = {
56 host = cfg.address;
57 port = cfg.port;
58 debug = false;
59 db = {
60 type = "sqlite";
61 file = "./data/artalk.db";
62 user = "artalk";
63 charset = "utf8mb4";
64 };
65 log = {
66 enabled = true;
67 filename = "./data/artalk.log";
68 };
69 };
70 };
71 };
72 };
73}