nixos/promtail: Allow write access to positions file if not in CacheDirectory

Because of `ProtectSystem=strict`, Promtail cannot write to the positions
file if it's not in its `CacheDirectory` (the default value).

Changed files
+4
nixos
modules
services
logging
+4
nixos/modules/services/logging/promtail.nix
···
'';
allowSystemdJournal = cfg.configuration ? scrape_configs && lib.any (v: v ? journal) cfg.configuration.scrape_configs;
+
+
allowPositionsFile = !lib.hasPrefix "/var/cache/promtail" positionsFile;
+
positionsFile = cfg.configuration.positions.filename;
in {
options.services.promtail = with types; {
enable = mkEnableOption "the Promtail ingresser";
···
RestrictSUIDSGID = true;
PrivateMounts = true;
CacheDirectory = "promtail";
+
ReadWritePaths = lib.optional allowPositionsFile (builtins.dirOf positionsFile);
User = "promtail";
Group = "promtail";