| 30 Jul 2021 |
David Arnold (blaggacao) | (or at least that is my understanding of that RFC) | 16:33:57 |
David Arnold (blaggacao) | In reply to @d4hines:matrix.org I've read through some of the Nix pills and I've gotten DevOS working, and that's about it. It's quite a learning curve Honestly, I don't find the nix-pills super useful. But I guess we don't yet live up to rust standards in terms of docs 😃🦧 | 16:34:57 |
@d4hines:matrix.org | In reply to @blaggacao:matrix.org Honestly, I don't find the nix-pills super useful. But I guess we don't yet live up to rust standards in terms of docs 😃🦧 Do you have any recommendations on how to get to "journeyman status" in Nix? | 16:36:11 |
@yusdacra:nixos.dev | The only docs I've read was the manuals, was enough for me personally. I got bored of nix pills 😛 | 16:36:20 |
@yusdacra:nixos.dev | Oh and reading nixpkgs derivations. | 16:36:35 |
David Arnold (blaggacao) | In reply to @d4hines:matrix.org Do you have any recommendations on how to get to "journeyman status" in Nix? For me, it was contributing to devos 😃😂 | 16:37:31 |
David Arnold (blaggacao) | The biggest hurdle was 1) no good IDE support 2) really awkward tracing and debugging workflows. | 16:38:21 |
@d4hines:matrix.org | "infinite recursion encountered" lol | 16:38:45 |
@d4hines:matrix.org | That's what I get whenever I try to modify the overlay | 16:39:00 |
David Arnold (blaggacao) | For tracing I find this flag useful: --override-input nixos path:/absolute/path/to/local/workdir/of/nixpkgs/with/a/few/traces | 16:39:47 |
@yusdacra:nixos.dev | 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:nixos.dev | 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:nixos.dev | 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:nixos.dev | 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 |