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.

  • NostraDavid@programming.dev
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    1
    ·
    23 days ago

    I use a Justfile, so I can make a file containing local shortcuts via the just binary.

    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 . or jj status, while sticking to just switch for myself and not having to think about any pre-steps.

    https://github.com/casey/just

    I just think it’s neat.

  • Laser@feddit.org
    link
    fedilink
    English
    arrow-up
    3
    ·
    22 days ago

    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

  • Corbin@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    ·
    9 days ago

    Get in the habit of running jj desc midway 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 file subcommands which directly alter the index, almost any jj subcommand will work. You might as well pick a subcommand which advances your goals.