diff --git a/nixos/modules/virtualisation/amazon-image.nix b/nixos/modules/virtualisation/amazon-image.nix index aadfc5add350..20d48add7129 100644 --- a/nixos/modules/virtualisation/amazon-image.nix +++ b/nixos/modules/virtualisation/amazon-image.nix @@ -135,6 +135,9 @@ in services.openssh.enable = true; services.openssh.permitRootLogin = "prohibit-password"; + # Creates symlinks for block device names. + services.udev.packages = [ pkgs.ec2-utils ]; + # Force getting the hostname from EC2. networking.hostName = mkDefault ""; diff --git a/pkgs/tools/virtualization/ec2-utils/default.nix b/pkgs/tools/virtualization/ec2-utils/default.nix new file mode 100644 index 000000000000..ea088b486fc6 --- /dev/null +++ b/pkgs/tools/virtualization/ec2-utils/default.nix @@ -0,0 +1,47 @@ +{ stdenv, lib, rpmextract, fetchurl, python2, tree }: + +stdenv.mkDerivation { + name = "ec2-utils"; + version = "0.5.1"; + + # The url can be determined by booting an "Amazon Linux 2" and running: + # > yumdownloader --urls ec2-utils + src = fetchurl { + url = "http://amazonlinux.ap-northeast-1.amazonaws.com/blobstore/a3b4d2c35c2300518fe10381a05b3bd7936ff5cdd3d351143a11bf84073d9e00/ec2-utils-0.5-1.amzn2.0.1.noarch.rpm"; + sha256 = "004y7l3q9gqi78a53lykrpsnz4yp7dds1083w67m2013bk1x5d53"; + }; + + nativeBuildInputs = [ rpmextract ]; + + buildInputs = [ python2 ]; + + unpackPhase = '' + mkdir source + cd source + rpmextract "$src" + ''; + + installPhase = '' + mkdir $out + + mv --target-directory $out \ + etc sbin usr/bin usr/lib + ''; + + postFixup = '' + for i in $out/etc/udev/rules.d/*.rules; do + substituteInPlace "$i" \ + --replace '/sbin' "$out/bin" + done + + substituteInPlace "$out/etc/udev/rules.d/70-ec2-nvme-devices.rules" \ + --replace 'ec2nvme-nsid' "$out/lib/udev/ec2nvme-nsid" + ''; + + meta = { + description = "A set of tools for running in EC2"; + homepage = https://aws.amazon.com/amazon-linux-ami/; + license = lib.licenses.apsl20; + maintainers = with lib.maintainers; [ thefloweringash ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 865644a5719e..764333fd1224 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -722,6 +722,8 @@ in ec2_ami_tools = callPackage ../tools/virtualization/ec2-ami-tools { }; + ec2-utils = callPackage ../tools/virtualization/ec2-utils { }; + altermime = callPackage ../tools/networking/altermime {}; alttab = callPackage ../tools/X11/alttab { };