with import ./config.nix;

let innerName = "foo"; in

mkDerivation rec {
  name = "${innerName}.drv";
  SHELL = shell;

  requiredSystemFeatures = [ "recursive-nix" ];

  drv = builtins.unsafeDiscardOutputDependency (import ./text-hashed-output.nix).hello.drvPath;

  buildCommand = ''
    export NIX_CONFIG='experimental-features = nix-command ca-derivations'

    PATH=${builtins.getEnv "EXTRA_PATH"}:$PATH

    # JSON of pre-existing drv
    nix derivation show $drv | jq .[] > drv0.json

    # Fix name
    jq < drv0.json '.name = "${innerName}"' > drv1.json

    # Extend `buildCommand`
    jq < drv1.json '.env.buildCommand += "echo \"I am alive!\" >> $out/hello\n"' > drv0.json

    # Used as our output
    cp $(nix derivation add < drv0.json) $out
  '';
  __contentAddressed = true;
  outputHashMode = "text";
  outputHashAlgo = "sha256";
}