From f2780fdc6219deb248f01ed3b2d5068f1cfa328d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 18 Sep 2007 15:06:24 +0000 Subject: [PATCH] * Add a top-level default.nix for NixOS which has attributes useful for building parts of the system. E.g. $ nix-build /etc/nixos/nixos -A upstartJobs.xserver to build the Upstart job for the X server, or $ nix-build /etc/nixos/nixos -A kernel to build the NixOS kernel. * /etc/profile.sh: if ~/.nix-defexpr doesn't exist yet, create it as a directory and add links to root's channels, /etc/nixos/nixos and /etc/nixos/install-source.nix (as "nixpkgs_sys"). * boot.useKernel -> boot.kernel. svn path=/nixos/trunk/; revision=9334 --- default.nix | 40 ++++++++++++++++++++++++++++++++++++++ etc/profile.sh | 10 ++++++++-- installer/nixos-rebuild.sh | 13 +++---------- system/options.nix | 16 +++++++-------- system/system.nix | 15 ++++++-------- upstart-jobs/make-job.nix | 4 ++-- 6 files changed, 67 insertions(+), 31 deletions(-) create mode 100644 default.nix diff --git a/default.nix b/default.nix new file mode 100644 index 000000000000..90aa4d33ad97 --- /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 81ce4693bee4..ad9629c1bd6c 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 190e21d371c9..94ef51ee468e 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" ) )