Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nix
base: aabf5c86c9df
Choose a base ref
...
head repository: NixOS/nix
compare: 629b9b004936
Choose a head ref
  • 4 commits
  • 16 files changed
  • 1 contributor

Commits on Oct 21, 2019

  1. Allow content-addressable paths to have references

    This adds a command 'nix make-content-addressable' that rewrites the
    specified store paths into content-addressable paths. The advantage of
    such paths is that 1) they can be imported without signatures; 2) they
    can enable deduplication in cases where derivation changes do not
    cause output changes (apart from store path hashes).
    
    For example,
    
      $ nix make-content-addressable -r nixpkgs.cowsay
      rewrote '/nix/store/g1g31ah55xdia1jdqabv1imf6mcw0nb1-glibc-2.25-49' to '/nix/store/48jfj7bg78a8n4f2nhg269rgw1936vj4-glibc-2.25-49'
      ...
      rewrote '/nix/store/qbi6rzpk0bxjw8lw6azn2mc7ynnn455q-cowsay-3.03+dfsg1-16' to '/nix/store/iq6g2x4q62xp7y7493bibx0qn5w7xz67-cowsay-3.03+dfsg1-16'
    
    We can then copy the resulting closure to another store without
    signatures:
    
      $ nix copy --trusted-public-keys '' ---to ~/my-nix /nix/store/iq6g2x4q62xp7y7493bibx0qn5w7xz67-cowsay-3.03+dfsg1-16
    
    In order to support self-references in content-addressable paths,
    these paths are hashed "modulo" self-references, meaning that
    self-references are zeroed out during hashing. Somewhat annoyingly,
    this means that the NAR hash stored in the Nix database is no longer
    necessarily equal to the output of "nix hash-path"; for
    content-addressable paths, you need to pass the --modulo flag:
    
      $ nix path-info --json /nix/store/iq6g2x4q62xp7y7493bibx0qn5w7xz67-cowsay-3.03+dfsg1-16  | jq -r .[].narHash
      sha256:0ri611gdilz2c9rsibqhsipbfs9vwcqvs811a52i2bnkhv7w9mgw
    
      $ nix hash-path --type sha256 --base32 /nix/store/iq6g2x4q62xp7y7493bibx0qn5w7xz67-cowsay-3.03+dfsg1-16
      1ggznh07khq0hz6id09pqws3a8q9pn03ya3c03nwck1kwq8rclzs
    
      $ nix hash-path --type sha256 --base32 /nix/store/iq6g2x4q62xp7y7493bibx0qn5w7xz67-cowsay-3.03+dfsg1-16 --modulo iq6g2x4q62xp7y7493bibx0qn5w7xz67
      0ri611gdilz2c9rsibqhsipbfs9vwcqvs811a52i2bnkhv7w9mgw
    edolstra committed Oct 21, 2019
    Copy the full SHA
    0abb3ad View commit details
    Browse the repository at this point in the history
  2. Fix build

    edolstra committed Oct 21, 2019
    Copy the full SHA
    d77970f View commit details
    Browse the repository at this point in the history
  3. Copy the full SHA
    e687369 View commit details
    Browse the repository at this point in the history
  4. 1
    Copy the full SHA
    629b9b0 View commit details
    Browse the repository at this point in the history