Demi Marie Obenour writes: > On 8/5/25 15:33, Alyssa Ross wrote: >> Demi Marie Obenour writes: >> >>> On 7/29/25 08:33, Alyssa Ross wrote: >>>> Demi Marie Obenour writes: >>>> >>>>> The following command fails to rebuild the image: >>>>> >>>>> $ nix-shell --run 'make clean && make run-qemu' >>>>> >>>>> The following command succeeds: >>>>> >>>>> $ nix-shell --pure --run 'make clean' && nix-shell --pure --run 'make run-qemu' >>>>> >>>>> Interactive Nix shells exhibit the same problems, and adding >>>>> --pure to the first invocation does not help. >>>> >>>> Works for me on 560fd87 in img/app. What were you testing? Logs? >>> >>> I think the problem only arises when there is a dependency that >>> default.nix knows about but the makefile doesn't. nix-shell >>> appears to import default.nix directly, so >>> >>> $ nix-build default.nix >>> >>> inside a Nix shell does not update various paths (like the path >>> to the kernel) that the makefile needs. >>> >>> I think it would be better for the makefile to import the >>> variables from Nix if possible. >> >> Yeah, that's not how it works. You need to exit and re-enter the shell. >> nix-build will not update your shell environment, and that's where Make >> variables come from. > > Ack. I think it is best to recommend (perhaps in the docs?) that one run > `nix-shell --pure --run 'make THINGS'`, which avoids all of these problems. > Providing a that did that would be ideal and should be fairly straightforward. > Using an interactive shell can be an optimization, but it can also result in > silently broken builds for at least the reason you mentioned, so I think it > is best to discourage it except in the repository root. From what I can tell, that's already the case in the documentation, with the exception of the one about Jekyll, which I'll fix.