Loading pkgs/build-support/trivial-builders.nix +22 −10 Original line number Diff line number Diff line Loading @@ -458,8 +458,11 @@ rec { * * This creates a simple derivation with symlinks to all inputs. * * entries is a list of attribute sets like * { name = "name" ; path = "/nix/store/..."; } * entries can be a list of attribute sets like * [ { name = "name" ; path = "/nix/store/..."; } ] * * or an attribute set name -> path like: * { name = "/nix/store/..."; other = "/nix/store/..."; } * * Example: * Loading @@ -475,17 +478,26 @@ rec { * * See the note on symlinkJoin for the difference between linkFarm and symlinkJoin. */ linkFarm = name: entries: runCommand name { linkFarm = name: entries: let entries' = if (lib.isAttrs entries) then entries else if (lib.isList entries) then lib.listToAttrs (map (x: lib.nameValuePair x.name x.path) entries) else throw "linkFarm entries must be either attrs or a list!"; linkCommands = lib.mapAttrsToList (name: path: '' mkdir -p "$(dirname ${lib.escapeShellArg "${name}"})" ln -s ${lib.escapeShellArg "${path}"} ${lib.escapeShellArg "${name}"} '') entries'; in runCommand name { preferLocalBuild = true; allowSubstitutes = false; passthru = lib.listToAttrs (map (x: lib.nameValuePair x.name x.path) entries); passthru.entries = entries'; } '' mkdir -p $out cd $out ${lib.concatMapStrings (x: '' mkdir -p "$(dirname ${lib.escapeShellArg x.name})" ln -s ${lib.escapeShellArg "${x.path}"} ${lib.escapeShellArg x.name} '') entries} ${lib.concatStrings linkCommands} ''; /* Loading Loading
pkgs/build-support/trivial-builders.nix +22 −10 Original line number Diff line number Diff line Loading @@ -458,8 +458,11 @@ rec { * * This creates a simple derivation with symlinks to all inputs. * * entries is a list of attribute sets like * { name = "name" ; path = "/nix/store/..."; } * entries can be a list of attribute sets like * [ { name = "name" ; path = "/nix/store/..."; } ] * * or an attribute set name -> path like: * { name = "/nix/store/..."; other = "/nix/store/..."; } * * Example: * Loading @@ -475,17 +478,26 @@ rec { * * See the note on symlinkJoin for the difference between linkFarm and symlinkJoin. */ linkFarm = name: entries: runCommand name { linkFarm = name: entries: let entries' = if (lib.isAttrs entries) then entries else if (lib.isList entries) then lib.listToAttrs (map (x: lib.nameValuePair x.name x.path) entries) else throw "linkFarm entries must be either attrs or a list!"; linkCommands = lib.mapAttrsToList (name: path: '' mkdir -p "$(dirname ${lib.escapeShellArg "${name}"})" ln -s ${lib.escapeShellArg "${path}"} ${lib.escapeShellArg "${name}"} '') entries'; in runCommand name { preferLocalBuild = true; allowSubstitutes = false; passthru = lib.listToAttrs (map (x: lib.nameValuePair x.name x.path) entries); passthru.entries = entries'; } '' mkdir -p $out cd $out ${lib.concatMapStrings (x: '' mkdir -p "$(dirname ${lib.escapeShellArg x.name})" ln -s ${lib.escapeShellArg "${x.path}"} ${lib.escapeShellArg x.name} '') entries} ${lib.concatStrings linkCommands} ''; /* Loading