Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 gitUpdater, 6 makeWrapper, 7 gawk, 8 gnused, 9 util-linux, 10 file, 11 wget, 12 python3, 13 qemu-utils, 14 e2fsprogs, 15 cdrkit, 16 gptfdisk, 17}: 18let 19 # according to https://packages.debian.org/sid/cloud-image-utils + https://packages.debian.org/sid/admin/cloud-guest-utils 20 guestDeps = [ 21 e2fsprogs 22 gptfdisk 23 gawk 24 gnused 25 util-linux 26 ]; 27 binDeps = guestDeps ++ [ 28 wget 29 file 30 qemu-utils 31 cdrkit 32 ]; 33in 34stdenv.mkDerivation rec { 35 # NOTICE: if you bump this, make sure to run 36 # $ nix-build nixos/release-combined.nix -A nixos.tests.ec2-nixops 37 # growpart is needed in initrd in nixos/system/boot/grow-partition.nix 38 pname = "cloud-utils"; 39 version = "0.33"; 40 src = fetchFromGitHub { 41 owner = "canonical"; 42 repo = "cloud-utils"; 43 tag = version; 44 hash = "sha256-YqfkmYclPZu6Mc2bFYxtiuH7uvfa3V4YlD0aHuKn1hw="; 45 }; 46 nativeBuildInputs = [ makeWrapper ]; 47 buildInputs = [ python3 ]; 48 installFlags = [ 49 "LIBDIR=$(out)/lib" 50 "BINDIR=$(out)/bin" 51 "MANDIR=$(out)/man/man1" 52 "DOCDIR=$(out)/doc" 53 ]; 54 55 # $guest output contains all executables needed for cloud-init and $out the rest + $guest 56 # This is similar to debian's package split into cloud-image-utils and cloud-guest-utils 57 # The reason is to reduce the closure size 58 outputs = [ 59 "out" 60 "guest" 61 ]; 62 63 postFixup = '' 64 moveToOutput bin/ec2metadata $guest 65 moveToOutput bin/growpart $guest 66 moveToOutput bin/vcs-run $guest 67 68 for i in $out/bin/*; do 69 wrapProgram $i --prefix PATH : "${lib.makeBinPath binDeps}:$out/bin" 70 done 71 72 for i in $guest/bin/*; do 73 wrapProgram $i --prefix PATH : "${lib.makeBinPath guestDeps}:$guest/bin" 74 ln -s $i $out/bin 75 done 76 ''; 77 78 dontBuild = true; 79 80 passthru.updateScript = gitUpdater { }; 81 82 meta = with lib; { 83 description = "Useful set of utilities for interacting with a cloud"; 84 homepage = "https://github.com/canonical/cloud-utils"; 85 platforms = platforms.unix; 86 license = licenses.gpl3; 87 }; 88}