nixos systemPackages: rework default outputs

- Now `pkg.outputUnspecified = true` but this attribute is missing in
  every output, so we can recognize whether the user chose or not.
  If (s)he didn't choose, we put `pkg.bin or pkg.out or pkg` into
  `systemPackages`.
- `outputsToLink` is replaced by `extraOutputsToLink`.
  We add extra outputs *regardless* of whether the user chose anything.
  It's mainly meant for outputs with docs and debug symbols.
- Note that as a result, some libraries will disappear from system path.
This commit is contained in:
Vladimír Čunát
2016-01-28 11:24:18 +01:00
parent a33fcc8731
commit ab8a691d05
6 changed files with 21 additions and 15 deletions
+9 -10
View File
@@ -73,11 +73,11 @@ in
description = "List of directories to be symlinked in <filename>/run/current-system/sw</filename>.";
};
outputsToLink = mkOption {
extraOutputsToLink = mkOption {
type = types.listOf types.str;
default = [ ];
example = [ "doc" ];
description = "List of package outputs to be symlinked into <filename>/run/current-system/sw</filename>.";
example = [ "doc" "info" "docdev" ];
description = "List of additional package outputs to be symlinked into <filename>/run/current-system/sw</filename>.";
};
};
@@ -120,18 +120,17 @@ in
"/share/vim-plugins"
];
environment.outputsToLink = [ "bin" "lib" "out" ];
system.path = pkgs.buildEnv {
name = "system-path";
paths =
lib.filter (drv: drv != null && drv != (drv.dev or null))
(lib.concatMap (drv:
[ drv ] ++ map (outputName: drv.${outputName}.outPath or null) config.environment.outputsToLink)
config.environment.systemPackages);
inherit (config.environment) pathsToLink;
# 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;
inherit (config.environment) pathsToLink extraOutputsToLink;
ignoreCollisions = true;
# !!! Hacky, should modularise.
# outputs TODO: note that the tools will often not be linked by default
postBuild =
''
if [ -x $out/bin/update-mime-database -a -w $out/share/mime ]; then