{
  liminix,
  lib,
  json-to-fstree,
  serviceFns,
  tangc,
}:
{
  name,
  path,
  interval,
}:
let
  inherit (liminix.services) longrun;
  inherit (lib) optionalString;
in
longrun {
  inherit name;
  buildInputs = [ json-to-fstree ];
  notification-fd = 10;
  run = ''
    set -e
    statedir=/run/${name}
    mkdir -p -m 0700 $statedir
    ( in_outputs ${name}
      while : ; do
        ${tangc}/bin/tangc decrypt < ${path} > $statedir/.input.json
        mv $statedir/.input.json $statedir/input.json
        ${json-to-fstree}/bin/json-to-fstree file://$statedir/input.json .
        echo ready >&10
        sleep ${builtins.toString (interval * 60)}
      done
    )
  '';
}