forked from mirrors/nixpkgs
* A module for generating a disk image suitable for use with Amazon's
Elastic Compute Cloud (EC2). TODO: run ec2-bundle-image here. svn path=/nixos/trunk/; revision=19580
This commit is contained in:
parent
6d21e00776
commit
590acc193c
43
modules/virtualisation/amazon-image.nix
Normal file
43
modules/virtualisation/amazon-image.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
with pkgs.lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
system.build.ext2Image =
|
||||||
|
pkgs.vmTools.runInLinuxVM (
|
||||||
|
pkgs.runCommand "amazon-image"
|
||||||
|
{ preVM =
|
||||||
|
''
|
||||||
|
mkdir $out
|
||||||
|
diskImage=$out/nixos.img
|
||||||
|
qemu-img create -f raw $diskImage "1024M"
|
||||||
|
'';
|
||||||
|
buildInputs = [ pkgs.utillinux pkgs.perl pkgs.rsync ];
|
||||||
|
exportReferencesGraph =
|
||||||
|
[ "closure" config.system.build.toplevel ];
|
||||||
|
}
|
||||||
|
''
|
||||||
|
# Create an empty filesysten and mount it.
|
||||||
|
${pkgs.e2fsprogs}/sbin/mkfs.ext3 /dev/vda
|
||||||
|
mkdir /mnt
|
||||||
|
mount /dev/vda /mnt
|
||||||
|
|
||||||
|
# Copy all paths in the closure to the filesystem.
|
||||||
|
storePaths=$(perl ${pkgs.pathsFromGraph} $ORIG_TMPDIR/closure)
|
||||||
|
|
||||||
|
mkdir -p /mnt/nix/store
|
||||||
|
rsync -av $storePaths /mnt/nix/store/
|
||||||
|
|
||||||
|
# Amazon assumes that there is a /sbin/init, so symlink it
|
||||||
|
# to the stage 2 init script. Since we cannot set the path
|
||||||
|
# to the system configuration via the systemConfig kernel
|
||||||
|
# parameter, use a /system symlink.
|
||||||
|
mkdir -p /mnt/sbin
|
||||||
|
ln -s ${config.system.build.bootStage2} /mnt/sbin/init
|
||||||
|
ln -s ${config.system.build.toplevel} /mnt/system
|
||||||
|
|
||||||
|
umount /mnt
|
||||||
|
''
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue