about summary refs log tree commit diff
path: root/src/nix-env
AgeCommit message (Collapse)AuthorFilesLines
2008-09-02 * When writing the user environment manifest, filter out non-stringEelco Dolstra1-7/+9
attributes from the meta attribute. Not doing so caused nix-env to barf on the "psi" package, which has a meta.function attribute, the textual serialisation of which causes a gigantic string to be produced --- so big that it causes nix-env to run out of memory. Note however that "meta" really only should contain strings. meta.function should be passthru.function.
2008-08-25 * Minor simplification.Eelco Dolstra1-1/+1
2008-08-25 * Strip off the `.nix' suffix from the attribute name for files inEelco Dolstra1-3/+14
~/.nix-defexpr, otherwise the attribute cannot be selected with the `-A' option. Useful if you want to stick a Nix expression directly in ~/.nix-defexpr.
2008-08-04 * Use optimistic profile locking for nix-env operations like `-i' andEelco Dolstra1-138/+163
`-u'. Instead of acquiring an exclusive lock on the profile for the entire duration of the operation, we just perform the operation optimistically (without an exclusive lock), and check at the end whether the profile changed while we were busy (i.e., the symlink target changed). If so, the operation is restarted. Restarting is generally cheap, since the build results are still in the Nix store. Most of the time, only the user environment has to be rebuilt.
2008-08-04 * `nix-env --set': support --dry-run.Eelco Dolstra1-3/+10
2008-08-04 * `nix-store --realise': print what paths will be built/downloaded,Eelco Dolstra1-24/+3
just like nix-env. * `nix-store --realise': --dry-run option.
2008-08-04 * Always show what paths we're going to build/download (as inEelco Dolstra1-9/+7
--dry-run). Maybe there should be an option to turn this on/off?
2008-08-04 * nix-env --dry-run: show the total size of the substituterEelco Dolstra1-2/+4
downloads.
2008-08-04 * querySubstitutablePathInfo: work properly when run via the daemon.Eelco Dolstra1-5/+12
* --dry-run: print the paths that we don't know how to build/substitute.
2008-07-01 * Export the nix-env derivation name parsing and version comparisonEelco Dolstra3-159/+1
logic through the `parseDrvName' and `compareVersions' primops. This will allow expressions to easily check whether some dependency is a specific needed version or falls in some version range. See tests/lang/eval-okay-versions.nix for examples.
2008-06-09 * Merged the no-bdb branch (-r10900:HEADEelco Dolstra1-1/+0
https://svn.nixos.org/repos/nix/nix/branches/no-bdb).
2007-12-31 * More documentation.Eelco Dolstra1-2/+1
2007-11-29 * nix-env -e: support uninstalling by path, so that one can sayEelco Dolstra1-19/+23
$ nix-env -e $(which firefox) or $ nix-env -e /nix/store/nywzlygrkfcgz7dfmhm5xixlx1l0m60v-pan-0.132 * nix-env -i: if an argument contains a slash anywhere, treat it as a path and follow it through symlinks into the Nix store. This allows things like $ nix-build -A firefox $ nix-env -i ./result * nix-env -q/-i/-e: don't complain when the `*' selector doesn't match anything. In particular, `nix-env -q \*' doesn't fail anymore on an empty profile.
2007-10-29 * Make the `--prebuilt-only' / `-b' option work not just for queriesEelco Dolstra2-16/+22
but installations/upgrades as well. So `nix-env -ub \*' will upgrade only those packages for which a substitute is available (or to be precise, it will upgrade each package to the highest version for which a substitute is available).
2007-10-22 (no commit message)Eelco Dolstra1-1/+1
2007-09-18 * Ignore dangling symlinks in ~/.nix-defexpr.Eelco Dolstra1-1/+6
2007-09-17 * nix-env -qa: make the "-A" flag do the expected thing, namely followEelco Dolstra1-78/+103
the given attribute path (just as -A does with other option) (NIX-83). So you can now say $ nix-env -qa -A nixpkgs_unstable.gnome \* atk-1.12.4 esound-0.2.36 ... to see the packages in the "gnome" attribute in Nixpkgs. To *print* the attribute path, you should now use "--attr-path" / "-P" (running out of letters...).
2007-09-17 * nix-env: allow ~/.nix-defexpr to be a directory. If it is, then theEelco Dolstra1-20/+48
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-06 * Optionally warn about packages that give an assertion failure.Eelco Dolstra1-1/+1
2007-07-05 * Properly keep packages during upgrades.Eelco Dolstra1-1/+4
2007-05-01 * nix-env -i: instead of breaking package ties by version, break themEelco Dolstra1-13/+38
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-05-01 * `nix-env -q --xml --meta' to show all meta attributes.Eelco Dolstra2-1/+17
2007-04-30 * Doh.Eelco Dolstra1-1/+1
2007-04-27 * Package flag "keep" that prevents a package from being removed fromEelco Dolstra1-1/+6
a user environment by an install or upgrade action. This is particularly useful if you have a version installed that you don't want to upgrade (e.g., because the newer versions are broken). Example: $ nix-env -u zapping --dry-run (dry run; not doing anything) upgrading `zapping-0.9.6' to `zapping-0.10cvs6' $ nix-env --set-flag keep true zapping $ nix-env -u zapping --dry-run (dry run; not doing anything) However, "-e" will still uninstall the package. (Maybe we should require the keep flag to be explicitly set to false before it can be uninstalled.)
2007-04-26 * nix-env -q now has a flag --prebuilt-only (-b<) that causes nix-envEelco Dolstra2-6/+16
to show only those derivations whose output is already in the Nix store or that can be substituted (i.e., downloaded from somewhere). In other words, it shows the packages that can be installed “quickly”, i.e., don’t need to be built from source.
2007-02-02 * nix-env now maintains meta info (from the `meta' derivationEelco Dolstra1-14/+72
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-15 * Handle multiple indirect symlinks when loading a Nix expression.Eelco Dolstra1-4/+1
2007-01-14 * Option --argstr for passing string arguments easily. (NIX-75)Eelco Dolstra1-15/+8
2006-12-12 * New operation `nix-env --set' which sets a user environment to aEelco Dolstra2-0/+28
single derivation specified by the argument. This is useful when we want to have a profile for a single derivation, such as a server configuration. Then we can just say (e.g.) $ nix-env -p /.../server-profile -f server.nix --set -A server We can't do queries or upgrades on such a profile, but we can do rollbacks. The advantage over -i is that we don't have to worry about other packages having been installed in the profile previously; --set gets rid of them.
2006-12-07 * Doh!Eelco Dolstra1-1/+1
2006-12-07 * Rename all those main.cc files.Eelco Dolstra2-1/+1
2006-12-05 * Allow unprivileged users to run the garbage collector and to doEelco Dolstra2-2/+1
`nix-store --delete'. But unprivileged users are not allowed to ignore liveness. * `nix-store --delete --ignore-liveness': ignore the runtime roots as well.
2006-12-02 * Move addTempRoot() to the store API, and add another functionEelco Dolstra1-2/+2
syncWithGC() to allow clients to register GC roots without needing write access to the global roots directory or the GC lock.
2006-12-02 * Remove SwitchToOriginalUser, we're not going to need it anymore.Eelco Dolstra1-3/+0
2006-11-30 * More remote operations.Eelco Dolstra1-3/+3
* Added new operation hasSubstitutes(), which is more efficient than querySubstitutes().size() > 0.
2006-11-30 * Skeleton of remote store implementation.Eelco Dolstra1-1/+1
2006-11-30 * Put building in the store API.Eelco Dolstra1-4/+3
2006-11-30 * Refactoring. There is now an abstract interface class StoreAPIEelco Dolstra1-5/+5
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-10-17 * Backwards compatibility with old user environment manifests.Eelco Dolstra1-3/+6
2006-10-17 * Maintain the references for the user environment properly.Eelco Dolstra1-1/+1
2006-10-17 * Don't generate an empty drvPath attribute in the manifest.Eelco Dolstra1-6/+6
2006-10-16 * Big cleanup of the semantics of paths, strings, contexts, stringEelco Dolstra1-8/+8
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-09-25 * Quick hack to let nix-install-package set the package name properlyEelco Dolstra1-1/+11
(e.g., "java-front-0.9pre15899" instead of "java-front"; particularly important when doing upgrades later on).
2006-09-14 * Wow, that bug has been there since r764.Eelco Dolstra1-2/+2
2006-09-14 * nix-env --switch-generation / --list-generations /Eelco Dolstra1-0/+9
--delete-generations: lock the profile to prevent (extremely unlikely) race conditions.
2006-09-14 * Fix a huge gaping hole in nix-env w.r.t. the garbage collector.Eelco Dolstra1-12/+11
Nix-env failed to call addPermRoot(), which is necessary to safely add a new root. So if nix-env started after and finished before the garbage collector, the user environment (plus all other new stuff) it built might be garbage collected, leading to a dangling symlink chain in ~/.nix-profile... * Be more explicit if we block on the GC lock ("waiting for the big garbage collector lock..."). * Don't loop trying to create a new generation. It's not necessary anymore since profiles are locked nowadays.
2006-09-05 * Missing #include.Eelco Dolstra1-0/+2
2006-09-04 * Use a proper namespace.Eelco Dolstra5-11/+40
* Optimise header file usage a bit. * Compile the parser as C++.
2006-08-25 * Remove those storePath attribute sets, we don't need 'em.Eelco Dolstra1-6/+1
2006-08-23 * Allow --arg in nix-env as well, example:Eelco Dolstra1-7/+20
$ nix-env -qa --system-filter \* --arg system '"powerpc-darwin"' to override the system from the default value (__currentSystem in all-packages.nix).