Nix Language Quirks
with and let
with gets less priority then let. This can lead to confusions, especially if you like to write with pkgs;:
nix-repl> pkgs = { x = 1; }
nix-repl> with pkgs; x
1
nix-repl> with pkgs; let x = 2; in x
2
So we see, that let binding overrides with binding. But what about this?
nix-repl> let x = 2; in with pkgs; x 2
Nah, with and let have different priority when resolving names.