{
  lib,
  micro,
  makeWrapper,
  symlinkJoin,
  # configurable options
  extraPackages ? [ ],
}:

symlinkJoin {
  name = "micro-wrapped-${micro.version}";
  inherit (micro) pname version outputs;

  nativeBuildInputs = [ makeWrapper ];

  paths = [ micro ];

  postBuild = ''
    ${lib.concatMapStringsSep "\n" (
      output: "ln --verbose --symbolic --no-target-directory ${micro.${output}} \$${output}"
    ) (lib.remove "out" micro.outputs)}

    pushd $out/bin
    for f in *; do
      rm $f
      makeWrapper ${micro}/bin/$f $f \
        --prefix PATH ":" "${lib.makeBinPath extraPackages}"
    done
    popd
  '';

  meta = micro.meta;
}