diff options
author | ajs124 <git@ajs124.de> | 2022-11-09 02:35:39 +0100 |
---|---|---|
committer | ajs124 <git@ajs124.de> | 2022-11-09 21:49:33 +0100 |
commit | bc4e9a890c5421e7a760da15ec474098735985ff (patch) | |
tree | b3316f2669f2d99aede19cc7097848560e15f6b0 /nixos/modules/services/databases/redis.nix | |
parent | 168ad716e08368b7038d167b9e4b6eb3667900eb (diff) | |
download | nixpkgs-bc4e9a890c5421e7a760da15ec474098735985ff.tar nixpkgs-bc4e9a890c5421e7a760da15ec474098735985ff.tar.gz nixpkgs-bc4e9a890c5421e7a760da15ec474098735985ff.tar.bz2 nixpkgs-bc4e9a890c5421e7a760da15ec474098735985ff.tar.lz nixpkgs-bc4e9a890c5421e7a760da15ec474098735985ff.tar.xz nixpkgs-bc4e9a890c5421e7a760da15ec474098735985ff.tar.zst nixpkgs-bc4e9a890c5421e7a760da15ec474098735985ff.zip |
nixos/redis: store config in state directory
this is needed because certain redis features, like sentinel, require the config file to be persistent
Diffstat (limited to 'nixos/modules/services/databases/redis.nix')
-rw-r--r-- | nixos/modules/services/databases/redis.nix | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/nixos/modules/services/databases/redis.nix b/nixos/modules/services/databases/redis.nix index 1bcd0f0b20c..1f143f9c66f 100644 --- a/nixos/modules/services/databases/redis.nix +++ b/nixos/modules/services/databases/redis.nix @@ -347,16 +347,24 @@ in { after = [ "network.target" ]; serviceConfig = { - ExecStart = "${cfg.package}/bin/redis-server /run/${redisName name}/redis.conf ${escapeShellArgs conf.extraParams}"; - ExecStartPre = [("+"+pkgs.writeShellScript "${redisName name}-credentials" ('' - install -o '${conf.user}' -m 600 ${redisConfig conf.settings} /run/${redisName name}/redis.conf - '' + optionalString (conf.requirePassFile != null) '' - { - printf requirePass' ' - cat ${escapeShellArg conf.requirePassFile} - } >>/run/${redisName name}/redis.conf - '') - )]; + ExecStart = "${cfg.package}/bin/redis-server /var/lib/${redisName name}/redis.conf ${escapeShellArgs conf.extraParams}"; + ExecStartPre = "+"+pkgs.writeShellScript "${redisName name}-prep-conf" (let + redisConfVar = "/var/lib/${redisName name}/redis.conf"; + redisConfRun = "/run/${redisName name}/nixos.conf"; + redisConfStore = redisConfig conf.settings; + in '' + touch "${redisConfVar}" "${redisConfRun}" + chown '${conf.user}' "${redisConfVar}" "${redisConfRun}" + chmod 0600 "${redisConfVar}" "${redisConfRun}" + if [ ! -s ${redisConfVar} ]; then + echo 'include "${redisConfRun}"' > "${redisConfVar}" + fi + echo 'include "${redisConfStore}"' > "${redisConfRun}" + ${optionalString (conf.requirePassFile != null) '' + {echo -n "requirepass " + cat ${escapeShellArg conf.requirePassFile}} >> "${redisConfRun}" + ''} + ''); Type = "notify"; # User and group User = conf.user; |