mirror of
https://github.com/NixOS/nix
synced 2025-07-07 06:01:48 +02:00
Stratify ExtraPathInfo
along Installable
hierarchy
Instead of having a bunch of optional fields, have a few subclasses which can have mandatory fields. Additionally, the new `getExtraPathInfo`, and `nixpkgsFlakeRef`, are moved to `InstallableValue`. I did these things because https://github.com/NixOS/rfcs/pull/134 ; with these things moved to `InstallableValue`, the base `Installable` no longer depends on libexpr! This is a major step towards that. Also, add a bunch of doc comments for sake of the internal API docs.
This commit is contained in:
parent
e00abd3f56
commit
256f3e3063
12 changed files with 254 additions and 76 deletions
|
@ -4,6 +4,30 @@
|
|||
|
||||
namespace nix {
|
||||
|
||||
/**
|
||||
* Extra info about a \ref DerivedPath "derived path" that ultimately
|
||||
* come from a Flake.
|
||||
*
|
||||
* Invariant: every ExtraPathInfo gotten from an InstallableFlake should
|
||||
* be possible to downcast to an ExtraPathInfoFlake.
|
||||
*/
|
||||
struct ExtraPathInfoFlake : ExtraPathInfoValue
|
||||
{
|
||||
/**
|
||||
* Extra struct to get around C++ designated initializer limitations
|
||||
*/
|
||||
struct Flake {
|
||||
FlakeRef originalRef;
|
||||
FlakeRef resolvedRef;
|
||||
};
|
||||
|
||||
Flake flake;
|
||||
|
||||
ExtraPathInfoFlake(Value && v, Flake && f)
|
||||
: ExtraPathInfoValue(std::move(v)), flake(f)
|
||||
{ }
|
||||
};
|
||||
|
||||
struct InstallableFlake : InstallableValue
|
||||
{
|
||||
FlakeRef flakeRef;
|
||||
|
@ -33,8 +57,10 @@ struct InstallableFlake : InstallableValue
|
|||
|
||||
std::pair<Value *, PosIdx> toValue(EvalState & state) override;
|
||||
|
||||
/* Get a cursor to every attrpath in getActualAttrPaths()
|
||||
that exists. However if none exists, throw an exception. */
|
||||
/**
|
||||
* Get a cursor to every attrpath in getActualAttrPaths() that
|
||||
* exists. However if none exists, throw an exception.
|
||||
*/
|
||||
std::vector<ref<eval_cache::AttrCursor>>
|
||||
getCursors(EvalState & state) override;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue