From a2600b7bc391a4bba7863abb66b219d3b6318d7c Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 11 Oct 2013 13:33:44 +0200 Subject: [PATCH] Terrible backward compatibility hack --- nixos/lib/build-vms.nix | 2 +- nixos/lib/eval-config.nix | 6 +++--- nixos/lib/nixpkgs.nix | 8 ++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 nixos/lib/nixpkgs.nix diff --git a/nixos/lib/build-vms.nix b/nixos/lib/build-vms.nix index aad85aedc48..d20fbc1cc66 100644 --- a/nixos/lib/build-vms.nix +++ b/nixos/lib/build-vms.nix @@ -1,6 +1,6 @@ { system, minimal ? false }: -let pkgs = import ../.. { config = {}; inherit system; }; in +let pkgs = import ./nixpkgs.nix { config = {}; inherit system; }; in with pkgs.lib; with import ../lib/qemu-flags.nix; diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix index 89f81cf70bd..72ba66cdbac 100644 --- a/nixos/lib/eval-config.nix +++ b/nixos/lib/eval-config.nix @@ -30,7 +30,7 @@ rec { extraArgs = extraArgs_ // { inherit pkgs modules baseModules; modulesPath = ../modules; - pkgs_i686 = import ../.. { system = "i686-linux"; }; + pkgs_i686 = import ./nixpkgs.nix { system = "i686-linux"; }; utils = import ./utils.nix pkgs; }; @@ -47,7 +47,7 @@ rec { pkgs = if pkgs_ != null then pkgs_ - else import ../.. ( + else import ./nixpkgs.nix ( let system = if nixpkgsOptions.system != "" then nixpkgsOptions.system else system_; nixpkgsOptions = (import ./eval-config.nix { @@ -55,7 +55,7 @@ rec { # For efficiency, leave out most NixOS modules; they don't # define nixpkgs.config, so it's pointless to evaluate them. baseModules = [ ../modules/misc/nixpkgs.nix ]; - pkgs = import ../.. { system = system_; config = {}; }; + pkgs = import ./nixpkgs.nix { system = system_; config = {}; }; }).optionDefinitions.nixpkgs; in { diff --git a/nixos/lib/nixpkgs.nix b/nixos/lib/nixpkgs.nix new file mode 100644 index 00000000000..10096f58c79 --- /dev/null +++ b/nixos/lib/nixpkgs.nix @@ -0,0 +1,8 @@ +/* Terrible backward compatibility hack to get the path to Nixpkgs + from here. Usually, that's the relative path ‘../..’. However, + when using the NixOS channel, resolves to a symlink to + nixpkgs/nixos, so ‘../..’ doesn't resolve to the top-level Nixpkgs + directory but one above it. So check for that situation. */ +if builtins.pathExists ../../.version then import ../.. +else if builtins.pathExists ../../nixpkgs then import ../../nixpkgs +else abort "Can't find Nixpkgs, please set ‘NIX_PATH=nixpkgs=/path/to/nixpkgs’."