diff --git a/pkgs/build-support/buildenv/builder.pl b/pkgs/build-support/buildenv/builder.pl index a272a84261e..fd8098caf13 100755 --- a/pkgs/build-support/buildenv/builder.pl +++ b/pkgs/build-support/buildenv/builder.pl @@ -142,10 +142,11 @@ while (scalar(keys %postponed) > 0) { # Create the symlinks. +my $extraPrefix = $ENV{"extraPrefix"}; my $nrLinks = 0; foreach my $relName (sort keys %symlinks) { my ($target, $priority) = @{$symlinks{$relName}}; - my $abs = "$out/$relName"; + my $abs = "$out" . "$extraPrefix" . "/$relName"; next unless isInPathsToLink $relName; if ($target eq "") { #print "creating directory $relName\n"; diff --git a/pkgs/build-support/buildenv/default.nix b/pkgs/build-support/buildenv/default.nix index 2ae8123faca..8cbf0dc6c8e 100644 --- a/pkgs/build-support/buildenv/default.nix +++ b/pkgs/build-support/buildenv/default.nix @@ -21,14 +21,20 @@ # directories in the list is not symlinked. pathsToLink ? ["/"] -, # Shell command to run after building the symlink tree. +, # Root the result in directory "$out${extraPrefix}", e.g. "/share". + extraPrefix ? "" + +, # Shell commands to run after building the symlink tree. postBuild ? "" +, # Additional inputs. Handy e.g. if using makeWrapper in `postBuild`. + buildInputs ? [] + , passthru ? {} }: runCommand name - { inherit manifest ignoreCollisions passthru pathsToLink postBuild; + { inherit manifest ignoreCollisions passthru pathsToLink extraPrefix postBuild buildInputs; pkgs = builtins.toJSON (map (drv: { paths = [ drv ]; # FIXME: handle multiple outputs priority = drv.meta.priority or 5;