2020-07-23 00:17:48 +03:00
|
|
|
|
# Release 1.9 (2015-06-12)
|
|
|
|
|
|
|
|
|
|
In addition to the usual bug fixes, this release has the following new
|
|
|
|
|
features:
|
|
|
|
|
|
|
|
|
|
- Signed binary cache support. You can enable signature checking by
|
|
|
|
|
adding the following to `nix.conf`:
|
|
|
|
|
|
|
|
|
|
signed-binary-caches = *
|
|
|
|
|
binary-cache-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
|
|
|
|
|
|
|
|
|
|
This will prevent Nix from downloading any binary from the cache
|
|
|
|
|
that is not signed by one of the keys listed in
|
|
|
|
|
`binary-cache-public-keys`.
|
|
|
|
|
|
|
|
|
|
Signature checking is only supported if you built Nix with the
|
|
|
|
|
`libsodium` package.
|
|
|
|
|
|
|
|
|
|
Note that while Nix has had experimental support for signed binary
|
|
|
|
|
caches since version 1.7, this release changes the signature format
|
|
|
|
|
in a backwards-incompatible way.
|
|
|
|
|
|
|
|
|
|
- Automatic downloading of Nix expression tarballs. In various places,
|
|
|
|
|
you can now specify the URL of a tarball containing Nix expressions
|
|
|
|
|
(such as Nixpkgs), which will be downloaded and unpacked
|
|
|
|
|
automatically. For example:
|
|
|
|
|
|
|
|
|
|
- In `nix-env`:
|
|
|
|
|
|
|
|
|
|
$ nix-env -f https://github.com/NixOS/nixpkgs-channels/archive/nixos-14.12.tar.gz -iA firefox
|
|
|
|
|
|
|
|
|
|
This installs Firefox from the latest tested and built revision
|
|
|
|
|
of the NixOS 14.12 channel.
|
|
|
|
|
|
|
|
|
|
- In `nix-build` and `nix-shell`:
|
|
|
|
|
|
|
|
|
|
$ nix-build https://github.com/NixOS/nixpkgs/archive/master.tar.gz -A hello
|
|
|
|
|
|
|
|
|
|
This builds GNU Hello from the latest revision of the Nixpkgs
|
|
|
|
|
master branch.
|
|
|
|
|
|
2020-07-23 11:44:54 +03:00
|
|
|
|
- In the Nix search path (as specified via `NIX_PATH` or `-I`).
|
|
|
|
|
For example, to start a shell containing the Pan package from a
|
2020-07-23 00:17:48 +03:00
|
|
|
|
specific version of Nixpkgs:
|
|
|
|
|
|
|
|
|
|
$ nix-shell -p pan -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/8a3eea054838b55aca962c3fbde9c83c102b8bf2.tar.gz
|
|
|
|
|
|
|
|
|
|
- In `nixos-rebuild` (on NixOS):
|
|
|
|
|
|
|
|
|
|
$ nixos-rebuild test -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz
|
|
|
|
|
|
|
|
|
|
- In Nix expressions, via the new builtin function `fetchTarball`:
|
|
|
|
|
|
|
|
|
|
with import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-14.12.tar.gz) {}; …
|
|
|
|
|
|
|
|
|
|
(This is not allowed in restricted mode.)
|
|
|
|
|
|
|
|
|
|
- `nix-shell` improvements:
|
|
|
|
|
|
|
|
|
|
- `nix-shell` now has a flag `--run` to execute a command in the
|
|
|
|
|
`nix-shell` environment, e.g. `nix-shell --run make`. This is
|
|
|
|
|
like the existing `--command` flag, except that it uses a
|
|
|
|
|
non-interactive shell (ensuring that hitting Ctrl-C won’t drop
|
|
|
|
|
you into the child shell).
|
|
|
|
|
|
|
|
|
|
- `nix-shell` can now be used as a `#!`-interpreter. This allows
|
|
|
|
|
you to write scripts that dynamically fetch their own
|
|
|
|
|
dependencies. For example, here is a Haskell script that, when
|
|
|
|
|
invoked, first downloads GHC and the Haskell packages on which
|
|
|
|
|
it depends:
|
|
|
|
|
|
|
|
|
|
#! /usr/bin/env nix-shell
|
|
|
|
|
#! nix-shell -i runghc -p haskellPackages.ghc haskellPackages.HTTP
|
|
|
|
|
|
|
|
|
|
import Network.HTTP
|
|
|
|
|
|
|
|
|
|
main = do
|
|
|
|
|
resp <- Network.HTTP.simpleHTTP (getRequest "http://nixos.org/")
|
|
|
|
|
body <- getResponseBody resp
|
|
|
|
|
print (take 100 body)
|
|
|
|
|
|
|
|
|
|
Of course, the dependencies are cached in the Nix store, so the
|
|
|
|
|
second invocation of this script will be much faster.
|
|
|
|
|
|
|
|
|
|
- Chroot improvements:
|
|
|
|
|
|
|
|
|
|
- Chroot builds are now supported on Mac OS X (using its sandbox
|
|
|
|
|
mechanism).
|
|
|
|
|
|
|
|
|
|
- If chroots are enabled, they are now used for all derivations,
|
|
|
|
|
including fixed-output derivations (such as `fetchurl`). The
|
|
|
|
|
latter do have network access, but can no longer access the host
|
|
|
|
|
filesystem. If you need the old behaviour, you can set the
|
|
|
|
|
option `build-use-chroot` to `relaxed`.
|
|
|
|
|
|
|
|
|
|
- On Linux, if chroots are enabled, builds are performed in a
|
|
|
|
|
private PID namespace once again. (This functionality was lost
|
|
|
|
|
in Nix 1.8.)
|
|
|
|
|
|
|
|
|
|
- Store paths listed in `build-chroot-dirs` are now automatically
|
|
|
|
|
expanded to their closure. For instance, if you want
|
|
|
|
|
`/nix/store/…-bash/bin/sh` mounted in your chroot as `/bin/sh`,
|
|
|
|
|
you only need to say `build-chroot-dirs =
|
|
|
|
|
/bin/sh=/nix/store/…-bash/bin/sh`; it is no longer necessary to
|
|
|
|
|
specify the dependencies of Bash.
|
|
|
|
|
|
|
|
|
|
- The new derivation attribute `passAsFile` allows you to specify that
|
|
|
|
|
the contents of derivation attributes should be passed via files
|
|
|
|
|
rather than environment variables. This is useful if you need to
|
|
|
|
|
pass very long strings that exceed the size limit of the
|
|
|
|
|
environment. The Nixpkgs function `writeTextFile` uses this.
|
|
|
|
|
|
|
|
|
|
- You can now use `~` in Nix file names to refer to your home
|
|
|
|
|
directory, e.g. `import
|
|
|
|
|
~/.nixpkgs/config.nix`.
|
|
|
|
|
|
|
|
|
|
- Nix has a new option `restrict-eval` that allows limiting what paths
|
|
|
|
|
the Nix evaluator has access to. By passing `--option restrict-eval
|
|
|
|
|
true` to Nix, the evaluator will throw an exception if an attempt is
|
|
|
|
|
made to access any file outside of the Nix search path. This is
|
|
|
|
|
primarily intended for Hydra to ensure that a Hydra jobset only
|
|
|
|
|
refers to its declared inputs (and is therefore reproducible).
|
|
|
|
|
|
|
|
|
|
- `nix-env` now only creates a new “generation” symlink in
|
|
|
|
|
`/nix/var/nix/profiles` if something actually changed.
|
|
|
|
|
|
2020-07-23 11:44:54 +03:00
|
|
|
|
- The environment variable `NIX_PAGER` can now be set to override
|
|
|
|
|
`PAGER`. You can set it to `cat` to disable paging for Nix commands
|
2020-07-23 00:17:48 +03:00
|
|
|
|
only.
|
|
|
|
|
|
|
|
|
|
- Failing `<...>` lookups now show position information.
|
|
|
|
|
|
|
|
|
|
- Improved Boehm GC use: we disabled scanning for interior pointers,
|
|
|
|
|
which should reduce the “`Repeated
|
|
|
|
|
allocation of very large block`” warnings and associated retention
|
|
|
|
|
of memory.
|
|
|
|
|
|
|
|
|
|
This release has contributions from aszlig, Benjamin Staffin, Charles
|
|
|
|
|
Strahan, Christian Theune, Daniel Hahler, Danylo Hlynskyi Daniel
|
|
|
|
|
Peebles, Dan Peebles, Domen Kožar, Eelco Dolstra, Harald van Dijk, Hoang
|
|
|
|
|
Xuan Phu, Jaka Hudoklin, Jeff Ramnani, j-keck, Linquize, Luca Bruno,
|
|
|
|
|
Michael Merickel, Oliver Dunkl, Rob Vermaas, Rok Garbas, Shea Levy,
|
|
|
|
|
Tobias Geerinckx-Rice and William A. Kennington III.
|