From 64b8b9f1704d9f10704501193f8100c0fcc531d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Soko=C5=82owski?= Date: Fri, 15 May 2020 12:19:07 +0200 Subject: [PATCH] nix: add support for more build inputs in mergeSh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jakub SokoĊ‚owski --- nix/lib/mergeSh.nix | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/nix/lib/mergeSh.nix b/nix/lib/mergeSh.nix index cd8a5d5797..ae70aa1a91 100644 --- a/nix/lib/mergeSh.nix +++ b/nix/lib/mergeSh.nix @@ -1,9 +1,20 @@ # this is an utility for mergeing shells created with mkShell -# TODO: make this an attribute of mkShell result set. +# TODO: make this an attribute of mkShell result set. Or just use inputsFrom. { lib }: -super: shells: super.overrideAttrs(super: with lib; { - inputsFrom = (super.inputsFrom or []) ++ unique (catAttrs "inputsFrom" shells); - buildInputs = (super.buildInputs or []) ++ unique (catAttrs "buildInputs" shells); - shellHook = (super.shellHook or "") + concatStrings (catAttrs "shellHook" shells); -}) +super: shells: +super.overrideAttrs (super: + let + inherit (lib) attrByPath unique catAttrs concatStrings; + + mergeAttrsFor = attrName: + (attrByPath [attrName] [] super) ++ unique (catAttrs attrName shells); + in { + inputsFrom = mergeAttrsFor "inputsFrom"; + buildInputs = mergeAttrsFor "buildInputs"; + nativeBuildInputs = mergeAttrsFor "nativeBuildInputs"; + propagatedBuildInputs = mergeAttrsFor "propagatedBuildInputs"; + propagatedNativeBuildInputs = mergeAttrsFor "propagatedNativeBuildInputs"; + # shellHook is a string, not a list + shellHook = (super.shellHook or "") + concatStrings (catAttrs "shellHook" shells); + })