2011-02-01 13:11:05 +01:00
|
|
|
{ pkgs
|
2013-08-07 14:48:22 +02:00
|
|
|
, kernel ? pkgs.linux_3_10
|
2011-02-01 13:11:05 +01:00
|
|
|
, img ? "bzImage"
|
2012-04-11 09:45:12 +02:00
|
|
|
, rootModules ?
|
2013-07-05 00:06:08 +02:00
|
|
|
[ "virtio_pci" "virtio_blk" "virtio_balloon" "ext4" "unix" "9p" "9pnet_virtio" ]
|
2011-02-01 13:11:05 +01:00
|
|
|
}:
|
2008-03-17 18:29:07 +01:00
|
|
|
|
|
|
|
with pkgs;
|
2008-03-14 14:51:01 +01:00
|
|
|
|
|
|
|
rec {
|
|
|
|
|
2013-07-31 14:35:53 +02:00
|
|
|
qemu = pkgs.qemu_kvm;
|
2013-07-04 18:30:26 +02:00
|
|
|
|
2013-07-31 14:35:53 +02:00
|
|
|
qemuProg = "${qemu}/bin/qemu-kvm";
|
2009-09-23 16:24:37 +02:00
|
|
|
|
2008-05-26 15:30:17 +02:00
|
|
|
|
2008-03-17 11:40:47 +01:00
|
|
|
modulesClosure = makeModulesClosure {
|
2011-02-01 13:11:05 +01:00
|
|
|
inherit kernel rootModules;
|
2008-03-14 14:51:01 +01:00
|
|
|
};
|
|
|
|
|
2009-04-09 10:12:16 +02:00
|
|
|
|
2010-06-14 01:49:16 +02:00
|
|
|
hd = "vda"; # either "sda" or "vda"
|
|
|
|
|
|
|
|
|
2010-06-10 14:28:04 +02:00
|
|
|
initrdUtils = runCommand "initrd-utils"
|
|
|
|
{ buildInputs = [ nukeReferences ];
|
|
|
|
allowedReferences = [ "out" modulesClosure ]; # prevent accidents like glibc being included in the initrd
|
|
|
|
}
|
|
|
|
''
|
2012-01-18 21:16:00 +01:00
|
|
|
mkdir -p $out/bin
|
|
|
|
mkdir -p $out/lib
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-10 14:28:04 +02:00
|
|
|
# Copy what we need from Glibc.
|
2012-03-08 10:40:45 +01:00
|
|
|
cp -p ${pkgs.stdenv.glibc}/lib/ld-linux*.so.? $out/lib
|
|
|
|
cp -p ${pkgs.stdenv.glibc}/lib/libc.so.* $out/lib
|
2012-12-18 16:57:11 +01:00
|
|
|
cp -p ${pkgs.stdenv.glibc}/lib/libm.so.* $out/lib
|
|
|
|
|
|
|
|
# Copy BusyBox.
|
|
|
|
cp -pd ${pkgs.busybox}/bin/* ${pkgs.busybox}/sbin/* $out/bin
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-10 14:28:04 +02:00
|
|
|
# Run patchelf to make the programs refer to the copied libraries.
|
|
|
|
for i in $out/bin/* $out/lib/*; do if ! test -L $i; then nuke-refs $i; fi; done
|
|
|
|
|
|
|
|
for i in $out/bin/*; do
|
2012-12-18 16:57:11 +01:00
|
|
|
if [ -f "$i" -a ! -L "$i" ]; then
|
|
|
|
echo "patching $i..."
|
|
|
|
patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib $i || true
|
|
|
|
fi
|
2010-06-10 14:28:04 +02:00
|
|
|
done
|
|
|
|
''; # */
|
2009-03-02 14:22:31 +01:00
|
|
|
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2009-03-02 14:22:31 +01:00
|
|
|
createDeviceNodes = dev:
|
|
|
|
''
|
2012-08-27 18:22:41 +02:00
|
|
|
mknod ${dev}/null c 1 3
|
|
|
|
mknod ${dev}/zero c 1 5
|
|
|
|
mknod ${dev}/random c 1 8
|
|
|
|
mknod ${dev}/urandom c 1 9
|
|
|
|
mknod ${dev}/tty c 5 0
|
2010-06-14 01:49:16 +02:00
|
|
|
. /sys/class/block/${hd}/uevent
|
|
|
|
mknod ${dev}/${hd} b $MAJOR $MINOR
|
2009-03-02 14:22:31 +01:00
|
|
|
'';
|
|
|
|
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
stage1Init = writeScript "vm-run-stage1" ''
|
2012-12-18 16:57:11 +01:00
|
|
|
#! ${initrdUtils}/bin/ash -e
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2010-06-10 14:28:04 +02:00
|
|
|
export PATH=${initrdUtils}/bin
|
2008-03-14 14:51:01 +01:00
|
|
|
|
|
|
|
mkdir /etc
|
|
|
|
echo -n > /etc/fstab
|
|
|
|
|
|
|
|
mount -t proc none /proc
|
2009-12-18 13:10:35 +01:00
|
|
|
mount -t sysfs none /sys
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2013-07-04 23:35:31 +02:00
|
|
|
echo 2 > /proc/sys/vm/panic_on_oom
|
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
for o in $(cat /proc/cmdline); do
|
|
|
|
case $o in
|
2008-03-17 11:40:47 +01:00
|
|
|
mountDisk=1)
|
|
|
|
mountDisk=1
|
2008-03-14 14:51:01 +01:00
|
|
|
;;
|
|
|
|
command=*)
|
|
|
|
set -- $(IFS==; echo $o)
|
|
|
|
command=$2
|
|
|
|
;;
|
|
|
|
out=*)
|
|
|
|
set -- $(IFS==; echo $o)
|
|
|
|
export out=$2
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2013-08-01 14:35:04 +02:00
|
|
|
echo "loading kernel modules..."
|
2008-03-14 14:51:01 +01:00
|
|
|
for i in $(cat ${modulesClosure}/insmod-list); do
|
2013-07-05 00:06:08 +02:00
|
|
|
insmod $i
|
2008-03-14 14:51:01 +01:00
|
|
|
done
|
|
|
|
|
|
|
|
mount -t tmpfs none /dev
|
2009-03-02 14:22:31 +01:00
|
|
|
${createDeviceNodes "/dev"}
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2013-07-05 15:02:43 +02:00
|
|
|
ifconfig lo up
|
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
mkdir /fs
|
|
|
|
|
2008-03-17 11:40:47 +01:00
|
|
|
if test -z "$mountDisk"; then
|
2008-03-14 14:51:01 +01:00
|
|
|
mount -t tmpfs none /fs
|
|
|
|
else
|
2011-10-11 15:22:09 +02:00
|
|
|
mount /dev/${hd} /fs
|
2008-03-14 14:51:01 +01:00
|
|
|
fi
|
2010-06-14 01:49:16 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
mkdir -p /fs/dev
|
|
|
|
mount -o bind /dev /fs/dev
|
|
|
|
|
2011-08-09 16:05:40 +02:00
|
|
|
echo "mounting Nix store..."
|
2008-03-14 14:51:01 +01:00
|
|
|
mkdir -p /fs/nix/store
|
2013-08-01 14:30:18 +02:00
|
|
|
mount -t 9p store /fs/nix/store -o trans=virtio,version=9p2000.L,msize=262144,cache=loose
|
2011-08-09 16:05:40 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
mkdir -p /fs/tmp
|
|
|
|
mount -t tmpfs -o "mode=755" none /fs/tmp
|
|
|
|
|
2011-08-09 16:05:40 +02:00
|
|
|
echo "mounting host's temporary directory..."
|
|
|
|
mkdir -p /fs/tmp/xchg
|
2013-08-01 14:30:18 +02:00
|
|
|
mount -t 9p xchg /fs/tmp/xchg -o trans=virtio,version=9p2000.L,msize=262144,cache=loose
|
2011-08-09 16:05:40 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
mkdir -p /fs/proc
|
|
|
|
mount -t proc none /fs/proc
|
|
|
|
|
2009-12-18 13:10:35 +01:00
|
|
|
mkdir -p /fs/sys
|
|
|
|
mount -t sysfs none /fs/sys
|
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
mkdir -p /fs/etc
|
|
|
|
ln -sf /proc/mounts /fs/etc/mtab
|
2013-07-05 15:02:43 +02:00
|
|
|
echo "127.0.0.1 localhost" > /fs/etc/hosts
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2013-08-01 14:35:04 +02:00
|
|
|
echo "starting stage 2 ($command)"
|
2008-03-14 14:51:01 +01:00
|
|
|
test -n "$command"
|
|
|
|
|
|
|
|
set +e
|
2011-08-09 16:05:40 +02:00
|
|
|
chroot /fs $command $out
|
|
|
|
echo $? > /fs/tmp/xchg/in-vm-exit
|
2008-03-14 14:51:01 +01:00
|
|
|
|
|
|
|
mount -o remount,ro dummy /fs
|
|
|
|
|
2012-12-18 16:57:11 +01:00
|
|
|
poweroff -f
|
2008-03-14 14:51:01 +01:00
|
|
|
'';
|
|
|
|
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-17 11:40:47 +01:00
|
|
|
initrd = makeInitrd {
|
2008-03-14 14:51:01 +01:00
|
|
|
contents = [
|
|
|
|
{ object = stage1Init;
|
|
|
|
symlink = "/init";
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
stage2Init = writeScript "vm-run-stage2" ''
|
|
|
|
#! ${bash}/bin/sh
|
2011-08-09 16:05:40 +02:00
|
|
|
source /tmp/xchg/saved-env
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
export NIX_STORE=/nix/store
|
2011-08-09 16:05:40 +02:00
|
|
|
export NIX_BUILD_TOP=/tmp
|
|
|
|
export TMPDIR=/tmp
|
2008-03-14 14:51:01 +01:00
|
|
|
export PATH=/empty
|
2011-08-09 16:05:40 +02:00
|
|
|
out="$1"
|
2008-03-14 14:51:01 +01:00
|
|
|
cd "$NIX_BUILD_TOP"
|
|
|
|
|
|
|
|
if ! test -e /bin/sh; then
|
|
|
|
${coreutils}/bin/mkdir -p /bin
|
|
|
|
${coreutils}/bin/ln -s ${bash}/bin/sh /bin/sh
|
|
|
|
fi
|
|
|
|
|
|
|
|
# For debugging: if this is the second time this image is run,
|
|
|
|
# then don't start the build again, but instead drop the user into
|
|
|
|
# an interactive shell.
|
|
|
|
if test -n "$origBuilder" -a ! -e /.debug; then
|
|
|
|
${coreutils}/bin/touch /.debug
|
|
|
|
exec $origBuilder $origArgs
|
|
|
|
else
|
|
|
|
export PATH=/bin:/usr/bin:${coreutils}/bin
|
|
|
|
echo "Starting interactive shell..."
|
|
|
|
echo "(To run the original builder: \$origBuilder \$origArgs)"
|
|
|
|
exec ${bash}/bin/sh
|
|
|
|
fi
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
2008-04-29 14:32:17 +02:00
|
|
|
qemuCommandLinux = ''
|
2013-07-04 18:30:26 +02:00
|
|
|
${qemuProg} \
|
2012-04-19 20:44:02 +02:00
|
|
|
${lib.optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \
|
2008-03-14 14:51:01 +01:00
|
|
|
-nographic -no-reboot \
|
2013-07-05 00:06:08 +02:00
|
|
|
-virtfs local,path=/nix/store,security_model=none,mount_tag=store \
|
|
|
|
-virtfs local,path=$TMPDIR/xchg,security_model=none,mount_tag=xchg \
|
2011-02-24 22:48:32 +01:00
|
|
|
-drive file=$diskImage,if=virtio,cache=writeback,werror=report \
|
2011-02-01 13:11:05 +01:00
|
|
|
-kernel ${kernel}/${img} \
|
2008-03-14 14:51:01 +01:00
|
|
|
-initrd ${initrd}/initrd \
|
2013-08-01 14:35:04 +02:00
|
|
|
-append "console=ttyS0 panic=1 command=${stage2Init} out=$out mountDisk=$mountDisk loglevel=4" \
|
2008-03-14 14:51:01 +01:00
|
|
|
$QEMU_OPTS
|
|
|
|
'';
|
|
|
|
|
2010-06-14 02:18:54 +02:00
|
|
|
|
2008-04-29 14:32:17 +02:00
|
|
|
vmRunCommand = qemuCommand: writeText "vm-run" ''
|
2008-03-14 14:51:01 +01:00
|
|
|
export > saved-env
|
|
|
|
|
2010-06-15 18:13:10 +02:00
|
|
|
PATH=${coreutils}/bin
|
2011-08-09 16:05:40 +02:00
|
|
|
mkdir xchg
|
|
|
|
mv saved-env xchg/
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
diskImage=''${diskImage:-/dev/null}
|
2008-03-14 14:51:01 +01:00
|
|
|
|
|
|
|
eval "$preVM"
|
|
|
|
|
|
|
|
# Write the command to start the VM to a file so that the user can
|
|
|
|
# debug inside the VM if the build fails (when Nix is called with
|
|
|
|
# the -K option to preserve the temporary build directory).
|
|
|
|
cat > ./run-vm <<EOF
|
|
|
|
#! ${bash}/bin/sh
|
|
|
|
diskImage=$diskImage
|
|
|
|
TMPDIR=$TMPDIR
|
2010-06-14 13:18:57 +02:00
|
|
|
cd $TMPDIR
|
2008-03-14 14:51:01 +01:00
|
|
|
${qemuCommand}
|
|
|
|
EOF
|
|
|
|
|
2011-05-02 16:55:16 +02:00
|
|
|
mkdir -p -m 0700 $out
|
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
chmod +x ./run-vm
|
|
|
|
source ./run-vm
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2011-08-09 16:05:40 +02:00
|
|
|
if ! test -e xchg/in-vm-exit; then
|
2008-03-14 14:51:01 +01:00
|
|
|
echo "Virtual machine didn't produce an exit code."
|
|
|
|
exit 1
|
|
|
|
fi
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-04-29 14:32:17 +02:00
|
|
|
eval "$postVM"
|
|
|
|
|
2011-08-09 16:05:40 +02:00
|
|
|
exit $(cat xchg/in-vm-exit)
|
2008-03-14 14:51:01 +01:00
|
|
|
'';
|
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
|
|
|
|
createEmptyImage = {size, fullName}: ''
|
|
|
|
mkdir $out
|
2009-03-02 15:31:33 +01:00
|
|
|
diskImage=$out/disk-image.qcow2
|
2013-07-31 14:35:53 +02:00
|
|
|
${qemu}/bin/qemu-img create -f qcow2 $diskImage "${toString size}M"
|
2008-03-17 18:08:40 +01:00
|
|
|
|
|
|
|
mkdir $out/nix-support
|
2008-03-18 13:54:21 +01:00
|
|
|
echo "${fullName}" > $out/nix-support/full-name
|
2008-03-17 18:08:40 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
|
2011-10-11 15:22:09 +02:00
|
|
|
defaultCreateRootFS = ''
|
2008-03-17 18:08:40 +01:00
|
|
|
mkdir /mnt
|
2013-07-04 19:01:25 +02:00
|
|
|
${e2fsprogs}/sbin/mkfs.ext4 /dev/${hd}
|
|
|
|
${utillinux}/bin/mount -t ext4 /dev/${hd} /mnt
|
2008-03-17 18:08:40 +01:00
|
|
|
|
|
|
|
if test -e /mnt/.debug; then
|
|
|
|
exec ${bash}/bin/sh
|
|
|
|
fi
|
|
|
|
touch /mnt/.debug
|
|
|
|
|
2013-05-08 13:59:28 +02:00
|
|
|
mkdir /mnt/proc /mnt/dev /mnt/sys
|
2009-03-02 14:22:31 +01:00
|
|
|
${createDeviceNodes "/mnt/dev"}
|
2008-03-17 18:08:40 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
|
|
/* Run a derivation in a Linux virtual machine (using Qemu/KVM). By
|
|
|
|
default, there is no disk image; the root filesystem is a tmpfs,
|
2013-07-05 00:06:08 +02:00
|
|
|
and /nix/store is shared with the host (via the 9P protocol).
|
|
|
|
Thus, any pure Nix derivation should run unmodified, e.g. the
|
|
|
|
call
|
2008-03-17 18:08:40 +01:00
|
|
|
|
|
|
|
runInLinuxVM patchelf
|
|
|
|
|
|
|
|
will build the derivation `patchelf' inside a VM. The attribute
|
|
|
|
`preVM' can optionally contain a shell command to be evaluated
|
|
|
|
*before* the VM is started (i.e., on the host). The attribute
|
|
|
|
`memSize' specifies the memory size of the VM in megabytes,
|
2013-07-04 23:36:17 +02:00
|
|
|
defaulting to 512. The attribute `diskImage' can optionally
|
2008-03-17 18:08:40 +01:00
|
|
|
specify a file system image to be attached to /dev/sda. (Note
|
|
|
|
that currently we expect the image to contain a filesystem, not a
|
|
|
|
full disk image with a partition table etc.)
|
|
|
|
|
|
|
|
If the build fails and Nix is run with the `-K' option, a script
|
|
|
|
`run-vm' will be left behind in the temporary build directory
|
|
|
|
that allows you to boot into the VM and debug it interactively. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2009-11-19 17:43:58 +01:00
|
|
|
runInLinuxVM = drv: lib.overrideDerivation drv (attrs: {
|
2010-08-29 23:27:06 +02:00
|
|
|
requiredSystemFeatures = [ "kvm" ];
|
2008-03-14 14:51:01 +01:00
|
|
|
builder = "${bash}/bin/sh";
|
2008-04-29 14:32:17 +02:00
|
|
|
args = ["-e" (vmRunCommand qemuCommandLinux)];
|
2008-03-14 14:51:01 +01:00
|
|
|
origArgs = attrs.args;
|
|
|
|
origBuilder = attrs.builder;
|
2013-07-15 12:28:45 +02:00
|
|
|
QEMU_OPTS = "-m ${toString (attrs.memSize or 512)}";
|
2008-03-14 14:51:01 +01:00
|
|
|
});
|
|
|
|
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2011-01-19 10:06:12 +01:00
|
|
|
extractFs = {file, fs ? null} :
|
|
|
|
with pkgs; runInLinuxVM (
|
|
|
|
stdenv.mkDerivation {
|
|
|
|
name = "extract-file";
|
2011-12-13 13:57:32 +01:00
|
|
|
buildInputs = [ utillinux ];
|
2011-01-19 10:06:12 +01:00
|
|
|
buildCommand = ''
|
|
|
|
ln -s ${linux}/lib /lib
|
|
|
|
${module_init_tools}/sbin/modprobe loop
|
|
|
|
${module_init_tools}/sbin/modprobe ext4
|
2011-01-31 16:26:03 +01:00
|
|
|
${module_init_tools}/sbin/modprobe hfs
|
|
|
|
${module_init_tools}/sbin/modprobe hfsplus
|
|
|
|
${module_init_tools}/sbin/modprobe squashfs
|
2011-01-19 10:06:12 +01:00
|
|
|
${module_init_tools}/sbin/modprobe iso9660
|
2011-01-19 11:59:26 +01:00
|
|
|
${module_init_tools}/sbin/modprobe ufs
|
2011-01-31 19:02:46 +01:00
|
|
|
${module_init_tools}/sbin/modprobe cramfs
|
2011-01-19 10:06:12 +01:00
|
|
|
mknod /dev/loop0 b 7 0
|
|
|
|
|
2012-01-18 21:16:00 +01:00
|
|
|
mkdir -p $out
|
|
|
|
mkdir -p tmp
|
2011-01-19 11:59:26 +01:00
|
|
|
mount -o loop,ro,ufstype=44bsd ${lib.optionalString (fs != null) "-t ${fs} "}${file} tmp ||
|
|
|
|
mount -o loop,ro ${lib.optionalString (fs != null) "-t ${fs} "}${file} tmp
|
2011-01-31 19:02:46 +01:00
|
|
|
cp -Rv tmp/* $out/ || exit 0
|
2011-01-19 10:06:12 +01:00
|
|
|
'';
|
|
|
|
});
|
|
|
|
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2011-01-19 10:06:12 +01:00
|
|
|
extractMTDfs = {file, fs ? null} :
|
|
|
|
with pkgs; runInLinuxVM (
|
|
|
|
stdenv.mkDerivation {
|
|
|
|
name = "extract-file-mtd";
|
2011-12-13 13:57:32 +01:00
|
|
|
buildInputs = [ utillinux mtdutils ];
|
2011-01-19 10:06:12 +01:00
|
|
|
buildCommand = ''
|
|
|
|
ln -s ${linux}/lib /lib
|
|
|
|
${module_init_tools}/sbin/modprobe mtd
|
2011-01-31 19:02:46 +01:00
|
|
|
${module_init_tools}/sbin/modprobe mtdram total_size=131072
|
2011-01-19 10:06:12 +01:00
|
|
|
${module_init_tools}/sbin/modprobe mtdchar
|
|
|
|
${module_init_tools}/sbin/modprobe mtdblock
|
|
|
|
${module_init_tools}/sbin/modprobe jffs2
|
2011-01-31 19:02:46 +01:00
|
|
|
${module_init_tools}/sbin/modprobe zlib
|
2011-01-19 10:06:12 +01:00
|
|
|
mknod /dev/mtd0 c 90 0
|
|
|
|
mknod /dev/mtdblock0 b 31 0
|
|
|
|
|
2012-01-18 21:16:00 +01:00
|
|
|
mkdir -p $out
|
|
|
|
mkdir -p tmp
|
2011-01-19 10:06:12 +01:00
|
|
|
|
|
|
|
dd if=${file} of=/dev/mtd0
|
|
|
|
mount ${lib.optionalString (fs != null) "-t ${fs} "}/dev/mtdblock0 tmp
|
|
|
|
|
|
|
|
cp -R tmp/* $out/
|
|
|
|
'';
|
|
|
|
});
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
/* Like runInLinuxVM, but run the build not using the stdenv from
|
|
|
|
the Nix store, but using the tools provided by /bin, /usr/bin
|
|
|
|
etc. from the specified filesystem image, which typically is a
|
|
|
|
filesystem containing a non-NixOS Linux distribution. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2013-05-15 07:15:16 +02:00
|
|
|
runInLinuxImage = drv: runInLinuxVM (lib.overrideDerivation drv (attrs: {
|
2008-03-17 18:08:40 +01:00
|
|
|
mountDisk = true;
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
/* Mount `image' as the root FS, but use a temporary copy-on-write
|
|
|
|
image since we don't want to (and can't) write to `image'. */
|
|
|
|
preVM = ''
|
2009-03-02 15:31:33 +01:00
|
|
|
diskImage=$(pwd)/disk-image.qcow2
|
2008-03-17 18:08:40 +01:00
|
|
|
origImage=${attrs.diskImage}
|
2009-03-02 15:31:33 +01:00
|
|
|
if test -d "$origImage"; then origImage="$origImage/disk-image.qcow2"; fi
|
2013-07-31 14:35:53 +02:00
|
|
|
${qemu}/bin/qemu-img create -b "$origImage" -f qcow2 $diskImage
|
2008-03-17 18:08:40 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
/* Inside the VM, run the stdenv setup script normally, but at the
|
|
|
|
very end set $PATH and $SHELL to the `native' paths for the
|
|
|
|
distribution inside the VM. */
|
|
|
|
postHook = ''
|
|
|
|
PATH=/usr/bin:/bin:/usr/sbin:/sbin
|
|
|
|
SHELL=/bin/sh
|
2008-03-17 18:29:07 +01:00
|
|
|
eval "$origPostHook"
|
2008-03-17 18:08:40 +01:00
|
|
|
'';
|
|
|
|
|
2008-03-17 18:29:07 +01:00
|
|
|
origPostHook = if attrs ? postHook then attrs.postHook else "";
|
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
/* Don't run Nix-specific build steps like patchelf. */
|
|
|
|
fixupPhase = "true";
|
2013-05-15 07:15:16 +02:00
|
|
|
}));
|
2008-03-17 18:08:40 +01:00
|
|
|
|
|
|
|
|
|
|
|
/* Create a filesystem image of the specified size and fill it with
|
|
|
|
a set of RPM packages. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
fillDiskWithRPMs =
|
2011-08-08 16:01:16 +02:00
|
|
|
{ size ? 4096, rpms, name, fullName, preInstall ? "", postInstall ? ""
|
2011-10-11 15:22:09 +02:00
|
|
|
, runScripts ? true, createRootFS ? defaultCreateRootFS
|
2013-05-08 13:59:28 +02:00
|
|
|
, unifiedSystemDir ? false
|
2011-08-08 16:01:16 +02:00
|
|
|
}:
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
runInLinuxVM (stdenv.mkDerivation {
|
2008-03-18 15:56:47 +01:00
|
|
|
inherit name preInstall postInstall rpms;
|
2011-10-11 15:22:09 +02:00
|
|
|
memSize = 512;
|
2008-03-17 18:08:40 +01:00
|
|
|
preVM = createEmptyImage {inherit size fullName;};
|
2008-03-14 14:51:01 +01:00
|
|
|
|
|
|
|
buildCommand = ''
|
2008-03-17 18:08:40 +01:00
|
|
|
${createRootFS}
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2008-03-18 22:14:02 +01:00
|
|
|
chroot=$(type -tP chroot)
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2013-05-08 13:59:28 +02:00
|
|
|
# Make the Nix store available in /mnt, because that's where the RPMs live.
|
|
|
|
mkdir -p /mnt/nix/store
|
|
|
|
${utillinux}/bin/mount -o bind /nix/store /mnt/nix/store
|
|
|
|
|
|
|
|
# Newer distributions like Fedora 18 require /lib etc. to be
|
|
|
|
# symlinked to /usr.
|
|
|
|
${lib.optionalString unifiedSystemDir ''
|
|
|
|
mkdir -p /mnt/usr/bin /mnt/usr/sbin /mnt/usr/lib /mnt/usr/lib64
|
|
|
|
ln -s /usr/bin /mnt/bin
|
|
|
|
ln -s /usr/sbin /mnt/sbin
|
|
|
|
ln -s /usr/lib /mnt/lib
|
|
|
|
ln -s /usr/lib64 /mnt/lib64
|
2013-05-13 17:47:20 +02:00
|
|
|
${utillinux}/bin/mount -t proc none /mnt/proc
|
2013-05-08 13:59:28 +02:00
|
|
|
''}
|
|
|
|
|
2008-03-18 15:56:47 +01:00
|
|
|
echo "unpacking RPMs..."
|
|
|
|
for i in $rpms; do
|
|
|
|
echo "$i..."
|
2013-05-08 13:59:28 +02:00
|
|
|
${rpm}/bin/rpm2cpio "$i" | (chroot /mnt ${cpio}/bin/cpio -i --make-directories)
|
2008-03-18 15:56:47 +01:00
|
|
|
done
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2008-03-18 15:56:47 +01:00
|
|
|
eval "$preInstall"
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2008-03-18 22:14:02 +01:00
|
|
|
echo "initialising RPM DB..."
|
2008-05-21 11:35:15 +02:00
|
|
|
PATH=/usr/bin:/bin:/usr/sbin:/sbin $chroot /mnt \
|
|
|
|
ldconfig -v || true
|
2008-03-18 22:14:02 +01:00
|
|
|
PATH=/usr/bin:/bin:/usr/sbin:/sbin $chroot /mnt \
|
|
|
|
rpm --initdb
|
|
|
|
|
2010-06-14 01:49:16 +02:00
|
|
|
${utillinux}/bin/mount -o bind /tmp /mnt/tmp
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-18 15:56:47 +01:00
|
|
|
echo "installing RPMs..."
|
|
|
|
PATH=/usr/bin:/bin:/usr/sbin:/sbin $chroot /mnt \
|
2008-04-11 17:36:03 +02:00
|
|
|
rpm -iv ${if runScripts then "" else "--noscripts"} $rpms
|
2008-03-14 14:51:01 +01:00
|
|
|
|
|
|
|
echo "running post-install script..."
|
|
|
|
eval "$postInstall"
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
rm /mnt/.debug
|
2011-10-11 15:22:09 +02:00
|
|
|
|
2013-05-13 22:04:11 +02:00
|
|
|
${utillinux}/bin/umount /mnt/nix/store /mnt/tmp ${lib.optionalString unifiedSystemDir "/mnt/proc"}
|
2012-08-27 19:39:13 +02:00
|
|
|
${utillinux}/bin/umount /mnt
|
2008-03-14 14:51:01 +01:00
|
|
|
'';
|
2008-11-12 18:19:12 +01:00
|
|
|
|
2011-08-08 16:01:16 +02:00
|
|
|
passthru = { inherit fullName; };
|
2008-03-14 14:51:01 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
/* Generate a script that can be used to run an interactive session
|
|
|
|
in the given image. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
makeImageTestScript = image: writeScript "image-test" ''
|
|
|
|
#! ${bash}/bin/sh
|
|
|
|
if test -z "$1"; then
|
|
|
|
echo "Syntax: $0 <copy-on-write-temp-file>"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
diskImage="$1"
|
|
|
|
if ! test -e "$diskImage"; then
|
2013-07-31 14:35:53 +02:00
|
|
|
${qemu}/bin/qemu-img create -b ${image}/disk-image.qcow2 -f qcow2 "$diskImage"
|
2008-03-14 14:51:01 +01:00
|
|
|
fi
|
|
|
|
export TMPDIR=$(mktemp -d)
|
|
|
|
export out=/dummy
|
|
|
|
export origBuilder=
|
|
|
|
export origArgs=
|
2011-08-09 16:05:40 +02:00
|
|
|
mkdir $TMPDIR/xchg
|
|
|
|
export > $TMPDIR/xchg/saved-env
|
2008-03-18 15:56:47 +01:00
|
|
|
mountDisk=1
|
2008-04-29 14:32:17 +02:00
|
|
|
${qemuCommandLinux}
|
2008-03-14 14:51:01 +01:00
|
|
|
'';
|
|
|
|
|
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
/* Build RPM packages from the tarball `src' in the Linux
|
|
|
|
distribution installed in the filesystem `diskImage'. The
|
|
|
|
tarball must contain an RPM specfile. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-18 22:14:02 +01:00
|
|
|
buildRPM = attrs: runInLinuxImage (stdenv.mkDerivation ({
|
2008-04-09 08:37:59 +02:00
|
|
|
phases = "prepareImagePhase sysInfoPhase buildPhase installPhase";
|
2008-03-18 22:14:02 +01:00
|
|
|
|
|
|
|
outDir = "rpms/${attrs.diskImage.name}";
|
2008-04-09 08:37:59 +02:00
|
|
|
|
|
|
|
prepareImagePhase = ''
|
2008-04-12 07:19:37 +02:00
|
|
|
if test -n "$extraRPMs"; then
|
2009-10-01 09:25:50 +02:00
|
|
|
for rpmdir in $extraRPMs ; do
|
|
|
|
rpm -iv $(ls $rpmdir/rpms/*/*.rpm | grep -v 'src\.rpm' | sort | head -1)
|
|
|
|
done
|
2008-04-12 07:03:36 +02:00
|
|
|
fi
|
2008-04-09 08:37:59 +02:00
|
|
|
'';
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-17 18:29:07 +01:00
|
|
|
sysInfoPhase = ''
|
2008-09-12 14:06:40 +02:00
|
|
|
echo "System/kernel: $(uname -a)"
|
2008-04-09 14:51:54 +02:00
|
|
|
if test -e /etc/fedora-release; then echo "Fedora release: $(cat /etc/fedora-release)"; fi
|
|
|
|
if test -e /etc/SuSE-release; then echo "SUSE release: $(cat /etc/SuSE-release)"; fi
|
|
|
|
header "installed RPM packages"
|
2008-03-17 18:29:07 +01:00
|
|
|
rpm -qa --qf "%{Name}-%{Version}-%{Release} (%{Arch}; %{Distribution}; %{Vendor})\n"
|
|
|
|
stopNest
|
|
|
|
'';
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
buildPhase = ''
|
2008-03-18 13:54:21 +01:00
|
|
|
eval "$preBuild"
|
2008-03-18 15:56:47 +01:00
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
# Hacky: RPM looks for <basename>.spec inside the tarball, so
|
|
|
|
# strip off the hash.
|
2008-03-14 14:51:01 +01:00
|
|
|
stripHash "$src"
|
|
|
|
srcName="$strippedName"
|
2008-03-18 13:54:21 +01:00
|
|
|
cp "$src" "$srcName" # `ln' doesn't work always work: RPM requires that the file is owned by root
|
|
|
|
|
2008-11-27 19:58:37 +01:00
|
|
|
export HOME=/tmp/home
|
|
|
|
mkdir $HOME
|
|
|
|
|
|
|
|
rpmout=/tmp/rpmout
|
|
|
|
mkdir $rpmout $rpmout/SPECS $rpmout/BUILD $rpmout/RPMS $rpmout/SRPMS
|
|
|
|
|
|
|
|
echo "%_topdir $rpmout" >> $HOME/.rpmmacros
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-10-29 18:19:49 +01:00
|
|
|
rpmbuild -vv -ta "$srcName"
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2008-03-18 13:54:21 +01:00
|
|
|
eval "$postBuild"
|
2008-03-17 18:08:40 +01:00
|
|
|
'';
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
installPhase = ''
|
2008-11-13 13:45:08 +01:00
|
|
|
eval "$preInstall"
|
2011-05-02 16:55:16 +02:00
|
|
|
|
2012-01-18 21:16:00 +01:00
|
|
|
mkdir -p $out/$outDir
|
2008-11-27 19:58:37 +01:00
|
|
|
find $rpmout -name "*.rpm" -exec cp {} $out/$outDir \;
|
2008-03-18 13:54:21 +01:00
|
|
|
|
2008-03-18 22:14:02 +01:00
|
|
|
for i in $out/$outDir/*.rpm; do
|
2008-03-18 13:54:21 +01:00
|
|
|
header "Generated RPM/SRPM: $i"
|
|
|
|
rpm -qip $i
|
|
|
|
stopNest
|
|
|
|
done
|
2008-11-13 13:45:08 +01:00
|
|
|
|
|
|
|
eval "$postInstall"
|
2008-03-18 22:14:02 +01:00
|
|
|
''; # */
|
|
|
|
} // attrs));
|
2008-03-14 14:51:01 +01:00
|
|
|
|
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
/* Create a filesystem image of the specified size and fill it with
|
|
|
|
a set of Debian packages. `debs' must be a list of list of
|
|
|
|
.deb files, namely, the Debian packages grouped together into
|
|
|
|
strongly connected components. See deb/deb-closure.nix. */
|
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
fillDiskWithDebs =
|
2011-10-11 15:22:09 +02:00
|
|
|
{ size ? 4096, debs, name, fullName, postInstall ? null, createRootFS ? defaultCreateRootFS }:
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
runInLinuxVM (stdenv.mkDerivation {
|
|
|
|
inherit name postInstall;
|
|
|
|
|
|
|
|
debs = (lib.intersperse "|" debs);
|
|
|
|
|
2008-03-17 18:08:40 +01:00
|
|
|
preVM = createEmptyImage {inherit size fullName;};
|
2008-03-14 14:51:01 +01:00
|
|
|
|
|
|
|
buildCommand = ''
|
2008-03-17 18:08:40 +01:00
|
|
|
${createRootFS}
|
2008-03-14 14:51:01 +01:00
|
|
|
|
2009-10-02 11:11:42 +02:00
|
|
|
PATH=$PATH:${dpkg}/bin:${dpkg}/sbin:${glibc}/sbin:${lzma}/bin
|
2008-03-14 14:51:01 +01:00
|
|
|
|
|
|
|
# Unpack the .debs. We do this to prevent pre-install scripts
|
|
|
|
# (which have lots of circular dependencies) from barfing.
|
|
|
|
echo "unpacking Debs..."
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
for deb in $debs; do
|
|
|
|
if test "$deb" != "|"; then
|
|
|
|
echo "$deb..."
|
|
|
|
dpkg-deb --extract "$deb" /mnt
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
# Make the Nix store available in /mnt, because that's where the .debs live.
|
|
|
|
mkdir -p /mnt/inst/nix/store
|
2010-06-10 14:28:04 +02:00
|
|
|
${utillinux}/bin/mount -o bind /nix/store /mnt/inst/nix/store
|
|
|
|
${utillinux}/bin/mount -o bind /proc /mnt/proc
|
|
|
|
${utillinux}/bin/mount -o bind /dev /mnt/dev
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
# Misc. files/directories assumed by various packages.
|
2008-11-12 18:15:09 +01:00
|
|
|
echo "initialising Dpkg DB..."
|
2008-03-14 14:51:01 +01:00
|
|
|
touch /mnt/etc/shells
|
|
|
|
touch /mnt/var/lib/dpkg/status
|
|
|
|
touch /mnt/var/lib/dpkg/available
|
|
|
|
touch /mnt/var/lib/dpkg/diversions
|
|
|
|
|
|
|
|
# Now install the .debs. This is basically just to register
|
|
|
|
# them with dpkg and to make their pre/post-install scripts
|
|
|
|
# run.
|
|
|
|
echo "installing Debs..."
|
|
|
|
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
oldIFS="$IFS"
|
|
|
|
IFS="|"
|
|
|
|
for component in $debs; do
|
|
|
|
IFS="$oldIFS"
|
|
|
|
echo
|
|
|
|
echo ">>> INSTALLING COMPONENT: $component"
|
|
|
|
debs=
|
|
|
|
for i in $component; do
|
|
|
|
debs="$debs /inst/$i";
|
|
|
|
done
|
|
|
|
chroot=$(type -tP chroot)
|
2013-07-29 07:33:58 +02:00
|
|
|
|
|
|
|
# Create a fake start-stop-daemon script, as done in debootstrap.
|
|
|
|
mv "/mnt/sbin/start-stop-daemon" "/mnt/sbin/start-stop-daemon.REAL"
|
|
|
|
echo "#!/bin/true" > "/mnt/sbin/start-stop-daemon"
|
|
|
|
chmod 755 "/mnt/sbin/start-stop-daemon"
|
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
PATH=/usr/bin:/bin:/usr/sbin:/sbin $chroot /mnt \
|
2011-02-14 17:52:32 +01:00
|
|
|
/usr/bin/dpkg --install --force-all $debs < /dev/null || true
|
2013-07-29 07:33:58 +02:00
|
|
|
|
|
|
|
# Move the real start-stop-daemon back into its place.
|
|
|
|
mv "/mnt/sbin/start-stop-daemon.REAL" "/mnt/sbin/start-stop-daemon"
|
2008-03-14 14:51:01 +01:00
|
|
|
done
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
echo "running post-install script..."
|
|
|
|
eval "$postInstall"
|
2009-10-02 11:34:37 +02:00
|
|
|
ln -sf dash /mnt/bin/sh
|
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
rm /mnt/.debug
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-10 14:28:04 +02:00
|
|
|
${utillinux}/bin/umount /mnt/inst/nix/store
|
|
|
|
${utillinux}/bin/umount /mnt/proc
|
|
|
|
${utillinux}/bin/umount /mnt/dev
|
|
|
|
${utillinux}/bin/umount /mnt
|
2008-03-14 14:51:01 +01:00
|
|
|
'';
|
2008-11-12 18:19:12 +01:00
|
|
|
|
2011-08-08 16:01:16 +02:00
|
|
|
passthru = { inherit fullName; };
|
2008-03-14 14:51:01 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
|
2008-04-09 14:02:15 +02:00
|
|
|
/* Generate a Nix expression containing fetchurl calls for the
|
|
|
|
closure of a set of top-level RPM packages from the
|
2008-04-11 13:52:40 +02:00
|
|
|
`primary.xml.gz' file of a Fedora or openSUSE distribution. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-04-09 14:02:15 +02:00
|
|
|
rpmClosureGenerator =
|
2011-10-11 15:22:09 +02:00
|
|
|
{name, packagesLists, urlPrefixes, packages, archs ? []}:
|
2012-08-27 19:46:51 +02:00
|
|
|
assert (builtins.length packagesLists) == (builtins.length urlPrefixes);
|
2009-04-20 14:52:24 +02:00
|
|
|
runCommand "${name}.nix" {buildInputs = [perl perlPackages.XMLSimple]; inherit archs;} ''
|
2011-10-11 15:22:09 +02:00
|
|
|
${lib.concatImapStrings (i: pl: ''
|
|
|
|
gunzip < ${pl} > ./packages_${toString i}.xml
|
|
|
|
'') packagesLists}
|
2008-04-09 14:02:15 +02:00
|
|
|
perl -w ${rpm/rpm-closure.pl} \
|
2011-10-11 15:22:09 +02:00
|
|
|
${lib.concatImapStrings (i: pl: "./packages_${toString i}.xml ${pl.snd} " ) (lib.zipLists packagesLists urlPrefixes)} \
|
|
|
|
${toString packages} > $out
|
2008-04-09 14:02:15 +02:00
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
|
|
/* Helper function that combines rpmClosureGenerator and
|
|
|
|
fillDiskWithRPMs to generate a disk image from a set of package
|
|
|
|
names. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-04-09 14:02:15 +02:00
|
|
|
makeImageFromRPMDist =
|
2011-10-11 15:22:09 +02:00
|
|
|
{ name, fullName, size ? 4096
|
|
|
|
, urlPrefix ? "", urlPrefixes ? [urlPrefix]
|
|
|
|
, packagesList ? "", packagesLists ? [packagesList]
|
2010-06-14 20:42:18 +02:00
|
|
|
, packages, extraPackages ? []
|
|
|
|
, preInstall ? "", postInstall ? "", archs ? ["noarch" "i386"]
|
2013-05-08 13:59:28 +02:00
|
|
|
, runScripts ? true, createRootFS ? defaultCreateRootFS
|
|
|
|
, unifiedSystemDir ? false }:
|
2008-04-09 14:02:15 +02:00
|
|
|
|
|
|
|
fillDiskWithRPMs {
|
2013-05-08 13:59:28 +02:00
|
|
|
inherit name fullName size preInstall postInstall runScripts createRootFS unifiedSystemDir;
|
2008-04-09 14:02:15 +02:00
|
|
|
rpms = import (rpmClosureGenerator {
|
2011-10-11 15:22:09 +02:00
|
|
|
inherit name packagesLists urlPrefixes archs;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = packages ++ extraPackages;
|
2011-08-08 16:01:16 +02:00
|
|
|
}) { inherit fetchurl; };
|
2008-04-09 14:02:15 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* Like `rpmClosureGenerator', but now for Debian/Ubuntu releases
|
|
|
|
(i.e. generate a closure from a Packages.bz2 file). */
|
|
|
|
|
|
|
|
debClosureGenerator =
|
2012-08-27 19:46:51 +02:00
|
|
|
{name, packagesLists, urlPrefix, packages}:
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2012-12-04 19:56:31 +01:00
|
|
|
runCommand "${name}.nix" { buildInputs = [ perl dpkg ]; } ''
|
2012-08-27 19:46:51 +02:00
|
|
|
for i in ${toString packagesLists}; do
|
|
|
|
echo "adding $i..."
|
|
|
|
bunzip2 < $i >> ./Packages
|
|
|
|
done
|
2008-09-12 15:17:52 +02:00
|
|
|
|
|
|
|
# Work around this bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=452279
|
2012-03-06 19:49:44 +01:00
|
|
|
sed -i ./Packages -e s/x86_64-linux-gnu/x86-64-linux-gnu/g
|
2008-09-12 15:17:52 +02:00
|
|
|
|
2012-12-04 19:56:31 +01:00
|
|
|
perl -w ${deb/deb-closure.pl} \
|
2008-04-09 14:02:15 +02:00
|
|
|
./Packages ${urlPrefix} ${toString packages} > $out
|
|
|
|
'';
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-04-09 14:02:15 +02:00
|
|
|
|
|
|
|
/* Helper function that combines debClosureGenerator and
|
|
|
|
fillDiskWithDebs to generate a disk image from a set of package
|
|
|
|
names. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-04-09 14:02:15 +02:00
|
|
|
makeImageFromDebDist =
|
2012-08-27 19:46:51 +02:00
|
|
|
{ name, fullName, size ? 4096, urlPrefix
|
|
|
|
, packagesList ? "", packagesLists ? [packagesList]
|
2010-06-14 20:42:18 +02:00
|
|
|
, packages, extraPackages ? [], postInstall ? "" }:
|
2008-04-09 14:02:15 +02:00
|
|
|
|
2008-11-12 18:15:09 +01:00
|
|
|
let
|
|
|
|
expr = debClosureGenerator {
|
2012-08-27 19:46:51 +02:00
|
|
|
inherit name packagesLists urlPrefix;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = packages ++ extraPackages;
|
2008-11-12 18:15:09 +01:00
|
|
|
};
|
|
|
|
in
|
|
|
|
(fillDiskWithDebs {
|
|
|
|
inherit name fullName size postInstall;
|
|
|
|
debs = import expr {inherit fetchurl;};
|
|
|
|
}) // {inherit expr;};
|
2008-04-09 14:02:15 +02:00
|
|
|
|
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
/* The set of supported RPM-based distributions. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
rpmDistros = {
|
2008-04-09 14:02:15 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora2i386 = {
|
2008-04-09 14:51:54 +02:00
|
|
|
name = "fedora-core-2-i386";
|
|
|
|
fullName = "Fedora Core 2 (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://fedora/linux/core/2/i386/os/repodata/primary.xml.gz;
|
|
|
|
sha256 = "1nq1k2k0nzkii737cka301f0vbd2ix2wsfvi6bblpi748q6h2w4k";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://fedora/linux/core/2/i386/os;
|
2008-04-11 17:36:03 +02:00
|
|
|
runScripts = false;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages;
|
|
|
|
};
|
|
|
|
|
|
|
|
fedora3i386 = {
|
2008-04-09 14:51:54 +02:00
|
|
|
name = "fedora-core-3-i386";
|
|
|
|
fullName = "Fedora Core 3 (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://fedora/linux/core/3/i386/os/repodata/primary.xml.gz;
|
|
|
|
sha256 = "13znspn4g1bkjkk47393k9chswgzl6nx1n0q6h2wrw52c7d9nw9i";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://fedora/linux/core/3/i386/os;
|
2008-04-11 17:36:03 +02:00
|
|
|
archs = ["noarch" "i386" "i586"];
|
|
|
|
runScripts = false;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages;
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora5i386 = {
|
2008-04-09 14:51:54 +02:00
|
|
|
name = "fedora-core-5-i386";
|
|
|
|
fullName = "Fedora Core 5 (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://fedora/linux/core/5/i386/os/repodata/primary.xml.gz;
|
|
|
|
sha256 = "0lfk4mzrpiyls8h7k9ckc3vgywbmg05zsr4ag6qakgnv9gljijig";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://fedora/linux/core/5/i386/os;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "util-linux" ];
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora7i386 = {
|
2008-04-09 14:02:15 +02:00
|
|
|
name = "fedora-7-i386";
|
|
|
|
fullName = "Fedora 7 (i386)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/7/Everything/i386/os/repodata/primary.xml.gz;
|
|
|
|
sha256 = "0ssfa01jbwdf566rsxm443yi8f9b1drgfpv51904bark4glgvs33";
|
2008-04-09 14:02:15 +02:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/7/Everything/i386/os;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages;
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora8i386 = {
|
2008-04-09 14:02:15 +02:00
|
|
|
name = "fedora-8-i386";
|
|
|
|
fullName = "Fedora 8 (i386)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/8/Everything/i386/os/repodata/primary.xml.gz;
|
|
|
|
sha256 = "0kwf0jcp63pygpvgvwl4w58pph24xbcy6db6fnq2f3ly5myhz53n";
|
2008-04-09 14:02:15 +02:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/8/Everything/i386/os;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages;
|
|
|
|
};
|
2008-04-09 14:02:15 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora9i386 = {
|
2008-05-21 11:35:15 +02:00
|
|
|
name = "fedora-9-i386";
|
|
|
|
fullName = "Fedora 9 (i386)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/9/Everything/i386/os/repodata/primary.xml.gz;
|
|
|
|
sha256 = "1qd7wb5hfxg4mkpf4k3w49hy0qqf704dqlj3igaibyzmrn9rvk7h";
|
2008-05-21 11:35:15 +02:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/9/Everything/i386/os;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2008-05-21 11:35:15 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora9x86_64 = {
|
2008-09-12 14:24:07 +02:00
|
|
|
name = "fedora-9-x86_64";
|
|
|
|
fullName = "Fedora 9 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/9/Everything/x86_64/os/repodata/primary.xml.gz;
|
|
|
|
sha256 = "1qv68i5s6gis4fbj4lxkibx8zxw5kqxapk95lvm76ml59gm7axxx";
|
2008-09-12 14:24:07 +02:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/9/Everything/x86_64/os;
|
2008-09-12 14:24:07 +02:00
|
|
|
archs = ["noarch" "x86_64"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2008-09-12 14:24:07 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora10i386 = {
|
2008-11-26 12:14:39 +01:00
|
|
|
name = "fedora-10-i386";
|
|
|
|
fullName = "Fedora 10 (i386)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/10/Everything/i386/os/repodata/beeea88d162e76993c25b9dd8139868274ee7fa1-primary.xml.gz;
|
|
|
|
sha1 = "beeea88d162e76993c25b9dd8139868274ee7fa1";
|
2008-11-26 12:14:39 +01:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/10/Everything/i386/os;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2008-11-26 12:14:39 +01:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora10x86_64 = {
|
2008-11-26 12:14:39 +01:00
|
|
|
name = "fedora-10-x86_64";
|
|
|
|
fullName = "Fedora 10 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/10/Everything/x86_64/os/repodata/7958210175e86b5cc843cf4bd0bc8659e445e261-primary.xml.gz;
|
|
|
|
sha1 = "7958210175e86b5cc843cf4bd0bc8659e445e261";
|
2008-11-26 12:14:39 +01:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/10/Everything/x86_64/os;
|
2008-11-26 12:14:39 +01:00
|
|
|
archs = ["noarch" "x86_64"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2008-11-26 12:14:39 +01:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora11i386 = {
|
2009-06-09 16:10:16 +02:00
|
|
|
name = "fedora-11-i386";
|
|
|
|
fullName = "Fedora 11 (i386)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/11/Everything/i386/os/repodata/4a59e5ec0a3a55979f2045c9e6824b87feb1c8c3df12d893e9ee3057ba482485-primary.xml.gz;
|
|
|
|
sha256 = "4a59e5ec0a3a55979f2045c9e6824b87feb1c8c3df12d893e9ee3057ba482485";
|
2009-06-09 16:10:16 +02:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/11/Everything/i386/os;
|
2009-06-09 16:32:31 +02:00
|
|
|
archs = ["noarch" "i386" "i586"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2009-06-09 16:10:16 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora11x86_64 = {
|
2009-06-09 16:10:16 +02:00
|
|
|
name = "fedora-11-x86_64";
|
|
|
|
fullName = "Fedora 11 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/11/Everything/x86_64/os/repodata/b3e9f0d474893d14b0352deddabc7e3ee017d038614e82d7c6d7717510d6ce7e-primary.xml.gz;
|
|
|
|
sha256 = "b3e9f0d474893d14b0352deddabc7e3ee017d038614e82d7c6d7717510d6ce7e";
|
2009-06-09 16:10:16 +02:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/11/Everything/x86_64/os;
|
2009-06-09 16:10:16 +02:00
|
|
|
archs = ["noarch" "x86_64"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2009-06-09 16:10:16 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora12i386 = {
|
2009-12-09 23:35:46 +01:00
|
|
|
name = "fedora-12-i386";
|
|
|
|
fullName = "Fedora 12 (i386)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/12/Everything/i386/os/repodata/e27694b7824ee6bbf87af629950e6953eaddf91c73e489f5de690a7ecb9d726e-primary.xml.gz;
|
|
|
|
sha256 = "e27694b7824ee6bbf87af629950e6953eaddf91c73e489f5de690a7ecb9d726e";
|
2009-12-09 23:35:46 +01:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/12/Everything/i386/os;
|
2009-12-09 23:35:46 +01:00
|
|
|
archs = ["noarch" "i386" "i586" "i686"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2009-12-09 23:35:46 +01:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora12x86_64 = {
|
2009-12-09 23:35:46 +01:00
|
|
|
name = "fedora-12-x86_64";
|
|
|
|
fullName = "Fedora 12 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/12/Everything/x86_64/os/repodata/6b142ef02acbc77f405fbfdedd82451e692a01201471665052a0e00ba8ac0959-primary.xml.gz;
|
|
|
|
sha256 = "6b142ef02acbc77f405fbfdedd82451e692a01201471665052a0e00ba8ac0959";
|
2009-12-09 23:35:46 +01:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/12/Everything/x86_64/os;
|
2009-12-09 23:35:46 +01:00
|
|
|
archs = ["noarch" "x86_64"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2009-12-09 23:35:46 +01:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora13i386 = {
|
2010-06-14 18:48:36 +02:00
|
|
|
name = "fedora-13-i386";
|
|
|
|
fullName = "Fedora 13 (i386)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/13/Everything/i386/os/repodata/be70ac9e1031fd34222b2ec6cc8a337bc6fabd1d06969990955c5f358d138e35-primary.xml.gz;
|
|
|
|
sha256 = "be70ac9e1031fd34222b2ec6cc8a337bc6fabd1d06969990955c5f358d138e35";
|
2010-06-14 18:48:36 +02:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/13/Everything/i386/os;
|
2010-06-14 18:48:36 +02:00
|
|
|
archs = ["noarch" "i386" "i586" "i686"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2010-06-14 18:48:36 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
fedora13x86_64 = {
|
2010-06-14 18:48:36 +02:00
|
|
|
name = "fedora-13-x86_64";
|
|
|
|
fullName = "Fedora 13 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
2011-08-08 16:01:16 +02:00
|
|
|
url = mirror://fedora/linux/releases/13/Everything/x86_64/os/repodata/01996e6d20b0a4bf3390767bd26709932e42c54422b39005ec2dd4ef2e8b0f3a-primary.xml.gz;
|
|
|
|
sha256 = "01996e6d20b0a4bf3390767bd26709932e42c54422b39005ec2dd4ef2e8b0f3a";
|
2010-06-14 18:48:36 +02:00
|
|
|
};
|
2011-08-08 16:01:16 +02:00
|
|
|
urlPrefix = mirror://fedora/linux/releases/13/Everything/x86_64/os;
|
2010-06-14 18:48:36 +02:00
|
|
|
archs = ["noarch" "x86_64"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux-ng" ];
|
|
|
|
};
|
2010-06-14 18:48:36 +02:00
|
|
|
|
2012-02-07 14:14:25 +01:00
|
|
|
fedora16i386 = {
|
|
|
|
name = "fedora-16-i386";
|
|
|
|
fullName = "Fedora 16 (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://fedora/linux/releases/16/Everything/i386/os/repodata/8d5e9b291748d8254e1e66ad2d35bdb7e020d8c2c6a84f928595597b7e546118-primary.xml.gz;
|
|
|
|
sha256 = "8d5e9b291748d8254e1e66ad2d35bdb7e020d8c2c6a84f928595597b7e546118";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://fedora/linux/releases/16/Everything/i386/os;
|
|
|
|
archs = ["noarch" "i386" "i586" "i686"];
|
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux" ];
|
|
|
|
};
|
|
|
|
|
|
|
|
fedora16x86_64 = {
|
|
|
|
name = "fedora-16-x86_64";
|
|
|
|
fullName = "Fedora 16 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://fedora/linux/releases/16/Everything/x86_64/os/repodata/3fffacc6006d9b4782e57f3f11fcb44ab2a1abf6625e4afb4bf6a1e6475dd107-primary.xml.gz;
|
|
|
|
sha256 = "3fffacc6006d9b4782e57f3f11fcb44ab2a1abf6625e4afb4bf6a1e6475dd107";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://fedora/linux/releases/16/Everything/x86_64/os;
|
|
|
|
archs = ["noarch" "x86_64"];
|
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux" ];
|
|
|
|
};
|
|
|
|
|
2013-05-08 13:59:28 +02:00
|
|
|
fedora18i386 = {
|
|
|
|
name = "fedora-18-i386";
|
|
|
|
fullName = "Fedora 18 (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://fedora/linux/releases/18/Everything/i386/os/repodata/935f57e61365047b6aee346792bc68bfd24de30874ce5d26bf730a992d36678d-primary.xml.gz;
|
|
|
|
sha256 = "935f57e61365047b6aee346792bc68bfd24de30874ce5d26bf730a992d36678d";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://fedora/linux/releases/18/Everything/i386/os;
|
|
|
|
archs = ["noarch" "i386" "i586" "i686"];
|
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux" ];
|
|
|
|
unifiedSystemDir = true;
|
|
|
|
};
|
|
|
|
|
|
|
|
fedora18x86_64 = {
|
|
|
|
name = "fedora-18-x86_64";
|
|
|
|
fullName = "Fedora 18 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://fedora/linux/releases/18/Everything/x86_64/os/repodata/463ac49f2218e404607b2eeb3c04be1a648d90293f4239bbb6a63c2fed672bea-primary.xml.gz;
|
|
|
|
sha256 = "463ac49f2218e404607b2eeb3c04be1a648d90293f4239bbb6a63c2fed672bea";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://fedora/linux/releases/18/Everything/x86_64/os;
|
|
|
|
archs = ["noarch" "x86_64"];
|
|
|
|
packages = commonFedoraPackages ++ [ "cronie" "util-linux" ];
|
|
|
|
unifiedSystemDir = true;
|
|
|
|
};
|
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
opensuse103i386 = {
|
2008-04-11 13:52:40 +02:00
|
|
|
name = "opensuse-10.3-i586";
|
|
|
|
fullName = "openSUSE 10.3 (i586)";
|
|
|
|
packagesList = fetchurl {
|
2010-06-18 13:49:57 +02:00
|
|
|
url = mirror://opensuse/10.3/repo/oss/suse/repodata/primary.xml.gz;
|
2008-04-11 13:52:40 +02:00
|
|
|
sha256 = "0zb5kxsb755nqq9i8jdclmanacyf551ncx6a011v9jqphsvyfvd7";
|
|
|
|
};
|
2010-06-18 13:49:57 +02:00
|
|
|
urlPrefix = mirror://opensuse/10.3/repo/oss/suse/;
|
2008-04-11 13:52:40 +02:00
|
|
|
archs = ["noarch" "i586"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonOpenSUSEPackages ++ [ "devs" ];
|
|
|
|
};
|
2008-04-11 13:52:40 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
opensuse110i386 = {
|
2009-03-02 14:22:31 +01:00
|
|
|
name = "opensuse-11.0-i586";
|
|
|
|
fullName = "openSUSE 11.0 (i586)";
|
|
|
|
packagesList = fetchurl {
|
2010-06-18 13:49:57 +02:00
|
|
|
url = mirror://opensuse/11.0/repo/oss/suse/repodata/primary.xml.gz;
|
2009-03-02 14:22:31 +01:00
|
|
|
sha256 = "13rv855aj8p3h1zpsji5xa1wpkhgq94gcxzvg05l2b68b15q3mwn";
|
|
|
|
};
|
2010-06-18 13:49:57 +02:00
|
|
|
urlPrefix = mirror://opensuse/11.0/repo/oss/suse/;
|
2009-03-02 14:22:31 +01:00
|
|
|
archs = ["noarch" "i586"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonOpenSUSEPackages;
|
|
|
|
};
|
2009-03-02 14:22:31 +01:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
opensuse110x86_64 = {
|
2009-03-02 14:22:31 +01:00
|
|
|
name = "opensuse-11.0-x86_64";
|
|
|
|
fullName = "openSUSE 11.0 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
2010-06-18 13:49:57 +02:00
|
|
|
url = mirror://opensuse/11.0/repo/oss/suse/repodata/primary.xml.gz;
|
2009-03-02 14:22:31 +01:00
|
|
|
sha256 = "13rv855aj8p3h1zpsji5xa1wpkhgq94gcxzvg05l2b68b15q3mwn";
|
|
|
|
};
|
2010-06-18 13:49:57 +02:00
|
|
|
urlPrefix = mirror://opensuse/11.0/repo/oss/suse/;
|
2009-03-02 14:22:31 +01:00
|
|
|
archs = ["noarch" "x86_64"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonOpenSUSEPackages;
|
|
|
|
};
|
2009-03-02 14:22:31 +01:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
opensuse111i386 = {
|
2009-09-24 09:40:30 +02:00
|
|
|
name = "opensuse-11.1-i586";
|
|
|
|
fullName = "openSUSE 11.1 (i586)";
|
|
|
|
packagesList = fetchurl {
|
2010-06-18 13:49:57 +02:00
|
|
|
url = mirror://opensuse/11.1/repo/oss/suse/repodata/primary.xml.gz;
|
2009-09-24 09:40:30 +02:00
|
|
|
sha256 = "1mfmp9afikj0hci1s8cpwjdr0ycbpfym9gdhci590r9fa75w221j";
|
|
|
|
};
|
2010-06-18 13:49:57 +02:00
|
|
|
urlPrefix = mirror://opensuse/11.1/repo/oss/suse/;
|
2009-09-24 09:40:30 +02:00
|
|
|
archs = ["noarch" "i586"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonOpenSUSEPackages;
|
|
|
|
};
|
2009-09-24 09:40:30 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
opensuse111x86_64 = {
|
2009-09-24 09:40:30 +02:00
|
|
|
name = "opensuse-11.1-x86_64";
|
|
|
|
fullName = "openSUSE 11.1 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
2010-06-18 13:49:57 +02:00
|
|
|
url = mirror://opensuse/11.1/repo/oss/suse/repodata/primary.xml.gz;
|
2009-09-24 09:40:30 +02:00
|
|
|
sha256 = "1mfmp9afikj0hci1s8cpwjdr0ycbpfym9gdhci590r9fa75w221j";
|
|
|
|
};
|
2010-06-18 13:49:57 +02:00
|
|
|
urlPrefix = mirror://opensuse/11.1/repo/oss/suse/;
|
2009-09-24 09:40:30 +02:00
|
|
|
archs = ["noarch" "x86_64"];
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonOpenSUSEPackages;
|
|
|
|
};
|
|
|
|
|
2013-07-05 17:52:42 +02:00
|
|
|
centos64i386 = {
|
|
|
|
name = "centos-6.4-i386";
|
|
|
|
fullName = "CentOS 6.4 (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = http://mirror.centos.org/centos/6.4/os/i386/repodata/87aa4c4e19f9a3ec93e3d820f1ea6b6ece8810cb45f117a16354465e57a1b50d-primary.xml.gz;
|
|
|
|
sha256 = "03dml5bmwijlcfhigwa5rc88ikkfdgmg286qwf9yr8zr3574ral7";
|
|
|
|
};
|
|
|
|
urlPrefix = http://mirror.centos.org/centos/6.4/os/i386/ ;
|
|
|
|
archs = ["noarch" "i386"];
|
|
|
|
packages = commonCentOSPackages;
|
|
|
|
};
|
|
|
|
|
|
|
|
centos64x86_64 = {
|
|
|
|
name = "centos-6.4-x86_64";
|
|
|
|
fullName = "CentOS 6.4 (x86_64)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = http://mirror.centos.org/centos/6.4/os/x86_64/repodata/4d4030b92f010f466eb4f004312b9f532b9e85e60c5e6421e8b429c180ac1efe-primary.xml.gz;
|
|
|
|
sha256 = "1zhymj0c2adlx0hn8phcws2rwaskkwmk217hnip4c3q15ywk0h2d";
|
|
|
|
};
|
|
|
|
urlPrefix = http://mirror.centos.org/centos/6.4/os/x86_64/ ;
|
|
|
|
archs = ["noarch" "x86_64"];
|
|
|
|
packages = commonCentOSPackages;
|
|
|
|
};
|
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
};
|
2009-09-24 09:40:30 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
|
|
|
|
/* The set of supported Dpkg-based distributions. */
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
debDistros = {
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-09-12 15:34:41 +02:00
|
|
|
# Interestingly, the SHA-256 hashes provided by Ubuntu in
|
|
|
|
# http://nl.archive.ubuntu.com/ubuntu/dists/{gutsy,hardy}/Release are
|
2008-11-12 18:15:09 +01:00
|
|
|
# wrong, but the SHA-1 and MD5 hashes are correct. Intrepid is fine.
|
2008-09-12 15:34:41 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu710i386 = {
|
2008-04-09 14:02:15 +02:00
|
|
|
name = "ubuntu-7.10-gutsy-i386";
|
|
|
|
fullName = "Ubuntu 7.10 Gutsy (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/gutsy/main/binary-i386/Packages.bz2;
|
|
|
|
sha1 = "8b52ee3d417700e2b2ee951517fa25a8792cabfd";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://ubuntu;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu804i386 = {
|
2008-09-12 15:34:41 +02:00
|
|
|
name = "ubuntu-8.04-hardy-i386";
|
|
|
|
fullName = "Ubuntu 8.04 Hardy (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/hardy/main/binary-i386/Packages.bz2;
|
|
|
|
sha1 = "db74581ee75cb3bee2a8ae62364e97956c723259";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://ubuntu;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu804x86_64 = {
|
2008-09-12 15:34:41 +02:00
|
|
|
name = "ubuntu-8.04-hardy-amd64";
|
|
|
|
fullName = "Ubuntu 8.04 Hardy (amd64)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/hardy/main/binary-amd64/Packages.bz2;
|
|
|
|
sha1 = "d1f1d2b3cc62533d6e4337f2696a5d27235d1f28";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://ubuntu;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu810i386 = {
|
2008-11-12 18:15:09 +01:00
|
|
|
name = "ubuntu-8.10-intrepid-i386";
|
|
|
|
fullName = "Ubuntu 8.10 Intrepid (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/intrepid/main/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "70483d40a9e9b74598f2faede7df5d5103ee60055af7374f8db5c7e6017c4cf6";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://ubuntu;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu810x86_64 = {
|
2008-11-12 18:15:09 +01:00
|
|
|
name = "ubuntu-8.10-intrepid-amd64";
|
|
|
|
fullName = "Ubuntu 8.10 Intrepid (amd64)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/intrepid/main/binary-amd64/Packages.bz2;
|
2009-02-24 13:14:48 +01:00
|
|
|
sha256 = "01b2f3842cbdd5834446ddf91691bcf60f59a726dcefa23fb5b93fdc8ea7e27f";
|
2008-11-12 18:15:09 +01:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://ubuntu;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2009-04-09 16:29:19 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu904i386 = {
|
2009-04-09 16:38:08 +02:00
|
|
|
name = "ubuntu-9.04-jaunty-i386";
|
|
|
|
fullName = "Ubuntu 9.04 Jaunty (i386)";
|
2009-04-09 16:29:19 +02:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/jaunty/main/binary-i386/Packages.bz2;
|
2009-06-03 21:20:13 +02:00
|
|
|
sha256 = "72c95e4901ad56ce8791723e2ae40bce2399f306f9956cac80e964011e1948d0";
|
2009-04-09 16:29:19 +02:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://ubuntu;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu904x86_64 = {
|
2009-04-09 16:38:08 +02:00
|
|
|
name = "ubuntu-9.04-jaunty-amd64";
|
|
|
|
fullName = "Ubuntu 9.04 Jaunty (amd64)";
|
2009-04-09 16:29:19 +02:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/jaunty/main/binary-amd64/Packages.bz2;
|
2009-09-23 22:46:22 +02:00
|
|
|
sha256 = "af760ce04e43f066b8938b1abdeff979a642f940515659ede44f7877ca358ca8";
|
2009-04-09 16:29:19 +02:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://ubuntu;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2009-04-09 16:29:19 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu910i386 = {
|
2009-11-05 15:49:17 +01:00
|
|
|
name = "ubuntu-9.10-karmic-i386";
|
|
|
|
fullName = "Ubuntu 9.10 Karmic (i386)";
|
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/karmic/main/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "6e3e813857496f2af6cd7e6ada06b3398fa067a7992c5fd7e8bd8fa92e3548b7";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://ubuntu;
|
2011-02-14 17:52:32 +01:00
|
|
|
packages = commonDebPackages ++ [ "diff" "mktemp" ];
|
2010-06-14 20:42:18 +02:00
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu910x86_64 = {
|
2009-11-05 15:49:17 +01:00
|
|
|
name = "ubuntu-9.10-karmic-amd64";
|
|
|
|
fullName = "Ubuntu 9.10 Karmic (amd64)";
|
2012-08-27 19:46:51 +02:00
|
|
|
packagesList = fetchurl {
|
2009-11-05 15:49:17 +01:00
|
|
|
url = mirror://ubuntu/dists/karmic/main/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "3a604fcb0c135eeb8b95da3e90a8fd4cfeff519b858cd3c9e62ea808cb9fec40";
|
|
|
|
};
|
|
|
|
urlPrefix = mirror://ubuntu;
|
2011-02-14 17:52:32 +01:00
|
|
|
packages = commonDebPackages ++ [ "diff" "mktemp" ];
|
2010-06-14 20:42:18 +02:00
|
|
|
};
|
2009-11-05 15:49:17 +01:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu1004i386 = {
|
2010-06-14 19:05:26 +02:00
|
|
|
name = "ubuntu-10.04-lucid-i386";
|
|
|
|
fullName = "Ubuntu 10.04 Lucid (i386)";
|
2012-09-13 23:15:35 +02:00
|
|
|
packagesList =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/lucid/main/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "0e46596202a68caa754dfe0883f46047525309880c492cdd5e2d0970fcf626aa";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/lucid/universe/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "13nvsb7na9igps2fdbbfpq4y8ihccmcs6x35pfyfp6rkhjgpzigy";
|
|
|
|
})
|
|
|
|
];
|
2010-06-14 19:05:26 +02:00
|
|
|
urlPrefix = mirror://ubuntu;
|
2011-02-14 17:52:32 +01:00
|
|
|
packages = commonDebPackages ++ [ "diffutils" "mktemp" ];
|
2010-06-14 20:42:18 +02:00
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
ubuntu1004x86_64 = {
|
2010-06-14 19:05:26 +02:00
|
|
|
name = "ubuntu-10.04-lucid-amd64";
|
|
|
|
fullName = "Ubuntu 10.04 Lucid (amd64)";
|
2012-09-13 23:15:35 +02:00
|
|
|
packagesList =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/lucid/main/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "74a8f3192b0eda397d65316e0fa6cd34d5358dced41639e07d9f1047971bfef0";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/lucid/universe/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "112lbnf8rcsbbh89aci4m6gwac0jy16838aij0av8n076zwkvlj9";
|
|
|
|
})
|
|
|
|
];
|
2010-06-14 19:05:26 +02:00
|
|
|
urlPrefix = mirror://ubuntu;
|
2011-02-14 17:52:32 +01:00
|
|
|
packages = commonDebPackages ++ [ "diffutils" "mktemp" ];
|
|
|
|
};
|
|
|
|
|
|
|
|
ubuntu1010i386 = {
|
2012-09-13 23:06:52 +02:00
|
|
|
name = "ubuntu-10.10-maverick-i386";
|
|
|
|
fullName = "Ubuntu 10.10 Maverick (i386)";
|
2012-09-13 23:15:35 +02:00
|
|
|
packagesList =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/maverick/main/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "1qjs4042y03bxbxwjs3pgrs99ba6vqvjaaz6zhaxxaqj1r12dwa0";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/maverick/universe/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "1g5pnhx730wj32221ic8p2q6zcka23knpyg190mvq9x7kflcbfzy";
|
|
|
|
})
|
|
|
|
];
|
2011-02-14 17:52:32 +01:00
|
|
|
urlPrefix = mirror://ubuntu;
|
|
|
|
packages = commonDebPackages ++ [ "diffutils" ];
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2011-02-14 17:52:32 +01:00
|
|
|
ubuntu1010x86_64 = {
|
2012-09-13 23:06:52 +02:00
|
|
|
name = "ubuntu-10.10-maverick-amd64";
|
|
|
|
fullName = "Ubuntu 10.10 Maverick (amd64)";
|
2012-09-13 23:15:35 +02:00
|
|
|
packagesList =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/maverick/main/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "1p0i4gp1bxd3zvckgnh1hx4vfc23rfgzd19dk5rmi61lzbzzqbgc";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/maverick/universe/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "0m26viwah29gh47p8m3jpnx6l84dhpwnms29m9bvqn1vwcrgjh0s";
|
|
|
|
})
|
|
|
|
];
|
2011-02-14 17:52:32 +01:00
|
|
|
urlPrefix = mirror://ubuntu;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebPackages ++ [ "diffutils" ];
|
|
|
|
};
|
2010-06-14 19:05:26 +02:00
|
|
|
|
2012-02-07 13:38:32 +01:00
|
|
|
ubuntu1110i386 = {
|
|
|
|
name = "ubuntu-11.10-oneiric-i386";
|
|
|
|
fullName = "Ubuntu 11.10 Oneiric (i386)";
|
2012-09-13 23:15:35 +02:00
|
|
|
packagesList =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/oneiric/main/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "11r1s76ppi7rwz08i20d7n4ndaj9lb9wsl9k8ww4s1c6agzpwv8a";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/oneiric/universe/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "1dr59j8pjdhk07fpc0x73afcd9630kkdsbabx3bj92q71104yigz";
|
|
|
|
})
|
|
|
|
];
|
2011-02-14 17:52:32 +01:00
|
|
|
urlPrefix = mirror://ubuntu;
|
|
|
|
packages = commonDebPackages ++ [ "diffutils" ];
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2012-02-07 13:38:32 +01:00
|
|
|
ubuntu1110x86_64 = {
|
|
|
|
name = "ubuntu-11.10-oneiric-amd64";
|
|
|
|
fullName = "Ubuntu 11.10 Oneiric (amd64)";
|
2012-09-13 23:15:35 +02:00
|
|
|
packagesLists =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/oneiric/main/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "07k784gxwaqmyggmzczy9hjkgfp6p6dcs8rhkxw5hfzn0jaf8l2s";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/oneiric/universe/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "1v3ldxn5jnnfgs863ryd6wl3fsb3glainr1ma2zn2l5vpzhpi2h1";
|
|
|
|
})
|
|
|
|
];
|
2011-02-14 17:52:32 +01:00
|
|
|
urlPrefix = mirror://ubuntu;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebPackages ++ [ "diffutils" ];
|
|
|
|
};
|
2010-06-14 19:05:26 +02:00
|
|
|
|
2012-05-11 04:04:14 +02:00
|
|
|
ubuntu1204i386 = {
|
2012-08-27 19:46:51 +02:00
|
|
|
name = "ubuntu-12.04-precise-i386";
|
2012-05-11 04:04:14 +02:00
|
|
|
fullName = "Ubuntu 12.04 Precise (i386)";
|
2012-08-27 19:46:51 +02:00
|
|
|
packagesLists =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/precise/main/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "18ns9h4qhvjfcip9z55grzi371racxavgqkp6b5kfkdq2wwwax2d";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/precise/universe/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "085lkzbnzkc74kfdmwdc32sfqyfz8dr0rbiifk8kx9jih3xjw2jk";
|
|
|
|
})
|
|
|
|
];
|
2012-05-11 04:04:14 +02:00
|
|
|
urlPrefix = mirror://ubuntu;
|
|
|
|
packages = commonDebPackages ++ [ "diffutils" ];
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2012-05-11 04:04:14 +02:00
|
|
|
ubuntu1204x86_64 = {
|
2012-08-27 19:46:51 +02:00
|
|
|
name = "ubuntu-12.04-precise-amd64";
|
2012-05-11 04:04:14 +02:00
|
|
|
fullName = "Ubuntu 12.04 Precise (amd64)";
|
2012-08-27 19:46:51 +02:00
|
|
|
packagesList =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/precise/main/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "1aabpn0hdih6cbabyn87yvhccqj44q9k03mqmjsb920iqlckl3fc";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/precise/universe/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "0x4hz5aplximgb7gnpvrhkw8m7a40s80rkm5b8hil0afblwlg4vr";
|
|
|
|
})
|
|
|
|
];
|
2012-05-11 04:04:14 +02:00
|
|
|
urlPrefix = mirror://ubuntu;
|
|
|
|
packages = commonDebPackages ++ [ "diffutils" ];
|
|
|
|
};
|
|
|
|
|
2012-12-04 20:06:07 +01:00
|
|
|
ubuntu1210i386 = {
|
|
|
|
name = "ubuntu-12.10-quantal-i386";
|
|
|
|
fullName = "Ubuntu 12.10 Quantal (i386)";
|
|
|
|
packagesLists =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/quantal/main/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "bee3200ac8f037700ccd2311fb8b0de665bd02d46bdb2ae946cf50c5885001c3";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/quantal/universe/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "323036e81c8bf409f71d3bc5cf37cfba72fe1d0fc82e9b5418d4d0cb516646e1";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
urlPrefix = mirror://ubuntu;
|
|
|
|
packages = commonDebPackages ++ [ "diffutils" ];
|
|
|
|
};
|
|
|
|
|
|
|
|
ubuntu1210x86_64 = {
|
|
|
|
name = "ubuntu-12.10-quantal-amd64";
|
|
|
|
fullName = "Ubuntu 12.10 Quantal (amd64)";
|
|
|
|
packagesList =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/quantal/main/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "ef14073f335ef118ebe1c7d45f5a0c17ef28f72abb57c10b9082ab5e04b5d003";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/quantal/universe/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "c762bd4ed063326577a62ff783cf9720e772b03d4a2aa38048918ee6287b96ce";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
urlPrefix = mirror://ubuntu;
|
|
|
|
packages = commonDebPackages ++ [ "diffutils" ];
|
|
|
|
};
|
|
|
|
|
2013-05-03 14:01:32 +02:00
|
|
|
ubuntu1304i386 = {
|
|
|
|
name = "ubuntu-13.04-raring-i386";
|
|
|
|
fullName = "Ubuntu 13.04 Raring (i386)";
|
|
|
|
packagesLists =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/raring/main/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "b7da6802c5302439d9abf05ebe1ab4c3b82d7be9356f51a12c5bf4994f009181";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/raring/universe/binary-i386/Packages.bz2;
|
|
|
|
sha256 = "1db19982fc3689b00a918e2cdbb936dfccebbac2ed82f81bb0164a3d51039012";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
urlPrefix = mirror://ubuntu;
|
|
|
|
packages = commonDebPackages ++ [ "diffutils" "libc-bin" ];
|
|
|
|
};
|
|
|
|
|
|
|
|
ubuntu1304x86_64 = {
|
|
|
|
name = "ubuntu-13.04-raring-amd64";
|
|
|
|
fullName = "Ubuntu 13.04 Raring (amd64)";
|
|
|
|
packagesList =
|
|
|
|
[ (fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/raring/main/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "9ee6a67bedbda80b668a868bb81b5b3f30bbabac01f69d2a08961c37c8536356";
|
|
|
|
})
|
|
|
|
(fetchurl {
|
|
|
|
url = mirror://ubuntu/dists/raring/universe/binary-amd64/Packages.bz2;
|
|
|
|
sha256 = "0caf561bad359e8a82a987a076c0f1cb7a43412a5de053c105b160477c192978";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
urlPrefix = mirror://ubuntu;
|
|
|
|
packages = commonDebPackages ++ [ "diffutils" "libc-bin" ];
|
|
|
|
};
|
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
debian40i386 = {
|
2010-06-01 12:44:36 +02:00
|
|
|
name = "debian-4.0r9-etch-i386";
|
|
|
|
fullName = "Debian 4.0r9 Etch (i386)";
|
2008-04-09 14:02:15 +02:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://debian/dists/etch/main/binary-i386/Packages.bz2;
|
2010-06-01 12:44:36 +02:00
|
|
|
sha256 = "40eeeecc35e6895b6eb0bc601e38fe53fc985d1b1f3fea3766f34763d21f206f";
|
2008-04-09 14:02:15 +02:00
|
|
|
};
|
2008-05-28 17:21:06 +02:00
|
|
|
urlPrefix = mirror://debian;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
debian40x86_64 = {
|
2010-06-01 12:44:36 +02:00
|
|
|
name = "debian-4.0r9-etch-amd64";
|
|
|
|
fullName = "Debian 4.0r9 Etch (amd64)";
|
2008-09-12 15:17:52 +02:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://debian/dists/etch/main/binary-amd64/Packages.bz2;
|
2010-06-01 12:44:36 +02:00
|
|
|
sha256 = "cf1c4c7d72e0da45797b046011254d2bd83f5ecb7389c7f30d2561be3f5b2e49";
|
2008-09-12 15:17:52 +02:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://debian;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2008-09-12 15:17:52 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
debian50i386 = {
|
2012-03-12 09:13:10 +01:00
|
|
|
name = "debian-5.0.10-lenny-i386";
|
|
|
|
fullName = "Debian 5.0.10 Lenny (i386)";
|
2009-02-24 11:56:42 +01:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://debian/dists/lenny/main/binary-i386/Packages.bz2;
|
2012-03-12 09:13:10 +01:00
|
|
|
sha256 = "fb390cf043a5b6bac50879ce1c0827882abdb560050313a6a326a03a4fc761d6";
|
2009-02-24 11:56:42 +01:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://debian;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2011-10-06 15:27:58 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
debian50x86_64 = {
|
2012-03-12 09:13:10 +01:00
|
|
|
name = "debian-5.0.10-lenny-amd64";
|
|
|
|
fullName = "Debian 5.0.10 Lenny (amd64)";
|
2009-02-24 11:56:42 +01:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://debian/dists/lenny/main/binary-amd64/Packages.bz2;
|
2012-03-12 09:13:10 +01:00
|
|
|
sha256 = "1y4bb3n770fgwsrw8qiwsgf17k0ws2d6jmcfvqv07lj77dyj53wc";
|
2011-02-14 17:52:32 +01:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://debian;
|
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
|
|
|
|
|
|
|
debian60i386 = {
|
2013-03-15 12:48:35 +01:00
|
|
|
name = "debian-6.0.7-squeeze-i386";
|
|
|
|
fullName = "Debian 6.0.7 Squeeze (i386)";
|
2011-02-14 17:52:32 +01:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://debian/dists/squeeze/main/binary-i386/Packages.bz2;
|
2013-03-15 12:48:35 +01:00
|
|
|
sha256 = "a770f26b5fce1a16460b68f135dfe97f4f4a9894b538ece0104a508c83ec65d5";
|
2011-02-14 17:52:32 +01:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://debian;
|
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2011-02-14 17:52:32 +01:00
|
|
|
debian60x86_64 = {
|
2013-03-15 12:48:35 +01:00
|
|
|
name = "debian-6.0.7-squeeze-amd64";
|
|
|
|
fullName = "Debian 6.0.7 Squeeze (amd64)";
|
2011-02-14 17:52:32 +01:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://debian/dists/squeeze/main/binary-amd64/Packages.bz2;
|
2013-03-15 12:48:35 +01:00
|
|
|
sha256 = "b2bb561bde59ac67e07c70aa7c86a33f237436e6891796a93c6ed6ffb032080e";
|
2009-02-24 11:56:42 +01:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://debian;
|
2010-06-14 20:42:18 +02:00
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
2009-02-24 11:56:42 +01:00
|
|
|
|
2013-05-07 11:15:44 +02:00
|
|
|
debian70i386 = {
|
2013-07-29 17:57:06 +02:00
|
|
|
name = "debian-7.1.0-wheezy-i386";
|
|
|
|
fullName = "Debian 7.1.0 Wheezy (i386)";
|
2013-05-07 11:15:44 +02:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://debian/dists/wheezy/main/binary-i386/Packages.bz2;
|
2013-07-29 17:57:06 +02:00
|
|
|
sha256 = "c2751c48805b41c3eddd31cfe92ffa46df13a7d6ce7896b8dc5ce4b2f7f329c5";
|
2013-05-07 11:15:44 +02:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://debian;
|
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
|
|
|
|
|
|
|
debian70x86_64 = {
|
2013-07-29 17:57:06 +02:00
|
|
|
name = "debian-7.1.0-wheezy-amd64";
|
|
|
|
fullName = "Debian 7.1.0 Wheezy (amd64)";
|
2013-05-07 11:15:44 +02:00
|
|
|
packagesList = fetchurl {
|
|
|
|
url = mirror://debian/dists/wheezy/main/binary-amd64/Packages.bz2;
|
2013-07-29 17:57:06 +02:00
|
|
|
sha256 = "9b15b4348cadbcf170c9e83d6fbcb64efac2b787ebdfef16ba21dd70dfca0001";
|
2013-05-07 11:15:44 +02:00
|
|
|
};
|
|
|
|
urlPrefix = mirror://debian;
|
|
|
|
packages = commonDebianPackages;
|
|
|
|
};
|
|
|
|
|
2008-04-09 14:02:15 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* Common packages for Fedora images. */
|
|
|
|
commonFedoraPackages = [
|
|
|
|
"autoconf"
|
|
|
|
"automake"
|
|
|
|
"basesystem"
|
|
|
|
"bzip2"
|
|
|
|
"curl"
|
|
|
|
"diffutils"
|
|
|
|
"fedora-release"
|
|
|
|
"findutils"
|
|
|
|
"gawk"
|
|
|
|
"gcc-c++"
|
|
|
|
"gzip"
|
|
|
|
"make"
|
|
|
|
"patch"
|
|
|
|
"perl"
|
|
|
|
"pkgconfig"
|
|
|
|
"rpm"
|
|
|
|
"rpm-build"
|
|
|
|
"tar"
|
|
|
|
"unzip"
|
|
|
|
];
|
|
|
|
|
2013-07-05 17:52:42 +02:00
|
|
|
commonCentOSPackages = [
|
|
|
|
"autoconf"
|
|
|
|
"automake"
|
|
|
|
"basesystem"
|
|
|
|
"bzip2"
|
|
|
|
"curl"
|
|
|
|
"diffutils"
|
|
|
|
"centos-release"
|
|
|
|
"findutils"
|
|
|
|
"gawk"
|
|
|
|
"gcc-c++"
|
|
|
|
"gzip"
|
|
|
|
"make"
|
|
|
|
"patch"
|
|
|
|
"perl"
|
|
|
|
"pkgconfig"
|
|
|
|
"procps"
|
|
|
|
"rpm"
|
|
|
|
"rpm-build"
|
|
|
|
"tar"
|
|
|
|
"unzip"
|
|
|
|
];
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-04-11 13:52:40 +02:00
|
|
|
/* Common packages for openSUSE images. */
|
|
|
|
commonOpenSUSEPackages = [
|
|
|
|
"aaa_base"
|
|
|
|
"autoconf"
|
|
|
|
"automake"
|
|
|
|
"bzip2"
|
|
|
|
"curl"
|
|
|
|
"diffutils"
|
|
|
|
"findutils"
|
|
|
|
"gawk"
|
|
|
|
"gcc-c++"
|
|
|
|
"gzip"
|
|
|
|
"make"
|
|
|
|
"patch"
|
|
|
|
"perl"
|
|
|
|
"pkg-config"
|
|
|
|
"rpm"
|
|
|
|
"tar"
|
|
|
|
"unzip"
|
2008-04-13 23:04:21 +02:00
|
|
|
"util-linux"
|
2009-07-02 14:53:25 +02:00
|
|
|
"gnu-getopt"
|
2008-04-11 13:52:40 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
|
2008-04-09 14:02:15 +02:00
|
|
|
/* Common packages for Debian/Ubuntu images. */
|
2010-06-14 20:42:18 +02:00
|
|
|
commonDebPackages = [
|
2008-04-09 14:02:15 +02:00
|
|
|
"base-passwd"
|
|
|
|
"dpkg"
|
|
|
|
"libc6-dev"
|
|
|
|
"perl"
|
|
|
|
"bash"
|
2009-10-02 11:34:37 +02:00
|
|
|
"dash"
|
2008-04-09 14:02:15 +02:00
|
|
|
"gzip"
|
|
|
|
"bzip2"
|
|
|
|
"tar"
|
|
|
|
"grep"
|
2013-05-07 11:15:44 +02:00
|
|
|
"sed"
|
2008-04-09 14:02:15 +02:00
|
|
|
"findutils"
|
|
|
|
"g++"
|
|
|
|
"make"
|
|
|
|
"curl"
|
|
|
|
"patch"
|
2008-11-12 18:15:09 +01:00
|
|
|
"locales"
|
2008-11-25 03:20:41 +01:00
|
|
|
# Needed by checkinstall:
|
2012-08-27 19:39:13 +02:00
|
|
|
"util-linux"
|
2008-11-25 03:20:41 +01:00
|
|
|
"file"
|
|
|
|
"dpkg-dev"
|
2009-07-02 14:53:25 +02:00
|
|
|
"pkg-config"
|
2009-02-24 11:56:42 +01:00
|
|
|
# Needed because it provides /etc/login.defs, whose absence causes
|
|
|
|
# the "passwd" post-installs script to fail.
|
|
|
|
"login"
|
2008-04-09 14:02:15 +02:00
|
|
|
];
|
|
|
|
|
2011-02-14 17:52:32 +01:00
|
|
|
commonDebianPackages = commonDebPackages ++ [ "sysvinit" "diff" "mktemp" ];
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-04-09 14:02:15 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
/* A set of functions that build the Linux distributions specified
|
|
|
|
in `rpmDistros' and `debDistros'. For instance,
|
|
|
|
`diskImageFuns.ubuntu1004x86_64 { }' builds an Ubuntu 10.04 disk
|
|
|
|
image containing the default packages specified above. Overrides
|
|
|
|
of the default image parameters can be given. In particular,
|
|
|
|
`extraPackages' specifies the names of additional packages from
|
|
|
|
the distribution that should be included in the image; `packages'
|
|
|
|
allows the entire set of packages to be overriden; and `size'
|
|
|
|
sets the size of the disk in megabytes. E.g.,
|
|
|
|
`diskImageFuns.ubuntu1004x86_64 { extraPackages = ["firefox"];
|
|
|
|
size = 8192; }' builds an 8 GiB image containing Firefox in
|
|
|
|
addition to the default packages. */
|
2012-08-27 19:39:13 +02:00
|
|
|
diskImageFuns =
|
2010-06-14 20:42:18 +02:00
|
|
|
(lib.mapAttrs (name: as: as2: makeImageFromRPMDist (as // as2)) rpmDistros) //
|
|
|
|
(lib.mapAttrs (name: as: as2: makeImageFromDebDist (as // as2)) debDistros);
|
2009-11-05 15:49:17 +01:00
|
|
|
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
/* Shorthand for `diskImageFuns.<attr> { extraPackages = ... }'. */
|
|
|
|
diskImageExtraFuns =
|
|
|
|
lib.mapAttrs (name: f: extraPackages: f { inherit extraPackages; }) diskImageFuns;
|
2009-11-05 15:49:17 +01:00
|
|
|
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
/* Default disk images generated from the `rpmDistros' and
|
|
|
|
`debDistros' sets (along with Red Hat 9 and SuSE 9.0 images). */
|
2008-03-18 13:54:21 +01:00
|
|
|
|
2010-06-14 19:34:02 +02:00
|
|
|
diskImages =
|
2010-06-14 20:42:18 +02:00
|
|
|
lib.mapAttrs (name: f: f {}) diskImageFuns //
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 19:34:02 +02:00
|
|
|
{ redhat9i386 = fillDiskWithRPMs {
|
|
|
|
name = "redhat-9-i386";
|
|
|
|
fullName = "Red Hat Linux 9 (i386)";
|
|
|
|
size = 1024;
|
2013-05-08 13:59:28 +02:00
|
|
|
rpms = import ./rpm/redhat-9-i386.nix { inherit fetchurl; };
|
2010-06-14 20:42:18 +02:00
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 19:34:02 +02:00
|
|
|
suse90i386 = fillDiskWithRPMs {
|
|
|
|
name = "suse-9.0-i386";
|
|
|
|
fullName = "SUSE Linux 9.0 (i386)";
|
|
|
|
size = 1024;
|
2013-05-08 13:59:28 +02:00
|
|
|
rpms = import ./rpm/suse-9-i386.nix { inherit fetchurl; };
|
2010-06-14 19:34:02 +02:00
|
|
|
# Urgh. The /etc/group entries are installed by aaa_base (or
|
|
|
|
# something) but due to dependency ordering, that package isn't
|
|
|
|
# installed yet by the time some other packages refer to these
|
|
|
|
# entries.
|
|
|
|
preInstall = ''
|
|
|
|
echo 'bin:x:1:daemon' >> /mnt/etc/group
|
|
|
|
echo 'tty:x:5:' >> /mnt/etc/group
|
|
|
|
echo 'disk:x:6:' >> /mnt/etc/group
|
|
|
|
echo 'lp:x:7:' >> /mnt/etc/group
|
|
|
|
echo 'uucp:x:14:' >> /mnt/etc/group
|
|
|
|
echo 'audio:x:17:' >> /mnt/etc/group
|
|
|
|
echo 'video:x:33:' >> /mnt/etc/group
|
|
|
|
'';
|
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2010-06-14 20:42:18 +02:00
|
|
|
};
|
2012-08-27 19:39:13 +02:00
|
|
|
|
2008-03-14 14:51:01 +01:00
|
|
|
}
|