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:
parent
a33fcc8731
commit
ab8a691d05
@ -129,7 +129,7 @@ rec {
|
||||
};
|
||||
|
||||
outputsList = map outputToAttrListElement outputs;
|
||||
in commonAttrs.${drv.outputName};
|
||||
in commonAttrs // { outputUnspecified = true; };
|
||||
|
||||
|
||||
/* Strip a derivation of all non-essential attributes, returning
|
||||
|
@ -38,7 +38,7 @@ with lib;
|
||||
# environment.pathsToLink, and we can't have both.
|
||||
#environment.pathsToLink = [ "/lib/debug/.build-id" ];
|
||||
|
||||
environment.outputsToLink =
|
||||
environment.extraOutputsToLink =
|
||||
optional config.environment.enableDebugInfo "debug";
|
||||
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -23,7 +23,7 @@ with lib;
|
||||
|
||||
environment.pathsToLink = [ "/share/man" ];
|
||||
|
||||
environment.outputsToLink = [ "man" ];
|
||||
environment.extraOutputsToLink = [ "man" ];
|
||||
|
||||
};
|
||||
|
||||
|
@ -59,7 +59,7 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.polkit ];
|
||||
environment.systemPackages = [ pkgs.polkit.bin pkgs.polkit.out ];
|
||||
|
||||
systemd.packages = [ pkgs.polkit.out ];
|
||||
|
||||
|
@ -21,6 +21,10 @@
|
||||
# directories in the list is not symlinked.
|
||||
pathsToLink ? ["/"]
|
||||
|
||||
, # The package outputs to include. By default, only the default
|
||||
# output is included.
|
||||
extraOutputsToLink ? []
|
||||
|
||||
, # Root the result in directory "$out${extraPrefix}", e.g. "/share".
|
||||
extraPrefix ? ""
|
||||
|
||||
@ -37,7 +41,10 @@
|
||||
runCommand name
|
||||
rec { inherit manifest ignoreCollisions passthru meta pathsToLink extraPrefix postBuild buildInputs;
|
||||
pkgs = builtins.toJSON (map (drv: {
|
||||
paths = [ drv ];
|
||||
paths =
|
||||
[ drv ]
|
||||
++ lib.filter (p: p!=null)
|
||||
(builtins.map (outName: drv.${outName} or null) extraOutputsToLink);
|
||||
priority = drv.meta.priority or 5;
|
||||
}) paths);
|
||||
preferLocalBuild = true;
|
||||
|
Loading…
Reference in New Issue
Block a user