]>
Commit | Line | Data |
---|---|---|
1 | { lib, config, ... }: | |
2 | let | |
3 | cfg = config.myServices.databases.redis; | |
4 | in { | |
5 | options.myServices.databases.redis = { | |
6 | enable = lib.mkOption { | |
7 | default = false; | |
8 | example = true; | |
9 | description = "Whether to enable redis database"; | |
10 | type = lib.types.bool; | |
11 | }; | |
12 | socketsDir = lib.mkOption { | |
13 | type = lib.types.path; | |
14 | default = "/run/redis"; | |
15 | description = '' | |
16 | The directory where Redis puts sockets. | |
17 | ''; | |
18 | }; | |
19 | # Output variables | |
20 | systemdRuntimeDirectory = lib.mkOption { | |
21 | type = lib.types.str; | |
22 | # Use ReadWritePaths= instead if socketsDir is outside of /run | |
23 | default = assert lib.strings.hasPrefix "/run/" cfg.socketsDir; | |
24 | lib.strings.removePrefix "/run/" cfg.socketsDir; | |
25 | description = '' | |
26 | Adjusted redis sockets directory for systemd | |
27 | ''; | |
28 | readOnly = true; | |
29 | }; | |
30 | sockets = lib.mkOption { | |
31 | type = lib.types.attrsOf lib.types.path; | |
32 | default = { | |
33 | redis = "${cfg.socketsDir}/redis.sock"; | |
34 | }; | |
35 | readOnly = true; | |
36 | description = '' | |
37 | Redis sockets | |
38 | ''; | |
39 | }; | |
40 | }; | |
41 | ||
42 | config = lib.mkIf cfg.enable { | |
43 | users.users.redis.uid = config.ids.uids.redis; | |
44 | users.groups.redis.gid = config.ids.gids.redis; | |
45 | services.redis = rec { | |
46 | enable = true; | |
47 | bind = "127.0.0.1"; | |
48 | unixSocket = cfg.sockets.redis; | |
49 | extraConfig = '' | |
50 | unixsocketperm 777 | |
51 | maxclients 1024 | |
52 | ''; | |
53 | }; | |
54 | systemd.services.redis.serviceConfig.RuntimeDirectory = cfg.systemdRuntimeDirectory; | |
55 | }; | |
56 | } | |
57 |