diff options
| author | Daiderd Jordan <daiderd@gmail.com> | 2017-09-07 22:39:35 +0200 |
|---|---|---|
| committer | Daiderd Jordan <daiderd@gmail.com> | 2017-09-07 22:39:35 +0200 |
| commit | 6fa180702b4a95f40df3abd7332e003f8051bd8e (patch) | |
| tree | 3ca8bfb18fb8d8868b30bfd5c4723ab7a2e68c8e /modules/services | |
| parent | 9f0507cf7d62472650bb3f2d936d0d43ef6009b4 (diff) | |
modules: add redis service
Diffstat (limited to 'modules/services')
| -rw-r--r-- | modules/services/redis/default.nix | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/modules/services/redis/default.nix b/modules/services/redis/default.nix new file mode 100644 index 0000000..860ebc1 --- /dev/null +++ b/modules/services/redis/default.nix @@ -0,0 +1,75 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.redis; +in + +{ + options = { + services.redis.enable = mkOption { + type = types.bool; + default = false; + description = "Whether to enable the redis database service."; + }; + + services.redis.package = mkOption { + type = types.path; + default = pkgs.redis; + defaultText = "pkgs.redis"; + description = "This option specifies the redis package to use"; + }; + + services.redis.dataDir = mkOption { + type = types.path; + default = "/var/lib/redis"; + description = "Data directory for the redis database."; + }; + + services.redis.port = mkOption { + type = types.int; + default = 6379; + description = "The port for Redis to listen to."; + }; + + services.redis.bind = mkOption { + type = types.nullOr types.str; + default = null; # All interfaces + description = "The IP interface to bind to."; + example = "127.0.0.1"; + }; + + services.redis.unixSocket = mkOption { + type = types.nullOr types.path; + default = null; + description = "The path to the socket to bind to."; + example = "/var/run/redis.sock"; + }; + + services.redis.appendOnly = mkOption { + type = types.bool; + default = false; + description = "By default data is only periodically persisted to disk, enable this option to use an append-only file for improved persistence."; + }; + }; + + config = mkIf cfg.enable { + + environment.systemPackages = [ cfg.package ]; + + launchd.user.agents.redis = { + command = "${cfg.package}/bin/redis-server /etc/redis.conf"; + serviceConfig.KeepAlive = true; + }; + + environment.etc."redis.conf".text = '' + port ${toString cfg.port} + ${optionalString (cfg.bind != null) "bind ${cfg.bind}"} + ${optionalString (cfg.unixSocket != null) "unixsocket ${cfg.unixSocket}"} + dir ${cfg.dataDir} + appendOnly ${if cfg.appendOnly then "yes" else "no"} + ''; + + }; +} |
