[Nix-dev] With-expressions question
Guillaume Maudoux (Layus)
layus.on at gmail.com
Thu Mar 23 13:54:56 CET 2017
Yep, there has been previous ML discussions about this.
Short story is that local variables always take precedence over
variables from "with" expressions.
This is kind of a security feature, otherwise the following expression
could change its meaning when an "outer" package is added/removed from
the "pkgs" set.
`let outer = "5"; in with pkgs; [ outer ];`
That being said, a warning would be a nice idea.
-- Layus.
On 22/03/17 16:12, José Luis Lafuente wrote:
> Recently I was having a weird error running nixos-rebuild. I added
> some packages to systemPackages and I was getting this error:
>
> cannot coerce a set to a string, at
> /etc/nixos/nixpkgs/lib/strings.nix:442:44
>
> After some debugging I found that the guilty was the boot package, but
> I needed some time to understand why. In my configuration.nix I have this:
>
> environment.systemPackages = with pkgs; [
> .....
> boot
> ];
>
> But 'boot' refers to the option 'boot', not the package 'boot'. For
> me, that behavior is confusing (at least in the programming languages
> I know the inner scope variables shadow the ones on the outer scope).
> In my example, is there a way to make 'boot' refer to 'pkgs.boot'? or
> a way of getting a warning on this case?
>
> Regards,
> Jose Luis
>
>
> _______________________________________________
> nix-dev mailing list
> nix-dev at lists.science.uu.nl
> http://lists.science.uu.nl/mailman/listinfo/nix-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.science.uu.nl/pipermail/nix-dev/attachments/20170323/5eb96962/attachment.html>
More information about the nix-dev
mailing list