diff options
Diffstat (limited to 'pkgs/build-support/vm/default.nix')
-rw-r--r-- | pkgs/build-support/vm/default.nix | 287 |
1 files changed, 171 insertions, 116 deletions
diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index 6af4a5c05748..e8de915e7889 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -34,7 +34,7 @@ rec { '' mkdir -p $out/bin mkdir -p $out/lib - + # Copy what we need from Glibc. cp -p ${pkgs.stdenv.glibc}/lib/ld-linux*.so.? $out/lib cp -p ${pkgs.stdenv.glibc}/lib/libc.so.* $out/lib @@ -60,7 +60,7 @@ rec { cp ${module_init_tools}/sbin/insmod $out/bin/insmod cp ${nettools}/sbin/ifconfig $out/bin cp ${sysvinit}/sbin/halt $out/bin - + # 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 @@ -70,17 +70,19 @@ rec { done ''; # */ - + createDeviceNodes = dev: '' - mknod ${dev}/null c 1 3 - mknod ${dev}/zero c 1 5 - mknod ${dev}/tty c 5 0 + 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 . /sys/class/block/${hd}/uevent mknod ${dev}/${hd} b $MAJOR $MINOR ''; - + stage1Init = writeScript "vm-run-stage1" '' #! ${initrdUtils}/bin/bash -e echo START @@ -122,7 +124,7 @@ rec { mount -t tmpfs none /dev ${createDeviceNodes "/dev"} - + ifconfig eth0 up 10.0.2.15 mkdir /fs @@ -155,7 +157,7 @@ rec { mkdir -p /fs/etc ln -sf /proc/mounts /fs/etc/mtab - + echo "Now running: $command" test -n "$command" @@ -169,7 +171,7 @@ rec { halt -d -p -f ''; - + initrd = makeInitrd { contents = [ { object = stage1Init; @@ -178,11 +180,11 @@ rec { ]; }; - + stage2Init = writeScript "vm-run-stage2" '' #! ${bash}/bin/sh source /tmp/xchg/saved-env - + export NIX_STORE=/nix/store export NIX_BUILD_TOP=/tmp export TMPDIR=/tmp @@ -250,6 +252,7 @@ rec { path = $TMPDIR/xchg read only = no guest ok = yes + $EXTRA_SAMBA_CONF SMB rm -f ./samba @@ -285,12 +288,12 @@ rec { chmod +x ./run-vm source ./run-vm - + if ! test -e xchg/in-vm-exit; then echo "Virtual machine didn't produce an exit code." exit 1 fi - + eval "$postVM" exit $(cat xchg/in-vm-exit) @@ -342,7 +345,7 @@ rec { 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. */ - + runInLinuxVM = drv: lib.overrideDerivation drv (attrs: { requiredSystemFeatures = [ "kvm" ]; builder = "${bash}/bin/sh"; @@ -352,7 +355,7 @@ rec { QEMU_OPTS = "-m ${toString (if attrs ? memSize then attrs.memSize else 256)}"; }); - + extractFs = {file, fs ? null} : with pkgs; runInLinuxVM ( stdenv.mkDerivation { @@ -378,7 +381,7 @@ rec { ''; }); - + extractMTDfs = {file, fs ? null} : with pkgs; runInLinuxVM ( stdenv.mkDerivation { @@ -405,7 +408,7 @@ rec { ''; }); - + qemuCommandGeneric = '' PATH="${samba}/sbin:$PATH" \ ${kvm}/bin/qemu-kvm \ @@ -414,7 +417,7 @@ rec { $QEMU_OPTS ''; - + /* Run a command in an x86 virtual machine image containing an arbitrary OS. The VM should be configured to do the following: @@ -459,7 +462,7 @@ rec { 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. */ - + runInLinuxImage = attrs: runInLinuxVM (attrs // { mountDisk = true; @@ -490,12 +493,12 @@ rec { /* Create a filesystem image of the specified size and fill it with a set of RPM packages. */ - + fillDiskWithRPMs = { size ? 4096, rpms, name, fullName, preInstall ? "", postInstall ? "" , runScripts ? true, createRootFS ? defaultCreateRootFS }: - + runInLinuxVM (stdenv.mkDerivation { inherit name preInstall postInstall rpms; memSize = 512; @@ -505,7 +508,7 @@ rec { ${createRootFS} chroot=$(type -tP chroot) - + echo "unpacking RPMs..." for i in $rpms; do echo "$i..." @@ -524,19 +527,19 @@ rec { mkdir -p /mnt/nix/store ${utillinux}/bin/mount -o bind /nix/store /mnt/nix/store ${utillinux}/bin/mount -o bind /tmp /mnt/tmp - + echo "installing RPMs..." PATH=/usr/bin:/bin:/usr/sbin:/sbin $chroot /mnt \ rpm -iv ${if runScripts then "" else "--noscripts"} $rpms echo "running post-install script..." eval "$postInstall" - + rm /mnt/.debug - ${utillinux}/bin/umount /mnt/nix/store - ${utillinux}/bin/umount /mnt/tmp - ${utillinux}/bin/umount /mnt + ${utillinux}/bin/umount /mnt/nix/store + ${utillinux}/bin/umount /mnt/tmp + ${utillinux}/bin/umount /mnt ''; passthru = { inherit fullName; }; @@ -545,7 +548,7 @@ rec { /* Generate a script that can be used to run an interactive session in the given image. */ - + makeImageTestScript = image: writeScript "image-test" '' #! ${bash}/bin/sh if test -z "$1"; then @@ -570,7 +573,7 @@ rec { /* Build RPM packages from the tarball `src' in the Linux distribution installed in the filesystem `diskImage'. The tarball must contain an RPM specfile. */ - + buildRPM = attrs: runInLinuxImage (stdenv.mkDerivation ({ phases = "prepareImagePhase sysInfoPhase buildPhase installPhase"; @@ -583,7 +586,7 @@ rec { done fi ''; - + sysInfoPhase = '' echo "System/kernel: $(uname -a)" if test -e /etc/fedora-release; then echo "Fedora release: $(cat /etc/fedora-release)"; fi @@ -592,7 +595,7 @@ rec { rpm -qa --qf "%{Name}-%{Version}-%{Release} (%{Arch}; %{Distribution}; %{Vendor})\n" stopNest ''; - + buildPhase = '' eval "$preBuild" @@ -609,7 +612,7 @@ rec { mkdir $rpmout $rpmout/SPECS $rpmout/BUILD $rpmout/RPMS $rpmout/SRPMS echo "%_topdir $rpmout" >> $HOME/.rpmmacros - + rpmbuild -vv -ta "$srcName" eval "$postBuild" @@ -639,7 +642,7 @@ rec { fillDiskWithDebs = { size ? 4096, debs, name, fullName, postInstall ? null, createRootFS ? defaultCreateRootFS }: - + runInLinuxVM (stdenv.mkDerivation { inherit name postInstall; @@ -655,7 +658,7 @@ rec { # Unpack the .debs. We do this to prevent pre-install scripts # (which have lots of circular dependencies) from barfing. echo "unpacking Debs..." - + for deb in $debs; do if test "$deb" != "|"; then echo "$deb..." @@ -668,7 +671,7 @@ rec { ${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 - + # Misc. files/directories assumed by various packages. echo "initialising Dpkg DB..." touch /mnt/etc/shells @@ -682,7 +685,7 @@ rec { echo "installing Debs..." export DEBIAN_FRONTEND=noninteractive - + oldIFS="$IFS" IFS="|" for component in $debs; do @@ -697,13 +700,13 @@ rec { PATH=/usr/bin:/bin:/usr/sbin:/sbin $chroot /mnt \ /usr/bin/dpkg --install --force-all $debs < /dev/null || true done - + echo "running post-install script..." eval "$postInstall" ln -sf dash /mnt/bin/sh rm /mnt/.debug - + ${utillinux}/bin/umount /mnt/inst/nix/store ${utillinux}/bin/umount /mnt/proc ${utillinux}/bin/umount /mnt/dev @@ -717,10 +720,10 @@ rec { /* Generate a Nix expression containing fetchurl calls for the closure of a set of top-level RPM packages from the `primary.xml.gz' file of a Fedora or openSUSE distribution. */ - + rpmClosureGenerator = {name, packagesLists, urlPrefixes, packages, archs ? []}: - assert (builtins.length packagesLists) == (builtins.length urlPrefixes) ; + assert (builtins.length packagesLists) == (builtins.length urlPrefixes); runCommand "${name}.nix" {buildInputs = [perl perlPackages.XMLSimple]; inherit archs;} '' ${lib.concatImapStrings (i: pl: '' gunzip < ${pl} > ./packages_${toString i}.xml @@ -734,7 +737,7 @@ rec { /* Helper function that combines rpmClosureGenerator and fillDiskWithRPMs to generate a disk image from a set of package names. */ - + makeImageFromRPMDist = { name, fullName, size ? 4096 , urlPrefix ? "", urlPrefixes ? [urlPrefix] @@ -756,10 +759,13 @@ rec { (i.e. generate a closure from a Packages.bz2 file). */ debClosureGenerator = - {name, packagesList, urlPrefix, packages}: - + {name, packagesLists, urlPrefix, packages}: + runCommand "${name}.nix" {} '' - bunzip2 < ${packagesList} > ./Packages + for i in ${toString packagesLists}; do + echo "adding $i..." + bunzip2 < $i >> ./Packages + done # Work around this bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=452279 sed -i ./Packages -e s/x86_64-linux-gnu/x86-64-linux-gnu/g @@ -767,19 +773,20 @@ rec { ${perl}/bin/perl -I${dpkg} -w ${deb/deb-closure.pl} \ ./Packages ${urlPrefix} ${toString packages} > $out ''; - + /* Helper function that combines debClosureGenerator and fillDiskWithDebs to generate a disk image from a set of package names. */ - + makeImageFromDebDist = - { name, fullName, size ? 4096, urlPrefix, packagesList + { name, fullName, size ? 4096, urlPrefix + , packagesList ? "", packagesLists ? [packagesList] , packages, extraPackages ? [], postInstall ? "" }: let expr = debClosureGenerator { - inherit name packagesList urlPrefix; + inherit name packagesLists urlPrefix; packages = packages ++ extraPackages; }; in @@ -790,7 +797,7 @@ rec { /* The set of supported RPM-based distributions. */ - + rpmDistros = { fedora2i386 = { @@ -817,7 +824,7 @@ rec { runScripts = false; packages = commonFedoraPackages; }; - + fedora5i386 = { name = "fedora-core-5-i386"; fullName = "Fedora Core 5 (i386)"; @@ -828,7 +835,7 @@ rec { urlPrefix = mirror://fedora/linux/core/5/i386/os; packages = commonFedoraPackages ++ [ "util-linux" ]; }; - + fedora7i386 = { name = "fedora-7-i386"; fullName = "Fedora 7 (i386)"; @@ -839,7 +846,7 @@ rec { urlPrefix = mirror://fedora/linux/releases/7/Everything/i386/os; packages = commonFedoraPackages; }; - + fedora8i386 = { name = "fedora-8-i386"; fullName = "Fedora 8 (i386)"; @@ -1057,9 +1064,9 @@ rec { /* The set of supported Dpkg-based distributions. */ - + debDistros = { - + # Interestingly, the SHA-256 hashes provided by Ubuntu in # http://nl.archive.ubuntu.com/ubuntu/dists/{gutsy,hardy}/Release are # wrong, but the SHA-1 and MD5 hashes are correct. Intrepid is fine. @@ -1074,7 +1081,7 @@ rec { urlPrefix = mirror://ubuntu; packages = commonDebianPackages; }; - + ubuntu804i386 = { name = "ubuntu-8.04-hardy-i386"; fullName = "Ubuntu 8.04 Hardy (i386)"; @@ -1085,7 +1092,7 @@ rec { urlPrefix = mirror://ubuntu; packages = commonDebianPackages; }; - + ubuntu804x86_64 = { name = "ubuntu-8.04-hardy-amd64"; fullName = "Ubuntu 8.04 Hardy (amd64)"; @@ -1096,7 +1103,7 @@ rec { urlPrefix = mirror://ubuntu; packages = commonDebianPackages; }; - + ubuntu810i386 = { name = "ubuntu-8.10-intrepid-i386"; fullName = "Ubuntu 8.10 Intrepid (i386)"; @@ -1107,7 +1114,7 @@ rec { urlPrefix = mirror://ubuntu; packages = commonDebianPackages; }; - + ubuntu810x86_64 = { name = "ubuntu-8.10-intrepid-amd64"; fullName = "Ubuntu 8.10 Intrepid (amd64)"; @@ -1129,7 +1136,7 @@ rec { urlPrefix = mirror://ubuntu; packages = commonDebianPackages; }; - + ubuntu904x86_64 = { name = "ubuntu-9.04-jaunty-amd64"; fullName = "Ubuntu 9.04 Jaunty (amd64)"; @@ -1151,11 +1158,11 @@ rec { urlPrefix = mirror://ubuntu; packages = commonDebPackages ++ [ "diff" "mktemp" ]; }; - + ubuntu910x86_64 = { name = "ubuntu-9.10-karmic-amd64"; fullName = "Ubuntu 9.10 Karmic (amd64)"; - packagesList = fetchurl { + packagesList = fetchurl { url = mirror://ubuntu/dists/karmic/main/binary-amd64/Packages.bz2; sha256 = "3a604fcb0c135eeb8b95da3e90a8fd4cfeff519b858cd3c9e62ea808cb9fec40"; }; @@ -1166,43 +1173,67 @@ rec { ubuntu1004i386 = { name = "ubuntu-10.04-lucid-i386"; fullName = "Ubuntu 10.04 Lucid (i386)"; - packagesList = fetchurl { - url = mirror://ubuntu/dists/lucid/main/binary-i386/Packages.bz2; - sha256 = "0e46596202a68caa754dfe0883f46047525309880c492cdd5e2d0970fcf626aa"; - }; + 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"; + }) + ]; urlPrefix = mirror://ubuntu; packages = commonDebPackages ++ [ "diffutils" "mktemp" ]; }; - + ubuntu1004x86_64 = { name = "ubuntu-10.04-lucid-amd64"; fullName = "Ubuntu 10.04 Lucid (amd64)"; - packagesList = fetchurl { - url = mirror://ubuntu/dists/lucid/main/binary-amd64/Packages.bz2; - sha256 = "74a8f3192b0eda397d65316e0fa6cd34d5358dced41639e07d9f1047971bfef0"; - }; + 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"; + }) + ]; urlPrefix = mirror://ubuntu; packages = commonDebPackages ++ [ "diffutils" "mktemp" ]; }; ubuntu1010i386 = { - name = "ubuntu-10.04-maverick-i386"; - fullName = "Ubuntu 10.04 Maverick (i386)"; - packagesList = fetchurl { - url = mirror://ubuntu/dists/maverick/main/binary-i386/Packages.bz2; - sha256 = "1qjs4042y03bxbxwjs3pgrs99ba6vqvjaaz6zhaxxaqj1r12dwa0"; - }; + name = "ubuntu-10.10-maverick-i386"; + fullName = "Ubuntu 10.10 Maverick (i386)"; + 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"; + }) + ]; urlPrefix = mirror://ubuntu; packages = commonDebPackages ++ [ "diffutils" ]; }; - + ubuntu1010x86_64 = { - name = "ubuntu-10.04-maverick-amd64"; - fullName = "Ubuntu 10.04 Maverick (amd64)"; - packagesList = fetchurl { - url = mirror://ubuntu/dists/maverick/main/binary-amd64/Packages.bz2; - sha256 = "1p0i4gp1bxd3zvckgnh1hx4vfc23rfgzd19dk5rmi61lzbzzqbgc"; - }; + name = "ubuntu-10.10-maverick-amd64"; + fullName = "Ubuntu 10.10 Maverick (amd64)"; + 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"; + }) + ]; urlPrefix = mirror://ubuntu; packages = commonDebPackages ++ [ "diffutils" ]; }; @@ -1210,43 +1241,67 @@ rec { ubuntu1110i386 = { name = "ubuntu-11.10-oneiric-i386"; fullName = "Ubuntu 11.10 Oneiric (i386)"; - packagesList = fetchurl { - url = mirror://ubuntu/dists/oneiric/main/binary-i386/Packages.bz2; - sha256 = "11r1s76ppi7rwz08i20d7n4ndaj9lb9wsl9k8ww4s1c6agzpwv8a"; - }; + 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"; + }) + ]; urlPrefix = mirror://ubuntu; packages = commonDebPackages ++ [ "diffutils" ]; }; - + ubuntu1110x86_64 = { name = "ubuntu-11.10-oneiric-amd64"; fullName = "Ubuntu 11.10 Oneiric (amd64)"; - packagesList = fetchurl { - url = mirror://ubuntu/dists/oneiric/main/binary-amd64/Packages.bz2; - sha256 = "07k784gxwaqmyggmzczy9hjkgfp6p6dcs8rhkxw5hfzn0jaf8l2s"; - }; + 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"; + }) + ]; urlPrefix = mirror://ubuntu; packages = commonDebPackages ++ [ "diffutils" ]; }; ubuntu1204i386 = { - name = "ubuntu-12.04-oneiric-i386"; + name = "ubuntu-12.04-precise-i386"; fullName = "Ubuntu 12.04 Precise (i386)"; - packagesList = fetchurl { - url = mirror://ubuntu/dists/precise/main/binary-i386/Packages.bz2; - sha256 = "18ns9h4qhvjfcip9z55grzi371racxavgqkp6b5kfkdq2wwwax2d"; - }; + 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"; + }) + ]; urlPrefix = mirror://ubuntu; packages = commonDebPackages ++ [ "diffutils" ]; }; - + ubuntu1204x86_64 = { - name = "ubuntu-12.04-oneiric-amd64"; + name = "ubuntu-12.04-precise-amd64"; fullName = "Ubuntu 12.04 Precise (amd64)"; - packagesList = fetchurl { - url = mirror://ubuntu/dists/precise/main/binary-amd64/Packages.bz2; - sha256 = "1aabpn0hdih6cbabyn87yvhccqj44q9k03mqmjsb920iqlckl3fc"; - }; + 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"; + }) + ]; urlPrefix = mirror://ubuntu; packages = commonDebPackages ++ [ "diffutils" ]; }; @@ -1261,7 +1316,7 @@ rec { urlPrefix = mirror://debian; packages = commonDebianPackages; }; - + debian40x86_64 = { name = "debian-4.0r9-etch-amd64"; fullName = "Debian 4.0r9 Etch (amd64)"; @@ -1305,7 +1360,7 @@ rec { urlPrefix = mirror://debian; packages = commonDebianPackages; }; - + debian60x86_64 = { name = "debian-6.0.4-squeeze-amd64"; fullName = "Debian 6.0.4 Squeeze (amd64)"; @@ -1343,7 +1398,7 @@ rec { "unzip" ]; - + /* Common packages for openSUSE images. */ commonOpenSUSEPackages = [ "aaa_base" @@ -1387,7 +1442,7 @@ rec { "patch" "locales" # Needed by checkinstall: - "util-linux" + "util-linux" "file" "dpkg-dev" "pkg-config" @@ -1397,7 +1452,7 @@ rec { ]; commonDebianPackages = commonDebPackages ++ [ "sysvinit" "diff" "mktemp" ]; - + /* A set of functions that build the Linux distributions specified in `rpmDistros' and `debDistros'. For instance, @@ -1411,29 +1466,29 @@ rec { `diskImageFuns.ubuntu1004x86_64 { extraPackages = ["firefox"]; size = 8192; }' builds an 8 GiB image containing Firefox in addition to the default packages. */ - diskImageFuns = + diskImageFuns = (lib.mapAttrs (name: as: as2: makeImageFromRPMDist (as // as2)) rpmDistros) // (lib.mapAttrs (name: as: as2: makeImageFromDebDist (as // as2)) debDistros); - + /* Shorthand for `diskImageFuns.<attr> { extraPackages = ... }'. */ diskImageExtraFuns = lib.mapAttrs (name: f: extraPackages: f { inherit extraPackages; }) diskImageFuns; - + /* Default disk images generated from the `rpmDistros' and `debDistros' sets (along with Red Hat 9 and SuSE 9.0 images). */ diskImages = lib.mapAttrs (name: f: f {}) diskImageFuns // - + { redhat9i386 = fillDiskWithRPMs { name = "redhat-9-i386"; fullName = "Red Hat Linux 9 (i386)"; size = 1024; rpms = import ./rpm/redhat-9-i386.nix {inherit fetchurl;}; }; - + suse90i386 = fillDiskWithRPMs { name = "suse-9.0-i386"; fullName = "SUSE Linux 9.0 (i386)"; @@ -1453,7 +1508,7 @@ rec { echo 'video:x:33:' >> /mnt/etc/group ''; }; - + }; - + } |