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: b430a81a1fbf
Choose a base ref
...
head repository: NixOS/nix
compare: cc22cf662b69
Choose a head ref
  • 3 commits
  • 10 files changed
  • 1 contributor

Commits on Jan 24, 2020

  1. Copy the full SHA
    cd973fa View commit details
    Browse the repository at this point in the history
  2. Copy the full SHA
    2b8ca65 View commit details
    Browse the repository at this point in the history
  3. Respect lock files of inputs + fine-grained lock file control

    When computing a lock file, we now respect the lock files of flake
    inputs. This is important for usability / reproducibility. For
    example, the 'nixops' flake depends on the 'nixops-aws' and
    'nixops-hetzner' repositories. So when the 'nixops' flake is used in
    another flake, we want the versions of 'nixops-aws' and
    'nixops-hetzner' locked by the the 'nixops' flake because those
    presumably have been tested.
    
    This can lead to a proliferation of versions of flakes like 'nixpkgs'
    (since every flake's lock file could depend on a different version of
    'nixpkgs'). This is not a major issue when using Nixpkgs overlays or
    NixOS modules, since then the top-level flake composes those
    overlays/modules into *its* version of Nixpkgs and all other versions
    are ignored. Lock file computation has been made a bit more lazy so it
    won't try to fetch all those versions of 'nixpkgs'.
    
    However, in case it's necessary to minimize flake versions, there now
    are two input attributes that allow this. First, you can copy an input
    from another flake, as follows:
    
      inputs.nixpkgs.follows = "dwarffs/nixpkgs";
    
    This states that the calling flake's 'nixpkgs' input shall be the same
    as the 'nixpkgs' input of the 'dwarffs' input.
    
    Second, you can override inputs of inputs:
    
      inputs.nixpkgs.url = github:edolstra/nixpkgs/<hash>;
      inputs.nixops.inputs.nixpkgs.url = github:edolstra/nixpkgs/<hash>;
    
    or equivalently, using 'follows':
    
      inputs.nixpkgs.url = github:edolstra/nixpkgs/<hash>;
      inputs.nixops.inputs.nixpkgs.follows = "nixpkgs";
    
    This states that the 'nixpkgs' input of the 'nixops' input shall be
    the same as the calling flake's 'nixpkgs' input.
    
    Finally, at '-v' Nix now prints the changes to the lock file, e.g.
    
      $ nix flake update ~/Misc/eelco-configurations/hagbard
      inputs of flake 'git+file:///home/eelco/Misc/eelco-configurations?subdir=hagbard' changed:
        updated 'nixpkgs': 'github:edolstra/nixpkgs/7845bf5f4b3013df1cf036e9c9c3a55a30331db9' -> 'github:edolstra/nixpkgs/03f3def66a104a221aac8b751eeb7075374848fd'
        removed 'nixops'
        removed 'nixops/nixops-aws'
        removed 'nixops/nixops-hetzner'
        removed 'nixops/nixpkgs'
    edolstra committed Jan 24, 2020
    Copy the full SHA
    cc22cf6 View commit details
    Browse the repository at this point in the history