A real succinct overview of Nix basics would be really good, it’s still somewhat of a mystery how it works and what steps to take when troubleshooting.
If there’s a way that repositories can be setup such that contributors don’t have to think about Nix (including with the addition of custom repo-specific commands), it would be great to have instructions as to how to achieve that. Currently (probably due to legacy) my team is expected to reason about whether they’re in “normal mode” or “nix mode” and that creates room for avoidable errors.
Also would be great to have better docs on how to run one-off Nix commands (I am running things like nix-shell holonix-0.0.29 --run hn-flush which seems messy, but don’t know if that’s idiomatic); how to determine the available Nix commands, and how to setup an unattended upgrade script i.e. install a Nix shell package without also booting it up interactively.
Also I’ve been missing instructions on how to setup a project’s dependencies to a particular version of Holochain, everything so far (eg. https://holochain.love) has been “quick start” oriented rather than “serious workflow” oriented.
It’s getting cleaner now, but some lingering context switching remains, see here.
So for performance reasons, devs need to know to enter nix-shell before doing anything else. There might even need to be duplicated script configurations for development use vs CI.
The other issue with Nix is encountering Bad owner or permissions on $HOME/.ssh/config when attempting to run any commands that interact with SSH (i.e. git). Unsure if there is a way to fix this (if so, docs would be great @thedavidmeister); but that’s the other context switch contributors still need to be aware of.
I’ve still been using just the nix-shell and pointing to the specific tarball I need. I got some errors before trying to convert to using a Nix configuration file, but need to revisit that now that I’m able to compile and run again on the latest release. I will say I’ve been pleasantly surprised how easy NixOS and by extension nix-shell are to use in the fail-fix-retry cycle. I’m still waiting on my new development machine to arrive, but to practice with Nix I set up NixOS on an old netbook and even though I had to struggle to get some things working, it was still much easier to just change the configuration file and retry and know that I have an install and configuration process that is totally repeatable. I’m excited to just switch to NixOS as my distro going forward.