From f81bebe2d7471031688a2e65701648df2ea191cf Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Thu, 20 Dec 2007 11:36:30 +0000 Subject: [PATCH] Added possibility of building multiple configurations by one nixos-rebuild. svn path=/nixos/trunk/; revision=9959 --- installer/grub-menu-builder.sh | 8 ++++++-- system/options.nix | 10 +++++++++- system/system.nix | 3 +++ system/system.sh | 7 +++++++ 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/installer/grub-menu-builder.sh b/installer/grub-menu-builder.sh index 6fe5c8dd149b..9c76fbb6f6fc 100644 --- a/installer/grub-menu-builder.sh +++ b/installer/grub-menu-builder.sh @@ -88,9 +88,13 @@ EOF # Add all generations of the system profile to the menu, in reverse # (most recent to least recent) order. +for link in $( + (ls -d $default/fine-tune/* ) \ + | sort -n); do + date=$(stat --printf="%y\n" $link | sed 's/\..*//') + addEntry "NixOS - variation" $link "" +done for generation in $( - (cd $default/fine-tune && ls -d *) \ - | sort -n) $( (cd /nix/var/nix/profiles && ls -d system-*-link) \ | sed 's/system-\([0-9]\+\)-link/\1/' \ | sort -n -r); do diff --git a/system/options.nix b/system/options.nix index fc0484bd2399..5ade1e818057 100644 --- a/system/options.nix +++ b/system/options.nix @@ -1736,6 +1736,14 @@ root ALL=(ALL) SETENV: ALL }; }; - + + nesting = { + children = mkOption { + default = []; + description = " + Additional configurations to build. + "; + }; + }; } diff --git a/system/system.nix b/system/system.nix index 6388906f705a..b1657f741387 100644 --- a/system/system.nix +++ b/system/system.nix @@ -356,6 +356,9 @@ rec { pkgs.diffutils pkgs.upstart # for initctl ]; + children = map (x: ((import ./system.nix) + {inherit platform stage2Init; configuration = x;}).system) + config.nesting.children; configurationName = config.boot.configurationName; }) (pkgs.getConfig ["checkConfigurationOptions"] false) optionDeclarations configuration ; diff --git a/system/system.sh b/system/system.sh index 080ad1c13c79..95f650f39aaa 100644 --- a/system/system.sh +++ b/system/system.sh @@ -14,6 +14,13 @@ ln -s $upstart $out/upstart echo "$kernelParams" > $out/kernel-params echo "$configurationName" > $out/configuration-name +mkdir $out/fine-tune +ChildCount=0; +for i in $children; do + ChildCount=$(( ChildCount + 1 )); + ln -s $i $out/fine-tune/child-$ChildCount; +done + cat > $out/menu.lst << GRUBEND kernel $kernel init=$bootStage2 $kernelParams initrd $initrd