anchor.diff:  let
     cfg = config.services.tarsnap;
   
  -  configFile = cfg: ''
  -    cachedir ${config.services.tarsnap.cachedir}
  +  configFile = name: cfg: ''
  +    cachedir ${config.services.tarsnap.cachedir}/${name}
       keyfile  ${config.services.tarsnap.keyfile}
       ${optionalString cfg.nodump "nodump"}
       ${optionalString cfg.printStats "print-stats"}
  
positive.code: 
      environment.etc =
        (mapAttrs' (name: cfg: nameValuePair "tarsnap/${name}.conf"
          { text = configFile cfg;
          }) cfg.archives) //
        (mapAttrs' (name: cfg: nameValuePair "tarsnap/${name}.dirs"
          { text = concatStringsSep " " cfg.directories;
  
negative.code:           will refuse to run until you manually rebuild the cache with
            <command>tarsnap --fsck</command>.
  
            Note that each individual archive (specified below) has its own cache
            directory specified under <literal>cachedir</literal>; this is because
            tarsnap locks the cache during backups, meaning multiple services
            archives cannot be backed up concurrently or overlap with a shared
            cache.
  
            Set to <literal>null</literal> to disable caching.
          '';
        };
  