Thanks to visit codestin.com
Credit goes to github.com

Skip to content

"morph build" unnecessarily downloads many source archives #69

@delroth

Description

@delroth

Test case, which is basically examples/simple.nix pinning to current nixpkgs master:

let
  # Pin the deployment package-set to a specific version of nixpkgs
  pkgs = import (builtins.fetchTarball {
    url = "https://github.com/NixOS/nixpkgs/archive/98d9589819218971a95fd64c172fe5996a9734f5.tar.gz";
    sha256 = "0blscxj13qbcnlxkzwjsyqa80ssnx9wm0wz0bg6gkc1fa412w4f9";
  }) {};
in
{
  network =  {
    inherit pkgs;
    description = "simple hosts";
  };

  "web01.example.com" = { config, pkgs, ... }: {
    boot.loader.systemd-boot.enable = true;
    boot.loader.efi.canTouchEfiVariables = true;

    fileSystems = {
        "/" = { label = "nixos"; fsType = "ext4"; };
        "/boot" = { label = "boot"; fsType = "vfat"; };
    };
  };
}

Unexpected behavior: morph build with this network ends up downloading tons of source archives and dev packages:

...
  /nix/store/8lim9yzfpmxf0h62l2wylmgrwg7vx0x3-diffutils-3.7.tar.xz
  /nix/store/8lmlh79y7y10v4d5p6p7amgsfw7z2v49-gcc-wrapper-7.4.0-man
  /nix/store/8lz4k7gnsj4mj44y7vwcrhxw92m00xwp-gmp-6.1.2.tar.bz2
  /nix/store/8m37y0190w6h8njki0q4n2h10rw2g9sl-python3.7-zipp-0.5.1
  /nix/store/8mai2l0w93gsxibrxxs14fj1vg6k3ydh-curl-7.65.3-dev
  /nix/store/8mdb32pazg38aavh03x36z4s5f85wws3-zip-3.0
  /nix/store/8n7rrkyw2xq53z235id2s3xl8a0wp13b-nix.conf
  /nix/store/8nwwykns35qj19fik1blr748ivj6d563-libtiff-4.0.10-doc
  /nix/store/8pakfmb2lc9i871vh0jcrjggjmj9q5w6-openldap-2.4.48-devdoc
  /nix/store/8pm5qd1n4cf2pi30rxdq2y59bw1548km-automake-1.16.1
  /nix/store/8rrynknxlrycsfa3hcf0n1znqhih37q5-source
  /nix/store/8s8kq6pq9wzqavmmpsa2fz7lk7yvxh36-libcap-2.27-doc
  /nix/store/8spbwgczsk6w12swv4ald35mdcc6rzqx-autogen-5.18.12-bin
  /nix/store/8xbg46w9a4fkdkn2lsvdlkybsp9lpr7p-prawn-icon-2.3.0.gem
  /nix/store/8xk19qj1s5nbw8i0rl4qy53mla4zrpb6-libndctl-66
  /nix/store/8yl8rlah4wkvy4hymk844l7sj2pff5yb-mini_portile2-2.4.0.gem
  /nix/store/8ym99rjmd0cxxkvc5k846n51a15bv1y1-perl5.30.0-CGI-Fast-2.15-devdoc
  /nix/store/8z393qxyp4vvr52jvqvvzmh60bkzj865-perl5.30.0-Net-DBus-1.1.0-devdoc
...

This seems to be because of the following in eval-machines.nix:

ln -s ${nodeDef.config.system.build.toplevel.drvPath} $out/${nodeName}.drv

I'm guessing that this ends up dragging in the whole transitive closure of .drv files and their own dependencies. Maybe? I don't know much about Nix :-)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions