about summary refs log tree commit diff
path: root/corepkgs
AgeCommit message (Collapse)AuthorFilesLines
2005-03-14 * Set NAR name to content hash; previous nix-push names were notEelco Dolstra1-1/+3
unique. * Drop `hashAlgo' attribute in manifests; prefix hashes with the hash algorithm instead.
2005-03-07 * Automatically add propagated build inputs to user environments.Eelco Dolstra1-1/+15
Maybe this is a bad idea.
2005-01-25 * Really fix the substitute mechanism, i.e., ensure the closureEelco Dolstra4-21/+4
invariant by registering references through the manifest. * Added a test for nix-pull.
2005-01-17 * Removed the `id' attribute hack.Eelco Dolstra2-9/+18
* Formalise the notion of fixed-output derivations, i.e., derivations for which a cryptographic hash of the output is known in advance. Changes to such derivations should not propagate upwards through the dependency graph. Previously this was done by specifying the hash component of the output path through the `id' attribute, but this is insecure since you can lie about it (i.e., you can specify any hash and then produce a completely different output). Now the responsibility for checking the output is moved from the builder to Nix itself. A fixed-output derivation can be created by specifying the `outputHash' and `outputHashAlgo' attributes, the latter taking values `md5', `sha1', and `sha256', and the former specifying the actual hash in hexadecimal or in base-32 (auto-detected by looking at the length of the attribute value). MD5 is included for compatibility but should be considered deprecated. * Removed the `drvPath' pseudo-attribute in derivation results. It's no longer necessary. * Cleaned up the support for multiple output paths in derivation store expressions. Each output now has a unique identifier (e.g., `out', `devel', `docs'). Previously there was no way to tell output paths apart at the store expression level. * `nix-hash' now has a flag `--base32' to specify that the hash should be printed in base-32 notation. * `fetchurl' accepts parameters `sha256' and `sha1' in addition to `md5'. * `nix-prefetch-url' now prints out a SHA-1 hash in base-32. (TODO: a flag to specify the hash.)
2004-12-20 * Place manifests in /nix/var/nix/manifests.Eelco Dolstra5-271/+1
* Use the new patch downloader.
2004-12-13 * Include the size of the bzipped archive (necessary for computing theEelco Dolstra1-4/+8
cheapest download path), as well as the hash of the contents of the path (necessary for checking patch applicability).
2004-12-13 * Patch deployment. `download.pl' (intended to be used in theEelco Dolstra1-0/+218
substitute mechanism) creates a store path by downloading full NAR archives and/or patches specified in the available manifests. Any combination of present paths, full downloads, and patches can be used to construct the target path. In particular, patches can be chained in sequence; and full NAR archives of the target path can be omitted (i.e., patch-only deployment is possible). A shortest path algorithm is used to find the smallest set of files to be downloaded (the edge weights are currently file sizes, but one can imagine taking the network speed to the various source into account). Patches are binary deltas between two store paths. To be precise, they are the output of the `bsdiff' program applied to the NAR archives obtained by dumping (`nix-store --dump') the two store paths. The advantage of diff'ing NAR archives (and not, say, doing file-by-file diffs) is that file renames/moves are handled automatically. The disadvantage is that we cannot optimise creation of unchanged files (by hard-linking).
2004-11-08 * Check exit status of pipe elements.Eelco Dolstra1-0/+2
2004-10-25 * New language feature: with expressions.Eelco Dolstra1-1/+1
The expression `with E1; E2' evaluates to E2 with all bindings in the attribute set E1 substituted. E.g., with {x = 123;}; x evaluates to 123. That is, the attribute set E1 is in scope in E2. This is particularly useful when importing files containing lots definitions. E.g., instead of let { inherit (import ./foo.nix) a b c d e f; body = ... a ... f ...; } we can now say with import ./foo.nix; ... a ... f ... I.e., we don't have to say what variables should be brought into scope.
2004-09-19 * prevent collision on log directoryNiels Janssen1-1/+2
2004-06-21 * Adapted nix-pull to use the new substitute mechanism.Eelco Dolstra4-1/+53
2004-04-21 * Dist error.Eelco Dolstra1-1/+1
2004-04-21 * Channels. These allow you to stay current with an evolving set ofEelco Dolstra5-5/+47
Nix expressions. To subscribe to a channel (needs to be done only once): nix-channel --add \ http://catamaran.labs.cs.uu.nl/dist/nix/channels/nixpkgs-unstable This just adds the given URL to ~/.nix-channels (which can also be edited manually). To update from all channels: nix-channel --update This fetches the latest expressions and pulls cache manifests. The default Nix expression (~/.nix-defexpr) is made to point to the conjunction of the expressions downloaded from all channels. So to update all installed derivations in the current user environment: nix-channel --update nix-env --upgrade '*' If you are really courageous, you can put this in a cronjob or something. You can subscribe to multiple channels. It is not entirely clear what happens when there are name clashes between derivations from different channels. From nix-env/main.cc it appears that the one with the lowest (highest?) hash will be used, which is pretty meaningless.
2004-04-14 * Use @storedir@, not @prefix@/store.Eelco Dolstra1-1/+1
2004-04-06 * Make the creation of user environments much faster and more storageEelco Dolstra1-45/+66
efficient by creating only a single symlink to entire directory trees unless a collission occurs.
2004-04-06 * Switched from wget to curl.Eelco Dolstra3-13/+12
* Made the dependencies on bzip2 and the shell explicit.
2004-03-15 * Make perl a dependency of Nix.Eelco Dolstra2-2/+4
2004-02-04 * Fixed the old envpkgs filename.Eelco Dolstra1-1/+1
2003-12-30 * RPM spec file.Eelco Dolstra3-14/+14
* Respect DESTDIR variable.
2003-11-24 * Bug fix. Hmm, I thought I'd fixed this before :-|Eelco Dolstra1-2/+2
2003-11-22 * Don't use a hard-coded path.Eelco Dolstra2-1/+10
2003-11-22 * Fix nix-push.Eelco Dolstra7-25/+22
2003-11-22 * Maintain integrity of the substitute and successor mappings whenEelco Dolstra4-15/+14
deleting a path in the store. * Allow absolute paths in Nix expressions. * Get nix-prefetch-url to work again. * Various other fixes.
2003-11-19 * nix-env: a tool to manage user environments.Eelco Dolstra2-0/+81
* Replace all directory reading code by a generic readDirectory() function.
2003-10-16 * Substitutes and nix-pull now work again.Eelco Dolstra1-3/+3
* Fixed a segfault caused by the buffering of stderr. * Fix now allows the specification of the full output path. This should be used with great care, since it by-passes the normal hash generation. * Incremented the version number to 0.4 (prerelease).
2003-10-16 * Get nix-push to work again.Eelco Dolstra1-4/+4
* Fixed svn:ignore on externals/.
2003-10-02 * Use passive FTP in wget.Eelco Dolstra1-1/+1
2003-10-02 * Include the right files in a distribution.Eelco Dolstra2-2/+2
2003-08-28 * Set a path.Eelco Dolstra1-0/+2
2003-08-28 * nix-push generated invalid (old-style) slices.Eelco Dolstra1-0/+2
* nar.sh needs a path.
2003-08-15 * A script `nix-prefetch-url' to fetch a URL, place it in the NixEelco Dolstra1-1/+10
store, and print its hash.
2003-08-06 * `==' is not a valid operator.Eelco Dolstra1-1/+1
2003-08-06 * Scan for wget and use the full path in fetchurl.sh.Eelco Dolstra1-2/+2
* Use nix-hash (not md5sum) in fetchurl.sh.
2003-07-30 * INSTALL_DATA -> INSTALL_PROGRAM to ensure that the execute bitEelco Dolstra2-3/+3
remains set.
2003-07-23 * Incorporated Berkeley DB and ATerm into the source tree.Eelco Dolstra2-0/+4
* `make dist'.
2003-07-22 * Substitutes now should produce a path with the same id as they areEelco Dolstra1-0/+1
substituting for (obvious, really). * For greater efficiency, nix-pull/unnar will place the output in a path that is probably the same as what is actually needed, thus preventing a path copy. * Even if a output id is given in a Fix package expression, ensure that the resulting Nix derive expression has a different id. This is because Nix expressions that are semantically equivalent (i.e., build the same result) might be different w.r.t. efficiency or divergence. It is absolutely vital for the substitute mechanism that such expressions are not used interchangeably.
2003-07-21 * Syntax fixes.Eelco Dolstra2-3/+8
* When pushing, put the hash in the file name so that the client can verify (proof-carrying file names?).
2003-07-21 * Allow the output/expression id to be forced to a certain Eelco Dolstra2-5/+4
value; this potentially dangerous feature enables better sharing for those paths for which the content is known in advance (e.g., because a content hash is given). * Fast builds: if we can expand all output paths of a derive expression, we don't have to build.
2003-07-18 * Generate nar.sh, fetchurl.sh.Eelco Dolstra7-19/+28
2003-07-16 * The write() system call can write less than the requested Eelco Dolstra1-0/+2
number of bytes, e.g., in case of a signal like SIGSTOP. This caused `nix --dump' to fail sometimes. Note that this bug went unnoticed because the call to `nix --dump' is in a pipeline, and the shell ignores non-zero exit codes from all but the last element in the pipeline. Is there any way to check the result of the initial elements in the pipeline? (In other words, is it at all possible to write reliable shell scripts?)
2003-07-16 * Doh!Eelco Dolstra1-1/+2
2003-07-16 * Substitute fixes.Eelco Dolstra2-4/+6
2003-07-12 * Fetchurl: check md5 checksum.Eelco Dolstra2-3/+10
2003-07-10 * Compress Nix archives when pushing them.Eelco Dolstra2-2/+2
2003-07-10 * The policy-free derivate sharing now *almost* works. :-) For anyEelco Dolstra3-0/+13
hash for which no local expansion is available, Nix can execute a `substitute' which should produce a path with such a hash. This is policy-free since Nix does not in any way specify how the substitute should work, i.e., it's an arbitrary (unnormalised) fstate expression. For example, `nix-pull' registers substitutes that fetch Nix archives from the network (through `wget') and unpack them, but any other method is possible as well. This is an improvement over the old Nix sharing scheme, which had a policy (fetching through `wget') built in. The sharing scheme doesn't work completely yet because successors from fstate rewriting have to be registered on the receiving side. Probably the whole successor stuff can be folded up into the substitute mechanism; this would be a nice simplification.
2003-07-10 * Get `nix-push' working again. It now uses Nix/Fix to create NixEelco Dolstra3-0/+19
archives (using the package in corepkgs/nar). * queryPathByHash -> expandHash, and it takes an argument specifying the target path (which may be empty). * Install the core Fix packages in $prefix/share/fix. TODO: bootstrap Nix and install Nix as a Fix package.
2003-07-10 * Moved the fetchutl package to corepkgs.Eelco Dolstra2-0/+12