diff --git a/default.nix b/default.nix new file mode 100644 index 00000000000..90aa4d33ad9 --- /dev/null +++ b/default.nix @@ -0,0 +1,40 @@ +let + + configFileName = + let env = builtins.getEnv "NIXOS_CONFIG"; in + if env == "" then /etc/nixos/configuration.nix else env; + + system = import system/system.nix {configuration = import configFileName;}; + +in + +{ inherit (system) + activateConfiguration + bootStage1 + bootStage2 + etc + extraUtils + grubMenuBuilder + initialRamdisk + kernel + nix + nixosCheckout + nixosInstall + nixosRebuild + system + systemPath + config + ; + + manifests = system.config.get ["installer" "manifests"]; # exported here because nixos-rebuild uses it + + upstartJobsCombined = system.upstartJobs; + + # Make it easier to build individual Upstart jobs (e.g., "nix-build + # /etc/nixos/nixos -A upstartJobs.xserver"). + upstartJobs = { recurseForDerivations = true; } // + builtins.listToAttrs (map (job: + { attr = if job ? jobName then job.jobName else job.name; value = job; } + ) system.upstartJobs.jobs); + +} diff --git a/etc/profile.sh b/etc/profile.sh index 81ce4693bee..ad9629c1bd6 100644 --- a/etc/profile.sh +++ b/etc/profile.sh @@ -62,9 +62,15 @@ fi # Set up a default Nix expression from which to install stuff. -if ! test -L $HOME/.nix-defexpr; then +if test ! -e $HOME/.nix-defexpr -o -L $HOME/.nix-defexpr; then echo "creating $HOME/.nix-defexpr" >&2 - ln -s /etc/nixos/install-source.nix $HOME/.nix-defexpr + rm -f $HOME/.nix-defexpr + mkdir $HOME/.nix-defexpr + ln -s /etc/nixos/install-source.nix $HOME/.nix-defexpr/nixpkgs_sys + ln -s /etc/nixos/nixos $HOME/.nix-defexpr/nixos + if test "$USER" != root; then + ln -s /nix/var/nix/gcroots/per-user/root/channels $HOME/.nix-defexpr/channels_root + fi fi diff --git a/installer/nixos-rebuild.sh b/installer/nixos-rebuild.sh index 190e21d371c..94ef51ee468 100644 --- a/installer/nixos-rebuild.sh +++ b/installer/nixos-rebuild.sh @@ -31,10 +31,7 @@ if test -z "$NIXOS_CONFIG"; then NIXOS_CONFIG=/etc/nixos/configuration.nix; fi # Pull the manifests defined in the configuration (the "manifests" # attribute). Wonderfully hacky. if test -z "$NIXOS_NO_PULL"; then - manifests=$(nix-instantiate --eval-only --xml --strict \ - $NIXOS/system/system.nix \ - --arg configuration "import $NIXOS_CONFIG" \ - -A manifests \ + manifests=$(nix-instantiate --eval-only --xml --strict $NIXOS -A manifests \ | grep ' $out/etc/event.d/$name" + runCommand ("upstart-" + job.name) {inherit (job) job; jobName = job.name;} + "ensureDir $out/etc/event.d; echo \"$job\" > $out/etc/event.d/$jobName" ) )