about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-03-14 12:15:58 +0100
committerVladimír Čunát <vcunat@gmail.com>2016-04-07 15:59:44 +0200
commit2995439003a6473fc6531d09900e183b0d5de425 (patch)
tree6eb88bcd570fe2e4a0e3ed31b2d716888631695b
parent3342f717da7f660b4695f09034abc175a14fda24 (diff)
downloadnixlib-2995439003a6473fc6531d09900e183b0d5de425.tar
nixlib-2995439003a6473fc6531d09900e183b0d5de425.tar.gz
nixlib-2995439003a6473fc6531d09900e183b0d5de425.tar.bz2
nixlib-2995439003a6473fc6531d09900e183b0d5de425.tar.lz
nixlib-2995439003a6473fc6531d09900e183b0d5de425.tar.xz
nixlib-2995439003a6473fc6531d09900e183b0d5de425.tar.zst
nixlib-2995439003a6473fc6531d09900e183b0d5de425.zip
buildEnv: respect meta.outputsToInstall
As a result `systemPackages` now also respect it.
Only nix-env remains and that has a PR filed:
    https://github.com/NixOS/nix/pull/815
-rw-r--r--nixos/modules/config/system-path.nix6
-rw-r--r--pkgs/build-support/buildenv/default.nix7
-rw-r--r--pkgs/stdenv/generic/default.nix3
3 files changed, 10 insertions, 6 deletions
diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix
index eb5eba7a042f..69830683d9c5 100644
--- a/nixos/modules/config/system-path.nix
+++ b/nixos/modules/config/system-path.nix
@@ -122,11 +122,7 @@ in
 
     system.path = pkgs.buildEnv {
       name = "system-path";
-      paths =
-        # The default output probably shouldn't be globally configurable.
-        # Services and users should specify them explicitly unless they want this default.
-        map (p: if p.outputUnspecified or false then p.bin or p.out or p else p)
-          config.environment.systemPackages;
+      paths = config.environment.systemPackages;
       inherit (config.environment) pathsToLink extraOutputsToLink;
       ignoreCollisions = true;
       # !!! Hacky, should modularise.
diff --git a/pkgs/build-support/buildenv/default.nix b/pkgs/build-support/buildenv/default.nix
index 8b8c3e3cbc20..10f7c69c3aa1 100644
--- a/pkgs/build-support/buildenv/default.nix
+++ b/pkgs/build-support/buildenv/default.nix
@@ -48,7 +48,12 @@ runCommand name
             meta pathsToLink extraPrefix postBuild buildInputs;
     pkgs = builtins.toJSON (map (drv: {
       paths =
-        [ drv ]
+        # First add the usual output(s): respect if user has chosen explicitly,
+        # and otherwise use `meta.outputsToInstall` (guaranteed to exist by stdenv).
+        (if (drv.outputUnspecified or false)
+          then map (outName: drv.${outName}) drv.meta.outputsToInstall
+          else [ drv ])
+        # Add any extra outputs specified by the caller of `buildEnv`.
         ++ lib.filter (p: p!=null)
           (builtins.map (outName: drv.${outName} or null) extraOutputsToLink);
       priority = drv.meta.priority or 5;
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 90cacd036c2a..547541d28246 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -225,6 +225,9 @@ let
             # If the packager hasn't specified `outputsToInstall`, choose a default,
             # namely `p.bin or p.out or p`;
             # if he has specified it, it will be overridden below in `// meta`.
+            #   Note: This default probably shouldn't be globally configurable.
+            #   Services and users should specify outputs explicitly,
+            #   unless they are comfortable with this default.
           // { outputsToInstall =
             let
               outs = outputs'; # the value passed to derivation primitive