The search path of Nix contains by default the "nix" prefix that points
to $datadir/nix/corepkgs, where $datadir defaults to $prefix/lib at
installation time, but can be overriden by NIX_DATA_DIR.
We implemented it using `Paths.hnix.getDataDir` and `NIX_DATA_DIR` to
follow Nix behaviour as closely as possible.
A small discrepancy is that we do the lookup on each invocation, where
Nix caches the searchPath at context creation.
Fix an issue where compound attributes would discard previous bindings
in a let statement.
`let a=1; b.b=2; c=3; in a` would fail, where
`let a=1; b.b=2; c=3; in c` would work as expected.
The only actual breaking change affecting `hnix` is `these` splitting
into three packages and renaming some things. Otherwise, as the
package should work fine with either the newer or older versions, I
have left the previous bounds in place and added the new ones
disjunctively.
This will help somewhat with #494.
Heterogeneous: consisting of dissimilar elements.
Heterogenous:
1. not originating within the body;
(ex: "You are NOT of the body!" by Dr. Leonard "Bones" McCoy)
2. of foreign origin;
3. heterogeneous.
Nix's ++ does not in fact allow concatting null with a list:
nix-repl> [] ++ null
error: value is null while a list was expected, at (string):1:1
nix-repl> null ++ []
error: value is null while a list was expected, at (string):1:1
Otherwise:
```
cabal test
Warning: The test command is a part of the legacy v1 style of cabal usage.
Please switch to using either the new project style and the new-test command
or the legacy v1-test alias as new-style projects will become the default in
the next version of cabal-install. Please file a bug if you cannot replicate a
working v1- use case with the new-style commands.
For more information, see: https://wiki.haskell.org/Cabal/NewBuild
/nix/store/iajira937isi5mjnrdcnvazd6p63b31d-ghc-8.6.3-with-packages/bin/ghc-pkg: createProcess: runInteractiveProcess: exec: does not exist (No such file or directory)
```
So at the very least `cabal new-test` seems to be required.