Home Explore Blog CI



nix

2nd chunk of `doc/manual/source/release-notes/rl-1.2.md`
0c0822c930d5fa6a2694627d3b05082fc0fb1040a7e345270000000100000c81
    Nixpkgs or NixOS channels (<http://nixos.org/channels>) you
    automatically get the cache <http://cache.nixos.org>.
    
    Binary caches are created using `nix-push`. For details on the
    operation and format of binary caches, see the `nix-push` manpage.
    More details are provided in [this nix-dev
    posting](https://nixos.org/nix-dev/2012-September/009826.html).

  - Multiple output support should now be usable. A derivation can
    declare that it wants to produce multiple store paths by saying
    something like
    
        outputs = [ "lib" "headers" "doc" ];
    
    This will cause Nix to pass the intended store path of each output
    to the builder through the environment variables `lib`, `headers`
    and `doc`. Other packages can refer to a specific output by
    referring to `pkg.output`, e.g.
    
        buildInputs = [ pkg.lib pkg.headers ];
    
    If you install a package with multiple outputs using `nix-env`, each
    output path will be symlinked into the user environment.

  - Dashes are now valid as part of identifiers and attribute names.

  - The new operation `nix-store --repair-path` allows corrupted or
    missing store paths to be repaired by redownloading them. `nix-store
    --verify --check-contents
                    --repair` will scan and repair all paths in the Nix store.
    Similarly, `nix-env`, `nix-build`, `nix-instantiate` and `nix-store
    --realise` have a `--repair` flag to detect and fix bad paths by
    rebuilding or redownloading them.

  - Nix no longer sets the immutable bit on files in the Nix store.
    Instead, the recommended way to guard the Nix store against
    accidental modification on Linux is to make it a read-only bind
    mount, like this:
    
        $ mount --bind /nix/store /nix/store
        $ mount -o remount,ro,bind /nix/store
    
    Nix will automatically make `/nix/store` writable as needed (using a
    private mount namespace) to allow modifications.

  - Store optimisation (replacing identical files in the store with hard
    links) can now be done automatically every time a path is added to
    the store. This is enabled by setting the configuration option
    `auto-optimise-store` to `true` (disabled by default).

  - Nix now supports `xz` compression for NARs in addition to `bzip2`.
    It compresses about 30% better on typical archives and decompresses
    about twice as fast.

  - Basic Nix expression evaluation profiling: setting the environment
    variable `NIX_COUNT_CALLS` to `1` will cause Nix to print how many
    times each primop or function was executed.

  - New primops: `concatLists`, `elem`, `elemAt` and `filter`.

  - The command `nix-copy-closure` has a new flag `--use-substitutes`
    (`-s`) to download missing paths on the target machine using the
    substitute mechanism.

  - The command `nix-worker` has been renamed to `nix-daemon`. Support
    for running the Nix worker in “slave” mode has been removed.

  - The `--help` flag of every Nix command now invokes `man`.

  - Chroot builds are now supported on systemd machines.

This release has contributions from Eelco Dolstra, Florian Friesdorf,
Mats Erik Andersson and Shea Levy.

Title: Nix Release 1.2: Further Enhancements and Fixes
Summary
This section details additional improvements and changes in Nix Release 1.2. It covers multiple output support, valid dashes in identifiers, path repair functionality, removal of the immutable bit, automatic store optimization, support for xz compression, basic expression evaluation profiling, new primops, updates to nix-copy-closure and nix-daemon, improved help flag behavior, and chroot build support on systemd. The release includes contributions from multiple developers.