trace: before outer break info: breakpoint reached Here we are in the outer break and the let of "meow". st should show meow there as it is in scope. nix-repl> :st 0: error: breakpoint reached «none»:0 Env level 0 static: meow Env level 1 static: a b Env level 2 abort baseNameOf break builtins derivation derivationStrict dirOf false fetchGit fetchMercurial fetchTarball fetchTree fromTOML import isNull map null placeholder removeAttrs scopedImport throw toString true nix-repl> meow 2 If we :st past the frame in the backtrace with the meow in it, the meow should not be there. nix-repl> :st 3 3: while calling a function TEST_DATA/stack_vars.nix:5:7 4| ); 5| b = builtins.trace "before outer break" ( | ^ 6| let meow = 2; in builtins.break a Env level 0 static: a b Env level 1 abort baseNameOf break builtins derivation derivationStrict dirOf false fetchGit fetchMercurial fetchTarball fetchTree fromTOML import isNull map null placeholder removeAttrs scopedImport throw toString true nix-repl> :c trace: before inner break info: breakpoint reached nix-repl> :st 0: error: breakpoint reached «none»:0 Env level 0 static: meow' Env level 1 static: a b Env level 2 abort baseNameOf break builtins derivation derivationStrict dirOf false fetchGit fetchMercurial fetchTarball fetchTree fromTOML import isNull map null placeholder removeAttrs scopedImport throw toString true nix-repl> meow' 3 nix-repl> :st 3 3: while calling a function TEST_DATA/stack_vars.nix:2:7 1| let 2| a = builtins.trace "before inner break" ( | ^ 3| let meow' = 3; in builtins.break { msg = "hello"; } Env level 0 static: a b Env level 1 abort baseNameOf break builtins derivation derivationStrict dirOf false fetchGit fetchMercurial fetchTarball fetchTree fromTOML import isNull map null placeholder removeAttrs scopedImport throw toString true