| 30 Jul 2021 | 
 yusdacra | How does that help? | 16:40:11 | 
 David Arnold (blaggacao) | ... at least it guarantees that you are eventually able to fijd the root cause without resorting to chances. | 16:40:38 | 
 David Arnold (blaggacao) | * ... at least it guarantees that you are eventually able to find the root cause without resorting to chances. | 16:40:45 | 
 David Arnold (blaggacao) | So I look at the backtraces and place a few traces in nixpkgs to understand what's really going on and then use that modified version of nixpkgs as an inout  | 16:41:24 | 
 David Arnold (blaggacao) | * So I look at the backtraces and place a few traces in nixpkgs to understand what's really going on and then use that modified version of nixpkgs as an input.  | 16:41:36 | 
 David Arnold (blaggacao) | * ... at least it guarantees that you are eventually able to find the root cause without resorting to rolling the dices. | 16:42:31 | 
 David Arnold (blaggacao) |  Gytis Ivaskevicius has made a PR to nix to eventually improve that situation.  | 16:43:20 | 
 yusdacra |   In reply to @blaggacao:matrix.org So I look at the backtraces and place a few traces in nixpkgs to understand what's really going on and then use that modified version of nixpkgs as an input.  Ooooh  | 16:44:34 | 
 David Arnold (blaggacao) | https://github.com/NixOS/nix/pull/4914 | 16:44:34 | 
 yusdacra | That's useful | 16:46:01 | 
 @timdeh:matrix.org |   I find some common patterns that reliably cause infinite recursion: 
- careless use of 
rec in overlays 
- computation directly in an import
 
 
Both of these can be easily solved by using a let binding instead. Whenever I find infinite recursion and I can't trace it back to my local changes, i.e. tons of nixpkgs traces, I just start commenting stuff out until it works, and then work backwards from there 😅 
  | 16:46:35 | 
 David Arnold (blaggacao) | ... buts somtimes chaos monkey dice rolling is quicker 😃🦧 | 16:46:46 | 
 yusdacra | I would love to add debugging traces to a nix library of mine, but using builtins.trace would print way too much stuff | 16:46:48 | 
 David Arnold (blaggacao) |   In reply to @timdeh:matrix.org
 I find some common patterns that reliably cause infinite recursion: 
- careless use of 
rec in overlays 
- computation directly in an import
 
 
Both of these can be easily solved by using a let binding instead. Whenever I find infinite recursion and I can't trace it back to my local changes, i.e. tons of nixpkgs traces, I just start commenting stuff out until it works, and then work backwards from there 😅 
  I can complement: 
- Similar to 
rec, it can also happen with overlays and "recless" crossing of prev and final dependency. 
- Using flake 
self outside of an output value seems to cause that too. 
   | 16:48:54 | 
 @timdeh:matrix.org | Maybe we change to channel to DevOS/Nix Debugging 🤣 | 16:49:43 | 
 @timdeh:matrix.org |  * Maybe we change the channel name to DevOS/Nix Debugging 🤣 | 16:49:53 | 
 @timdeh:matrix.org | What you refer to as DevOS is in fact Nix Debugging/DevOS 🤓 | 16:50:35 | 
 David Arnold (blaggacao) | If we are a nixos nursery, we need to definitly empower users as much as possible. 😎 | 16:50:44 | 
 David Arnold (blaggacao) | Which makes me think of adding a section to the docs for debugging... | 16:51:33 | 
 David Arnold (blaggacao) | * Which makes me think of adding a section to the docs for (teaching) debugging... | 16:51:44 | 
 David Arnold (blaggacao) |  I'd rather be an enabler than a fixer.  | 16:52:32 | 
 @gytis-ivaskevicius:matrix.org |   In reply to @blaggacao:matrix.org Gytis Ivaskevicius has made a PR to nix to eventually improve that situation.  if you are talking about builtins.debug - dont expect it to get merged :D  | 16:53:20 | 
 @timdeh:matrix.org |  d4hines: hopefully our little Nix debugging venting session is useful for your future endeavors 😛  | 16:57:56 | 
 @d4hines:matrix.org | Yeah, this looks like helpful info but I don't have the context to place it yet | 16:58:18 | 
 David Arnold (blaggacao) |  I think another journyman status standard move is rg 'someThingThatINeedToUnderstand =' <path to nixpkgs>  | 16:59:45 | 
 David Arnold (blaggacao) |  * I think another journeyman status standard move is rg 'someThingThatINeedToUnderstand =' <path to nixpkgs>  | 17:00:08 | 
 David Arnold (blaggacao) |  * I think another journeyman status standard move is rg 'someThingThatINeedToUnderstand =' <path to nixpkgs> (but there might be an improved version of that move?)  | 17:00:34 | 
 David Arnold (blaggacao) |  * I think another journeyman status standard move is rg -A 3 'someThingThatINeedToUnderstand =' <path to nixpkgs> (but there might be an improved version of that move?)  | 17:00:55 | 
 David Arnold (blaggacao) |  * I think another journeyman status standard move is rg -C 3 'someThingThatINeedToUnderstand =' <path to nixpkgs> (but there might be an improved version of that move?)  | 17:01:03 | 
 @timdeh:matrix.org |  I use that one quite a bit as well, don't think there is a better one except maybe manix?  | 17:03:26 |