diff options
Diffstat (limited to 'modules/private/databases/redis.nix')
-rw-r--r-- | modules/private/databases/redis.nix | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/modules/private/databases/redis.nix b/modules/private/databases/redis.nix new file mode 100644 index 00000000..1ba6eed6 --- /dev/null +++ b/modules/private/databases/redis.nix | |||
@@ -0,0 +1,57 @@ | |||
1 | { lib, config, ... }: | ||
2 | let | ||
3 | cfg = config.myServices.databases.redis; | ||
4 | in { | ||
5 | options.myServices.databases.redis = { | ||
6 | enable = lib.mkOption { | ||
7 | default = cfg.enable; | ||
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 | |||