Commit cb31bd47 authored by Brendan Taylor's avatar Brendan Taylor
Browse files

nixos/redis: add option services.redis.servers.*.group

previously if you set the "user" option and did not create a group
account with the same name the module would create a service that would
fail to start.

with this change:
- the module is more explicit about this behaviour
- you can configure the group directly, so that you're not forced to a
  particular user/group structure
- you can read the group name used by the redis service. this is useful
  for giving other services permission to use the redis socket.
parent a95f58cc
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -72,7 +72,28 @@ in {
              defaultText = literalExpression ''
                if name == "" then "redis" else "redis-''${name}"
              '';
              description = "The username and groupname for redis-server.";
              description = ''
                User account under which this instance of redis-server runs.

                ::: {.note}
                If left as the default value this user will automatically be
                created on system activation, otherwise you are responsible for
                ensuring the user exists before the redis service starts.
              '';
            };

            group = mkOption {
              type = types.str;
              default = config.user;
              defaultText = literalExpression "config.user";
              description = ''
                Group account under which this instance of redis-server runs.

                ::: {.note}
                If left as the default value this group will automatically be
                created on system activation, otherwise you are responsible for
                ensuring the group exists before the redis service starts.
              '';
            };

            port = mkOption {
@@ -337,7 +358,7 @@ in {
          redisConfStore = redisConfig conf.settings;
        in ''
          touch "${redisConfVar}" "${redisConfRun}"
          chown '${conf.user}' "${redisConfVar}" "${redisConfRun}"
          chown '${conf.user}':'${conf.group}' "${redisConfVar}" "${redisConfRun}"
          chmod 0600 "${redisConfVar}" "${redisConfRun}"
          if [ ! -s ${redisConfVar} ]; then
            echo 'include "${redisConfRun}"' > "${redisConfVar}"
@@ -353,7 +374,7 @@ in {
        Type = "notify";
        # User and group
        User = conf.user;
        Group = conf.user;
        Group = conf.group;
        # Runtime directory and mode
        RuntimeDirectory = redisName name;
        RuntimeDirectoryMode = "0750";