Files
lix/tests
60b7121d2c Make the Derived Path family of types inductive for dynamic derivations
We want to be able to write down `foo.drv^bar.drv^baz`:
`foo.drv^bar.drv` is the dynamic derivation (since it is itself a
derivation output, `bar.drv` from `foo.drv`).

To that end, we create `Single{Derivation,BuiltPath}` types, that are
very similar except instead of having multiple outputs (in a set or
map), they have a single one. This is for everything to the left of the
rightmost `^`.

`NixStringContextElem` has an analogous change, and now can reuse
`SingleDerivedPath` at the top level. In fact, if we ever get rid of
`DrvDeep`, `NixStringContextElem` could be replaced with
`SingleDerivedPath` entirely!

Important note: some JSON formats have changed.

We already can *produce* dynamic derivations, but we can't refer to them
directly. Today, we can merely express building or example at the top
imperatively over time by building `foo.drv^bar.drv`, and then with a
second nix invocation doing `<result-from-first>^baz`, but this is not
declarative. The ethos of Nix of being able to write down the full plan
everything you want to do, and then execute than plan with a single
command, and for that we need the new inductive form of these types.

Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-08-10 00:08:32 -04:00
..
2020-04-14 18:45:06 +02:00
2023-07-31 13:02:54 +02:00
2021-07-07 10:48:47 +02:00
2019-12-13 19:05:26 +01:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2022-12-08 16:03:20 -05:00
2014-08-21 21:50:19 +02:00
2023-08-07 16:53:37 +02:00
2023-03-08 10:26:30 -05:00
2022-12-06 16:36:42 +01:00
2023-03-08 10:26:30 -05:00
2023-03-16 18:43:03 -04:00
2023-07-11 21:43:09 -04:00
2021-07-07 11:30:35 +02:00
2023-03-08 10:26:30 -05:00
2023-06-06 11:24:10 +02:00
2023-03-08 10:26:30 -05:00
2018-02-13 14:26:19 +00:00
2023-03-16 18:43:03 -04:00
2023-03-16 18:43:03 -04:00
2023-03-16 18:43:03 -04:00
2023-03-08 10:26:30 -05:00
2020-07-30 16:38:04 -05:00
2023-03-08 10:26:30 -05:00
2022-03-11 10:00:19 -05:00
2023-03-08 10:26:30 -05:00
2023-03-16 18:43:03 -04:00
2006-07-21 13:21:43 +00:00
2023-04-17 09:35:43 -04:00
2023-03-08 10:26:30 -05:00
2023-07-11 21:43:09 -04:00
2023-04-06 19:59:57 -04:00
2023-08-08 11:55:09 +02:00
2023-07-11 21:43:09 -04:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2023-07-03 12:23:57 +02:00
2020-07-30 16:38:04 -05:00
2023-03-16 18:43:03 -04:00
2018-01-16 19:23:18 +01:00
2023-03-08 10:26:30 -05:00
2021-10-15 16:58:21 +02:00
2023-04-06 19:59:57 -04:00
2018-01-16 19:23:18 +01:00
2023-07-11 21:43:09 -04:00
2018-02-25 16:40:05 -06:00
2023-03-08 10:26:30 -05:00
2016-04-11 16:20:15 +02:00
2023-03-16 18:43:03 -04:00
2021-12-07 21:45:09 +01:00
2007-08-13 13:15:02 +00:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2023-03-08 10:26:30 -05:00
2023-03-16 18:43:03 -04:00
2012-12-04 14:47:50 +01:00
2023-03-08 10:26:30 -05:00
2021-04-09 23:13:08 +02:00