summary refs log tree commit diff
path: root/src/libexpr
AgeCommit message (Collapse)Author
2007-09-17* nix-env: allow ~/.nix-defexpr to be a directory. If it is, then theEelco Dolstra
Nix expressions in that directory are combined into an attribute set {file1 = import file1; file2 = import file2; ...}, i.e. each Nix expression is an attribute with the file name as the attribute name. Also recurses into directories. * nix-env: removed the "--import" (-I) option which set the ~/.nix-defexpr symlink. * nix-channel: don't use "nix-env --import", instead symlink ~/.nix-defexpr/channels. So finally nix-channel --update doesn't override any default Nix expressions but combines with them. This means that you can have (say) a local Nixpkgs SVN tree and use it as a default for nix-env: $ ln -s .../path-to-nixpkgs-tree ~/.nix-defexpr/nixpkgs_svn and be subscribed to channels (including Nixpkgs) at the same time. (If there is any ambiguity, the -A flag can be used to disambiguate, e.g. "nix-env -i -A nixpkgs_svn.pan".)
2007-08-18primop functions listToAttrs (+test), __isAttrs, __trace addedMarc Weber
new configuration style proposal in lib/default-unstable.nix
2007-08-07* Don't allocate input files on the stack.Eelco Dolstra
2007-05-16* New builtin function "isFunction". You're not supposed to use itEelco Dolstra
;-) * Channels: fix channels that are plain lists of derivations (like strategoxt-unstable) instead of functions (like nixpkgs-unstable). This fixes the error message "error: the left-hand side of the function call is neither a function nor a primop (built-in operation) but a list".
2007-05-15* Allow empty argument lists in function definitions (e.g., `{}:Eelco Dolstra
bla'). Also allow trailing commas (`{x, y,}: ...') as a unintented consequence. Hopefully the reduce/reduce conflict won't cause any problems.
2007-05-01* Give unpacked channels more sensible names than 0, 1, ... They nowEelco Dolstra
get the basename of the channel URL (e.g., nixpkgs-unstable). The top-level Nix expression of the channel is now an attribute set, the attributes of which are the individual channels (e.g., {nixpkgs_unstable = ...; strategoxt_unstable = ...}). This makes attribute paths ("nix-env -qaA" and "nix-env -iA") more sensible, e.g., "nix-env -iA nixpkgs_unstable.subversion".
2007-05-01* nix-env -i: instead of breaking package ties by version, break themEelco Dolstra
by priority and version install. That is, if there are multiple packages with the same name, then pick the package with the highest priority, and only use the version if there are multiple packages with the same priority. This makes it possible to mark specific versions/variant in Nixpkgs more or less desirable than others. A typical example would be a beta version of some package (e.g., "gcc-4.2.0rc1") which should not be installed even though it is the highest version, except when it is explicitly selected (e.g., "nix-env -i gcc-4.2.0rc1"). * Idem for nix-env -u, only the semantics are a bit trickier since we also need to take into account the priority of the currently installed package (we never upgrade to a lower priority, unless --always is given).
2007-04-16* New primop "throw <string>" to throw an error. This is like abort,Eelco Dolstra
only thrown errors are caught by the top-level derivation evaluation in nix-env -qa / -i.
2007-02-27* Greatly reduced the amount of stack space used by the Nix expressionEelco Dolstra
evaluator. This was important because the NixOS expressions started to hit 2 MB default stack size on Linux. GCC is really dumb about stack space: it just adds up all the local variables and temporaries of every scope into one huge stack frame. This is really bad for deeply recursive functions. For instance, every `throw Error(format("error message"))' causes a format object of a few hundred bytes to be allocated on the stack. As a result, every recursive call to evalExpr2() consumed 4680 bytes. By splitting evalExpr2() and by moving the exception-throwing code out of the main functions, evalExpr2() now only consumes 40 bytes. Similar for evalExpr().
2007-02-27* When NIX_SHOW_STATS=1, show the amount of stack space consumed byEelco Dolstra
the Nix expression evaluator.
2007-02-02* nix-env now maintains meta info (from the `meta' derivationEelco Dolstra
attribute) about installed packages in user environments. Thus, an operation like `nix-env -q --description' shows useful information not only on available packages but also on installed packages. * nix-env now passes the entire manifest as an argument to the Nix expression of the user environment builder (not just a list of paths), so that in particular the user environment builder has access to the meta attributes. * New operation `--set-flag' in nix-env to change meta info of installed packages. This will be useful to pass per-package policies to the user environment builder (e.g., how to resolve collision or whether to disable a package (NIX-80)) or upgrade policies in nix-env (e.g., that a package should be "masked", that is, left untouched by upgrade actions). Example: $ nix-env --set-flag enabled false ghc-6.4
2007-01-29* computeStorePathForText: take the references into account whenEelco Dolstra
computing the store path (NIX-77). This is an important security property in multi-user Nix stores. Note that this changes the store paths of derivations (since the derivation aterms are added using addTextToStore), but not most outputs (unless they use builtins.toFile).
2007-01-29* Don't capitalise the primop functions.Eelco Dolstra
2007-01-29* Organise primops.cc a bit better.Eelco Dolstra
2007-01-29New primitives:Eelco Dolstra
* `sub' to subtract two numbers. * `stringLength' to get the length of a string. * `substring' to get a substring of a string. These should be enough to allow most string operations to be expressed.
2007-01-29* filterSource: pass strings to the predicate function instead ofEelco Dolstra
paths. Paths can have unexpected semantics.
2007-01-15* Handle multiple indirect symlinks when loading a Nix expression.Eelco Dolstra
2007-01-15* builtins.filterSource: pass the type of the file ("regular",Eelco Dolstra
"directory", "symlink") as the second argument to the filter predicate.
2007-01-14* Option --argstr for passing string arguments easily. (NIX-75)Eelco Dolstra
2007-01-13* Canonicalise ASTs in `nix-instantiate --eval': remove positionEelco Dolstra
info, sort attribute sets.
2007-01-13* Memoize strict evaluation.Eelco Dolstra
2007-01-13* printTermAsXML: treat derivations specially; emit an elementEelco Dolstra
<derivation outPath=... drvPath=...> attrs </derivation>. Only emit the attributes of any specific derivation only. This prevents exponententially large XML output due to the absense of sharing.
2007-01-13* Make printing an expression as XML interruptible.Eelco Dolstra
2007-01-13* Cleanup.Eelco Dolstra
2006-12-13* Remove debug message.Eelco Dolstra
2006-12-12* New primop builtins.filterSource, which can be used to filter filesEelco Dolstra
from a source directory. All files for which a predicate function returns true are copied to the store. Typical example is to leave out the .svn directory: stdenv.mkDerivation { ... src = builtins.filterSource (path: baseNameOf (toString path) != ".svn") ./source-dir; # as opposed to # src = ./source-dir; } This is important because the .svn directory influences the hash in a rather unpredictable and variable way.
2006-12-12* New built-in function `builtins.attrNames' that returns theEelco Dolstra
names of the attributes in an attribute set.
2006-12-02* Remove SwitchToOriginalUser, we're not going to need it anymore.Eelco Dolstra
2006-12-01* Replace read-only calls to addTextToStore.Eelco Dolstra
2006-12-01* Merge addToStore and addToStoreFixed.Eelco Dolstra
* addToStore now adds unconditionally, it doesn't use readOnlyMode. Read-only operation is up to the caller (who can call computeStorePathForPath).
2006-11-30* Put building in the store API.Eelco Dolstra
2006-11-30* Refactoring. There is now an abstract interface class StoreAPIEelco Dolstra
containing functions that operate on the Nix store. One implementation is LocalStore, which operates on the Nix store directly. The next step, to enable secure multi-user Nix, is to create a different implementation RemoteStore that talks to a privileged daemon process that uses LocalStore to perform the actual operations.
2006-11-03* Fix importing of derivation outputs.Eelco Dolstra
2006-10-23* Some better error messages.Eelco Dolstra
2006-10-19* Better message.Eelco Dolstra
2006-10-19* toFile: maintain the references.Eelco Dolstra
2006-10-17* Backwards compatibility hack for user environments made by Nix <= 0.10.Eelco Dolstra
2006-10-17* Backwards compatibility with old user environment manifests.Eelco Dolstra
2006-10-17* Print out the offending path.Eelco Dolstra
2006-10-17* An awful backwards compatibility hack.Eelco Dolstra
2006-10-17* baseNameOf: paths don't have to be absolute.Eelco Dolstra
2006-10-17* toPath: should be the identity on paths.Eelco Dolstra
2006-10-17* dirOf: return a path if the argument is a path.Eelco Dolstra
2006-10-17* toString: don't copy paths. So toString can be used to passEelco Dolstra
non-store paths to a builder.
2006-10-17* Do the path check on the normal form.Eelco Dolstra
2006-10-16* Big cleanup of the semantics of paths, strings, contexts, stringEelco Dolstra
concatenation and string coercion. This was a big mess (see e.g. NIX-67). Contexts are now folded into strings, so that they don't cause evaluation errors when they're not expected. The semantics of paths has been clarified (see nixexpr-ast.def). toString() and coerceToString() have been merged. Semantic change: paths are now copied to the store when they're in a concatenation (and in most other situations - that's the formalisation of the meaning of a path). So "foo " + ./bla evaluates to "foo /nix/store/hash...-bla", not "foo /path/to/current-dir/bla". This prevents accidental impurities, and is more consistent with the treatment of derivation outputs, e.g., `"foo " + bla' where `bla' is a derivation. (Here `bla' would be replaced by the output path of `bla'.)
2006-10-11* Removed URIs from the evaluator (NIX-66). They are now just anotherEelco Dolstra
kind of notation for strings.
2006-10-10* Quick hack to fix NIX-67: evaluation result differing if the NixEelco Dolstra
expression resides in the store.
2006-10-10* `import': unwrap the context. Necessary to make `import (x + y)'Eelco Dolstra
work, where x is a store path.
2006-10-03* toXML: propagate the context to allow derivations to be used in theEelco Dolstra
argument.