From 4046056cdc3140871421bcff81a220f2be5a44cd Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 13 Sep 2010 18:19:15 +0000 Subject: [PATCH] * In the activation script, don't require the path to the "system" derivation on the command line. svn path=/nixos/trunk/; revision=23770 --- modules/system/activation/activation-script.nix | 14 ++++---------- modules/system/activation/top-level.nix | 11 +++++++++-- modules/system/boot/stage-2-init.sh | 2 +- modules/system/boot/stage-2.nix | 2 +- modules/system/etc/etc.nix | 2 +- modules/testing/test-instrumentation.nix | 4 ++-- 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/modules/system/activation/activation-script.nix b/modules/system/activation/activation-script.nix index 222addb58d2..1aad1f37c2d 100644 --- a/modules/system/activation/activation-script.nix +++ b/modules/system/activation/activation-script.nix @@ -51,15 +51,17 @@ in merge = mergeTypedOption "script" builtins.isAttrs (fold mergeAttrs {}); apply = set: { - script = pkgs.writeScript "nixos-activation-script" + script = '' #! ${pkgs.stdenv.shell} + systemConfig=@out@ + export PATH=/empty for i in ${toString path}; do PATH=$PATH:$i/bin:$i/sbin; done - + ${ let set' = mapAttrs (n: v: if builtins.isString v then noDepEntry v else v) set; @@ -87,14 +89,6 @@ in config = { - system.activationScripts.systemConfig = - '' - systemConfig="$1" - if test -z "$systemConfig"; then - systemConfig="/system" # for the installation CD - fi - ''; - system.activationScripts.stdio = '' # Needed by some programs. diff --git a/modules/system/activation/top-level.nix b/modules/system/activation/top-level.nix index f2bbbc5ffb0..36f8b05c9d2 100644 --- a/modules/system/activation/top-level.nix +++ b/modules/system/activation/top-level.nix @@ -102,9 +102,15 @@ let if [ -n "$grub" ]; then ln -s $grub $out/grub fi + ln -s ${config.system.build.bootStage2} $out/init ln -s ${config.system.build.initialRamdisk}/initrd $out/initrd - ln -s ${config.system.activationScripts.script} $out/activate + + echo "$activationScript" > $out/activate + substituteInPlace $out/activate --subst-var out + chmod u+x $out/activate + unset activationScript + ln -s ${config.system.build.etc}/etc $out/etc ln -s ${config.system.path} $out/sw ln -s ${config.system.build.upstart} $out/upstart @@ -116,7 +122,7 @@ let mkdir $out/fine-tune childCount=0; - for i in $children; do + for i in $children; do childCount=$(( childCount + 1 )); ln -s $i $out/fine-tune/child-$childCount; done @@ -142,6 +148,7 @@ let config.boot.kernelParams ++ config.boot.extraKernelParams; menuBuilder = config.system.build.menuBuilder; initScriptBuilder = config.system.build.initScriptBuilder; + activationScript = config.system.activationScripts.script; # Most of these are needed by grub-install. path = [ pkgs.coreutils diff --git a/modules/system/boot/stage-2-init.sh b/modules/system/boot/stage-2-init.sh index 834ad9548ed..9a1d49c981c 100644 --- a/modules/system/boot/stage-2-init.sh +++ b/modules/system/boot/stage-2-init.sh @@ -153,7 +153,7 @@ fi # Run the script that performs all configuration activation that does # not have to be done at boot time. echo "running activation script..." -@activateConfiguration@ "$systemConfig" +"$systemConfig"/activate # Record the boot configuration. diff --git a/modules/system/boot/stage-2.nix b/modules/system/boot/stage-2.nix index 279f454c5db..8934a33cd04 100644 --- a/modules/system/boot/stage-2.nix +++ b/modules/system/boot/stage-2.nix @@ -43,7 +43,7 @@ let bootStage2 = substituteAll { src = ./stage-2-init.sh; isExecutable = true; - inherit kernel activateConfiguration; + inherit kernel; inherit (config.boot) devShmSize; ttyGid = config.ids.gids.tty; upstart = config.system.build.upstart; diff --git a/modules/system/etc/etc.nix b/modules/system/etc/etc.nix index 3dec801b407..7a764a8397b 100644 --- a/modules/system/etc/etc.nix +++ b/modules/system/etc/etc.nix @@ -55,7 +55,7 @@ in system.build.etc = etc; - system.activationScripts.etc = stringAfter [ "systemConfig" "stdio" ] + system.activationScripts.etc = stringAfter [ "stdio" ] '' # Set up the statically computed bits of /etc. echo "setting up /etc..." diff --git a/modules/testing/test-instrumentation.nix b/modules/testing/test-instrumentation.nix index 5ff7201acd3..610d5fcc832 100644 --- a/modules/testing/test-instrumentation.nix +++ b/modules/testing/test-instrumentation.nix @@ -82,8 +82,8 @@ in jobs.klogd.preStart = "dmesg -c > /dev/null"; # Prevent tests from accessing the Internet. - networking.defaultGateway = mkOverrideTemplate 150 {} ""; - networking.nameservers = mkOverrideTemplate 150 {} [ ]; + networking.defaultGateway = mkOverride 150 ""; + networking.nameservers = mkOverride 150 [ ]; # Require a patch to the kernel to increase the 15s CIFS timeout. assertions =