Nix 2.26.3
Nix, the purely functional package manager; unstable internal interfaces
 
Loading...
Searching...
No Matches
installable-value.hh
Go to the documentation of this file.
1#pragma once
3
4#include "installables.hh"
5#include "flake/flake.hh"
6
7namespace nix {
8
9struct PackageInfo;
11
12namespace eval_cache { class EvalCache; class AttrCursor; }
13
14struct App
15{
16 std::vector<DerivedPath> context;
17 Path program;
18 // FIXME: add args, sandbox settings, metadata, ...
19};
20
22{
23 App unresolved;
24 App resolve(ref<Store> evalStore, ref<Store> store);
25};
26
34struct ExtraPathInfoValue : ExtraPathInfo
35{
39 struct Value {
43 std::optional<NixInt::Inner> priority;
44
51 std::string attrPath;
52
57 };
58
59 Value value;
60
61 ExtraPathInfoValue(Value && v)
62 : value(std::move(v))
63 { }
64
65 virtual ~ExtraPathInfoValue() = default;
66};
67
72struct InstallableValue : Installable
73{
74 ref<EvalState> state;
75
76 InstallableValue(ref<EvalState> state) : state(state) {}
77
78 virtual ~InstallableValue() { }
79
80 virtual std::pair<Value *, PosIdx> toValue(EvalState & state) = 0;
81
87 virtual std::vector<ref<eval_cache::AttrCursor>>
88 getCursors(EvalState & state);
89
95 getCursor(EvalState & state);
96
97 UnresolvedApp toApp(EvalState & state);
98
99 static InstallableValue & require(Installable & installable);
100 static ref<InstallableValue> require(ref<Installable> installable);
101
102protected:
103
118 std::optional<DerivedPathWithInfo> trySinglePathToDerivedPaths(Value & v, const PosIdx pos, std::string_view errorCtx);
119};
120
121}
Definition eval.hh:182
Definition pos-idx.hh:9
Definition eval-cache.hh:88
Definition eval-cache.hh:32
Definition ref.hh:15
ChunkedVector< std::string, 8192 > store
Definition lexer.l:1011
Definition installable-value.hh:15
Definition outputs-spec.hh:96
Definition installable-value.hh:39
std::optional< NixInt::Inner > priority
Definition installable-value.hh:43
ExtendedOutputsSpec extendedOutputsSpec
Definition installable-value.hh:56
std::string attrPath
Definition installable-value.hh:51
Definition installable-value.hh:35
Definition installables.hh:63
virtual ref< eval_cache::AttrCursor > getCursor(EvalState &state)
Definition installable-value.cc:17
std::optional< DerivedPathWithInfo > trySinglePathToDerivedPaths(Value &v, const PosIdx pos, std::string_view errorCtx)
Definition installable-value.cc:45
virtual std::vector< ref< eval_cache::AttrCursor > > getCursors(EvalState &state)
Definition installable-value.cc:8
Definition installables.hh:114
Definition get-drvs.hh:17
Definition command.hh:136
Definition installable-value.hh:22
Definition value.hh:167
std::string Path
Definition types.hh:22