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: ba75c69e0014
Choose a base ref
...
head repository: NixOS/nix
compare: 6ddfe9a99902
Choose a head ref
  • 4 commits
  • 22 files changed
  • 1 contributor

Commits on Jan 16, 2018

  1. parseExprFromFile -> evalFile

    parseExprFromFile() should be avoided since it doesn't cache anything.
    edolstra committed Jan 16, 2018
    Copy the full SHA
    23fa7e3 View commit details
    Browse the repository at this point in the history
  2. Add pure evaluation mode

    In this mode, the following restrictions apply:
    
    * The builtins currentTime, currentSystem and storePath throw an
      error.
    
    * $NIX_PATH and -I are ignored.
    
    * fetchGit and fetchMercurial require a revision hash.
    
    * fetchurl and fetchTarball require a sha256 attribute.
    
    * No file system access is allowed outside of the paths returned by
      fetch{Git,Mercurial,url,Tarball}. Thus 'nix build -f ./foo.nix' is
      not allowed.
    
    Thus, the evaluation result is completely reproducible from the
    command line arguments. E.g.
    
      nix build --pure-eval '(
        let
          nix = fetchGit { url = https://github.com/NixOS/nixpkgs.git; rev = "9c927de4b179a6dd210dd88d34bda8af4b575680"; };
          nixpkgs = fetchGit { url = https://github.com/NixOS/nixpkgs.git; ref = "release-17.09"; rev = "66b4de79e3841530e6d9c6baf98702aa1f7124e4"; };
        in (import (nix + "/release.nix") { inherit nix nixpkgs; }).build.x86_64-linux
      )'
    
    The goal is to enable completely reproducible and traceable
    evaluation. For example, a NixOS configuration could be fully
    described by a single Git commit hash. 'nixos-rebuild' would do
    something like
    
      nix build --pure-eval '(
        (import (fetchGit { url = file:///my-nixos-config; rev = "..."; })).system
      ')
    
    where the Git repository /my-nixos-config would use further fetchGit
    calls or Git externals to fetch Nixpkgs and whatever other
    dependencies it has. Either way, the commit hash would uniquely
    identify the NixOS configuration and allow it to reproduced.
    edolstra committed Jan 16, 2018
    Copy the full SHA
    d4dcffd View commit details
    Browse the repository at this point in the history
  3. Copy the full SHA
    75b9670 View commit details
    Browse the repository at this point in the history
  4. <nix/fetchurl.nix>: Don't access builtins.currentSystem

    This doesn't work in pure evaluation mode.
    edolstra committed Jan 16, 2018
    Copy the full SHA
    6ddfe9a View commit details
    Browse the repository at this point in the history