mirror of
https://github.com/NixOS/nix
synced 2025-06-27 00:11:17 +02:00
* Add a Nix expression search path feature. Paths between angle
brackets, e.g. import <nixpkgs/pkgs/lib> are resolved by looking them up relative to the elements listed in the search path. This allows us to get rid of hacks like import "${builtins.getEnv "NIXPKGS_ALL"}/pkgs/lib" The search path can be specified through the ‘-I’ command-line flag and through the colon-separated ‘NIX_PATH’ environment variable, e.g., $ nix-build -I /etc/nixos ... If a file is not found in the search path, an error message is lazily thrown.
This commit is contained in:
parent
54945a2950
commit
1ecc97b6bd
24 changed files with 98 additions and 9 deletions
|
@ -213,11 +213,16 @@ private:
|
|||
|
||||
std::map<Path, Expr *> parseTrees;
|
||||
|
||||
Paths searchPath;
|
||||
Paths::iterator searchPathInsertionPoint;
|
||||
|
||||
public:
|
||||
|
||||
EvalState();
|
||||
~EvalState();
|
||||
|
||||
void addToSearchPath(const string & s);
|
||||
|
||||
/* Parse a Nix expression from the specified file. If `path'
|
||||
refers to a directory, then "/default.nix" is appended. */
|
||||
Expr * parseExprFromFile(Path path);
|
||||
|
@ -229,6 +234,9 @@ public:
|
|||
form. */
|
||||
void evalFile(const Path & path, Value & v);
|
||||
|
||||
/* Look up a file in the search path. */
|
||||
Path findFile(const string & path);
|
||||
|
||||
/* Evaluate an expression to normal form, storing the result in
|
||||
value `v'. */
|
||||
void eval(Expr * e, Value & v);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue