Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
flake.hh
Go to the documentation of this file.
1#pragma once
3
4#include "lix/libexpr/eval.hh"
9
10namespace nix {
11
12class EvalState;
13
14namespace fetchers { struct Tree; }
15
16namespace flake {
17
18struct FlakeInput;
19
20typedef std::map<FlakeId, FlakeInput> FlakeInputs;
21
43
45{
46 std::optional<FlakeRef> ref;
52 bool isFlake = true;
53 std::optional<InputPath> follows;
54 FlakeInputs overrides;
55};
56
58{
59 using ConfigValue = std::variant<std::string, int64_t, Explicit<bool>, std::vector<std::string>>;
60
61 std::map<std::string, ConfigValue> settings;
62
63 void apply();
64};
65
69struct Flake
70{
86 bool forceDirty = false;
87 std::optional<std::string> description;
88 std::shared_ptr<const fetchers::Tree> sourceInfo;
89 FlakeInputs inputs;
94 ~Flake();
95};
96
97Flake getFlake(EvalState & state, const FlakeRef & flakeRef, bool allowLookup);
98
103
105{
106 Flake flake;
107 LockFile lockFile;
108
109 Fingerprint getFingerprint() const;
110};
111
113{
118 bool recreateLockFile = false;
119
125 bool updateLockFile = true;
126
134 bool writeLockFile = true;
135
140 std::optional<bool> useRegistries = std::nullopt;
141
145
146 bool applyNixConfig = false;
147
154 bool allowUnlocked = true;
155
159 bool commitLockFile = false;
160
164 std::optional<std::string> referenceLockFilePath;
165
169 std::optional<Path> outputLockFilePath;
170
174 std::map<InputPath, FlakeRef> inputOverrides;
175
180 std::set<InputPath> inputUpdates;
181};
182
183LockedFlake lockFlake(
184 EvalState & state,
185 const FlakeRef & flakeRef,
186 const LockFlags & lockFlags);
187
188void callFlake(
189 EvalState & state,
190 const LockedFlake & lockedFlake,
191 Value & v);
192
193}
194
195void emitTreeAttrs(
196 Evaluator & state,
197 const fetchers::Tree & tree,
198 const fetchers::Input & input,
199 Value & v,
200 bool emptyRevFallback = false,
201 bool forceDirty = false);
202
203}
Definition eval.hh:685
Definition eval.hh:533
Hash Fingerprint
Definition flake.hh:102
Definition flakeref.hh:35
Definition hash.hh:41
Definition value.hh:190
Definition fetchers.hh:39
Definition fetchers.hh:23
Definition flake.hh:58
Definition flake.hh:45
bool isFlake
Definition flake.hh:52
Definition flake.hh:70
ConfigFile config
Definition flake.hh:93
FlakeRef originalRef
Definition flake.hh:74
bool forceDirty
Definition flake.hh:86
FlakeRef resolvedRef
Definition flake.hh:78
FlakeRef lockedRef
Definition flake.hh:82
Definition lockfile.hh:53
Definition flake.hh:113
std::map< InputPath, FlakeRef > inputOverrides
Definition flake.hh:174
bool applyNixConfig
Definition flake.hh:146
bool updateLockFile
Definition flake.hh:125
bool recreateLockFile
Definition flake.hh:118
std::set< InputPath > inputUpdates
Definition flake.hh:180
bool commitLockFile
Definition flake.hh:159
std::optional< Path > outputLockFilePath
Definition flake.hh:169
bool writeLockFile
Definition flake.hh:134
std::optional< bool > useRegistries
Definition flake.hh:140
std::optional< std::string > referenceLockFilePath
Definition flake.hh:164
bool allowUnlocked
Definition flake.hh:154
Definition flake.hh:105