From dacde3f71fe68e2d923cf7b322592eaad5862586 Mon Sep 17 00:00:00 2001 From: zimbatm Date: Fri, 27 Nov 2020 15:44:38 +0100 Subject: [PATCH] mkUserEnvironment: fix Nix compatibility issue it was relying on a file that is not available in Nix unstable anymore --- lib/mkUserEnvironment.nix | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/mkUserEnvironment.nix b/lib/mkUserEnvironment.nix index 1e00896..e0308a3 100644 --- a/lib/mkUserEnvironment.nix +++ b/lib/mkUserEnvironment.nix @@ -21,6 +21,36 @@ # Supporting code with builtins; let + # Copied from https://github.com/nixos/nix/blob/e02481ded216ffb5b06b413e3695d4e11e62e02f/corepkgs/buildenv.nix + # + # This was available at , until it got removed in Nix. + buildenv = { derivations, manifest }: + derivation { + name = "user-environment"; + system = "builtin"; + builder = "builtin:buildenv"; + + inherit manifest; + + # !!! grmbl, need structured data for passing this in a clean way. + derivations = + map + (d: + [ + (d.meta.active or "true") + (d.meta.priority or 5) + (builtins.length d.outputs) + ] ++ map (output: builtins.getAttr output d) d.outputs) + derivations; + + # Building user environments remotely just causes huge amounts of + # network traffic, so don't do that. + preferLocalBuild = true; + + # Also don't bother substituting. + allowSubstitutes = false; + }; + # back-compat isPath = builtins.isPath or (x: builtins.typeOf x == "path"); @@ -68,14 +98,14 @@ let outs = lib.genAttrs outputs toOut; in - base // outs; + base // outs; writeManifest = derivations: writeText "env-manifest.nix" ( toNix (map genManifest derivations) ); in -import { +buildenv { inherit derivations; manifest = writeManifest derivations; }