1
0
Fork 0
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:
Eelco Dolstra 2011-08-06 16:05:24 +00:00
parent 54945a2950
commit 1ecc97b6bd
24 changed files with 98 additions and 9 deletions

View file

@ -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);