Fix recursive defaults inclusion causing duplicated values on arrays. (#42)
See #40, #42.
### Changes for fix:
Our [dependencies](https://github.com/vic/den/blob/deps/modules/aspects/dependencies.nix) system is now separate from the actual aspect [definitions](https://github.com/vic/den/blob/deps/modules/aspects/definition.nix).
Added a [test](https://github.com/vic/den/blob/deps/templates/default/modules/_example/aspects.nix#L42) that checks only [one hello package](https://github.com/vic/den/blob/deps/templates/default/modules/_example/ci.nix#L100) is contributed to the config.
Basically we have more types of context now to avoid the recursion:
`{ host }` is for Host configuration (likely nixos/darwin)
`{ host, user }` is for User config (most likely homeManager)
`{ home }` is for standalone home-manager.
`{ fromUser, toHost }` is for users contributing configuration to hosts.
`{ fromHost, toUser }` is for hosts contributing to its users.
Using these more explicit contexts instead of how we previously only used `{ host, user }` for the bi-directional dependencies. Fixed this.
So basically, contexts need to be exact, `{ host, ...}` is just `{ host }`, according to `lib.functionArgs` there's no way to tell them apart.
If you look at the definition of host/user/home aspects, they only include `den.default`.
And we have some parametric defaults that add configuration depending on context,
for example, [this one](https://github.com/vic/den/blob/deps/modules/aspects/dependencies.nix#L16) just adds the host-same-class values from `den.defaults` into a host.
our `den.default` is how dependencies work via parametric functions. So, in den the argument names (the context) of configuration providers is quite important, that's how they know what kind of configuration to produce.
Here's the output of running [my fork](https://github.com/Cybolic/nix-den-double-import-demo/pull/1) of the reproduction repository:
```console
vic@nargun ~/h/nix-den-double-import-demo> nix eval --override-input den github:vic/den/deps --refresh .#.nixosConfigurations.test-host.config.users.users.test-user.packages
warning: not writing modified lock file of flake 'git+file:///home/vic/hk/nix-den-double-import-demo':
• Updated input 'den':
'github:vic/den/04dfe099cc7d4f773f4fd50bdf0571791a2e9fad?narHash=sha256-pM0/ri%2B4LPrZUIv9c8Bh4%2BRyB2VMGyChXrxyIP4mbjs%3D' (2025-11-05) → 'github:vic/den/3dfb65c872655fe0f3853a6229ceda32cd4045ed?narHash=sha256-1UUIU8nddcNTqGr2Wz3ASVXxbBIafeU/fGSelhd1GpA%3D' (2025-11-06)
trace: [ "host" ]
trace: [ "aspect-chain" "class" ]
trace: [ "fromUser" "toHost" ]
[ «derivation /nix/store/dzgpbp0vp7lj7lgj26rjgmnjicq2wf4k-hello-2.12.2.drv» ]
```
authored by