Review
Before we continue into more advanced subjects, let's stop for a moment and
review. What have we gained here? First of all, we have standardized where our
binary builds are defined for our repository: /nix/example/apps.nix
. If we
want to add additional builds (i.e., a debug binary), we know exactly where to
put it. As a bonus, we don't even need to worry about the system fiasco that
flakes are often criticized for.
Secondly, we have standardized what most of our Nix code "looks" like. The
{inputs, cell}
format is deceptively powerful. One of the most significant
sources of complexity in large Nix codebases stems from the question, "How do I
access everything?" In our case:
- Inputs can be accessed via
inputs
- Anything within our local cell can be accessed via
cell
- Other cells can be accessed via
inputs.cells
Meaning that as long as we adhere to the organizational principles being applied
with std
, we don't have to worry about figuring out where to put things and
how to access them.