Home Explore Blog CI



nix

1st chunk of `doc/manual/source/release-notes/rl-2.0.md`
5bec42334d5dad623b170989bd8114c2516929def47a01320000000100000fc1
# Release 2.0 (2018-02-22)

The following incompatible changes have been made:

  - The manifest-based substituter mechanism
    (`download-using-manifests`) has been
    [removed](https://github.com/NixOS/nix/commit/867967265b80946dfe1db72d40324b4f9af988ed).
    It has been superseded by the binary cache substituter mechanism
    since several years. As a result, the following programs have been
    removed:

      - `nix-pull`

      - `nix-generate-patches`

      - `bsdiff`

      - `bspatch`

  - The “copy from other stores” substituter mechanism
    (`copy-from-other-stores` and the `NIX_OTHER_STORES` environment
    variable) has been removed. It was primarily used by the NixOS
    installer to copy available paths from the installation medium. The
    replacement is to use a chroot store as a substituter (e.g.
    `--substituters /mnt`), or to build into a chroot store (e.g.
    `--store /mnt --substituters /`).

  - The command `nix-push` has been removed as part of the effort to
    eliminate Nix's dependency on Perl. You can use `nix copy` instead,
    e.g. `nix copy
                    --to file:///tmp/my-binary-cache paths…`

  - The “nested” log output feature (`--log-type
                    pretty`) has been removed. As a result, `nix-log2xml` was also
    removed.

  - OpenSSL-based signing has been
    [removed](https://github.com/NixOS/nix/commit/f435f8247553656774dd1b2c88e9de5d59cab203).
    This feature was never well-supported. A better alternative is
    provided by the `secret-key-files` and `trusted-public-keys`
    options.

  - Failed build caching has been
    [removed](https://github.com/NixOS/nix/commit/8cffec84859cec8b610a2a22ab0c4d462a9351ff).
    This feature was introduced to support the Hydra continuous build
    system, but Hydra no longer uses it.

  - `nix-mode.el` has been removed from Nix. It is now [a separate
    repository](https://github.com/NixOS/nix-mode) and can be installed
    through the MELPA package repository.

This release has the following new features:

  - It introduces a new command named `nix`, which is intended to
    eventually replace all `nix-*` commands with a more consistent and
    better designed user interface. It currently provides replacements
    for some (but not all) of the functionality provided by `nix-store`,
    `nix-build`, `nix-shell -p`, `nix-env -qa`, `nix-instantiate
    --eval`, `nix-push` and `nix-copy-closure`. It has the following
    major features:

      - Unlike the legacy commands, it has a consistent way to refer to
        packages and package-like arguments (like store paths). For
        example, the following commands all copy the GNU Hello package
        to a remote machine:

            nix copy --to ssh://machine nixpkgs.hello

            nix copy --to ssh://machine /nix/store/0i2jd68mp5g6h2sa5k9c85rb80sn8hi9-hello-2.10

            nix copy --to ssh://machine '(with import <nixpkgs> {}; hello)'

        By contrast, `nix-copy-closure` only accepted store paths as
        arguments.

      - It is self-documenting: `--help` shows all available
        command-line arguments. If `--help` is given after a subcommand,
        it shows examples for that subcommand. `nix
                                                                        --help-config` shows all configuration options.

      - It is much less verbose. By default, it displays a single-line
        progress indicator that shows how many packages are left to be
        built or downloaded, and (if there are running builds) the most
        recent line of builder output. If a build fails, it shows the
        last few lines of builder output. The full build log can be
        retrieved using `nix
                                                                        log`.

      - It
        [provides](https://github.com/NixOS/nix/commit/b8283773bd64d7da6859ed520ee19867742a03ba)
        all `nix.conf` configuration options as command line flags. For
        example, instead of `--option

Title: Nix Release 2.0 (2018-02-22): Incompatible Changes and New Features
Summary
Nix Release 2.0 introduces incompatible changes, including the removal of manifest-based substituter mechanism, 'copy from other stores' substituter, `nix-push`, nested log output, OpenSSL-based signing, failed build caching, and `nix-mode.el`. It also introduces a new `nix` command intended to replace all `nix-*` commands with a more consistent user interface, offering features like consistent package referencing, self-documentation, reduced verbosity, and command-line flags for `nix.conf` configuration options.