anchor.diff:      #   since this form will make it easier to pilot other
       #   uses of binlore.
       callback = lore: drv: overrides: ''
  -      if [[ -d "${drv}/bin" ]]; then
  +      if [[ -d "${drv}/bin" ]] || [[ -d "${drv}/lib" ]] || [[ -d "${drv}/libexec" ]]; then
           echo generating binlore for $drv by running:
  -        echo "${yara}/bin/yara ${lore.rules} ${drv}/bin | ${yallback}/bin/yallback ${lore.yallback}"
  +        echo "${yara}/bin/yara --scan-list --recursive ${lore.rules} <(printf '%s\n' ${drv}/{bin,lib,libexec}) | ${yallback}/bin/yallback ${lore.yallback}"
         else
  -        echo "failed to generate binlore for $drv (${drv}/bin doesn't exist)"
  +        echo "failed to generate binlore for $drv (none of ${drv}/{bin,lib,libexec} exist)"
         fi
       '' +
       /*
  
positive.code:   src = fetchFromGitHub {
      owner = "abathur";
      repo = "binlore";
      rev = "v0.1.4";
      hash = "sha256-+N0Bqyaj/mAwrcgFtUI8czmKo3VW6J8ZRxaPEghp7QM=";
    };
    /*
    binlore has one one more yallbacks responsible for
  
negative.code:         fi
          ((i--)) || true # don't break build
        done # || true # don't break build
        if [[ -d "${drv}/bin" ]] || [[ -d "${drv}/lib" ]] || [[ -d "${drv}/libexec" ]]; then
          ${yara}/bin/yara --scan-list --recursive ${lore.rules} <(printf '%s\n' ${drv}/{bin,lib,libexec}) | ${yallback}/bin/yallback ${lore.yallback} "$filter"
        fi
      '';
    };
    overrides = (src + /overrides);
  
  in rec {
    collect = { lore ? loreDef, drvs, strip ? [ ] }: (runCommand "more-binlore" { } ''
      mkdir $out
      for lorefile in ${toString lore.types}; do
        cat ${lib.concatMapStrings (x: x + "/$lorefile ") (map (make lore) (map lib.getBin (builtins.filter lib.isDerivation drvs)))} > $out/$lorefile
        substituteInPlace $out/$lorefile ${lib.concatMapStrings (x: "--replace '${x}/' '' ") strip}
      done
    '');
    # TODO: echo for debug, can be removed at some point
  