I’ve always hated the fact that Nix silently ignores any file that’s not tracked by Git. Partly because I always forget this and have to re-build every time that I add a new file. But also the fact that Nix is coupled to VCS.
jj is a new VCS that wraps git. jj has a slightly different (improved) workflow, and doesn’t have a staging area. What this means for Nix is that whenever I create a new file I have to run jj status (the equivalent to git status) before I can build with Nix, which feels incredibly silly to me.
Thanks for coming to my Ted talk.
Are you using flakes? I think this is a flakes specific thing.
I use a
Justfile, so I can make a file containing local shortcuts via thejustbinary.I have created this so I can run
just switch [wodan]([]implies optionality):default_host := "wodan" set shell := ["bash", "-euo", "pipefail", "-c"] # Apply a host configuration immediately and persist across reboots. switch host: sudo nixos-rebuild switch --flake .#"{{host}}"By doing this, I could prepend
git add .orjj status, while sticking tojust switchfor myself and not having to think about any pre-steps.I just think it’s neat.
Well, it doesn’t silently ignore files, it tells you if the work tree is dirty.
Though I’ve tripped over the different behaviors of the repl vs the rest of the tools myself in funny ways
Get in the habit of running
jj descmidway through a commit. Have you just discovered an insight in an old module? Do you see how you will write the next few hunks of code? Did you have a moment of clarity where you zoomed out and saw what the next week will look like? Document it! Let your commit messages have multiple paragraphs, each written at a different time. Fill your commits with annotations about what you were doing so that future-you will understand past-you.The reasoning here is that, aside from the
jj filesubcommands which directly alter the index, almost anyjjsubcommand will work. You might as well pick a subcommand which advances your goals.Never seen this behavior. Since when is nix tied to git? Are you using lix or something?
They’re using flakes.


