nixpkgs/lib/eval-config.nix
Eelco Dolstra b56d08fc83 * Move the hardware modules back to the main modules tree. No need
for a separate tree.
  
* Pass the path of the modules tree to modules so that you don't have
  to write absolute paths, e.g. you can say

    require = [ "${modulesPath}/hardware/network/intel-3945abg.nix" ];

  instead of

    require = [ /etc/nixos/nixos/hardware/network/intel-3945abg.nix ];

  The latter is bad because it makes it hard to build from a different
  NixOS source tree.

svn path=/nixos/branches/modular-nixos/; revision=16350
2009-07-14 12:36:02 +00:00

38 lines
1 KiB
Nix

# From an end-user configuration file (`configuration'), build a NixOS
# configuration object (`config') from which we can retrieve option
# values.
{ configuration
, system ? builtins.currentSystem
, nixpkgs ? import ./from-env.nix "NIXPKGS" /etc/nixos/nixpkgs
, pkgs ? import nixpkgs {inherit system;}
}:
rec {
inherit nixpkgs pkgs;
configComponents = [
configuration
./check-config.nix
] ++ (import ../modules/module-list.nix);
extraArgs = {
inherit pkgs;
modulesPath = ../modules;
};
config_ =
pkgs.lib.definitionsOf configComponents extraArgs;
# "fixableDeclarationsOf" is used instead of "declarationsOf" because some
# option default values may depends on the definition of other options.
optionDeclarations =
pkgs.lib.fixableDeclarationsOf configComponents extraArgs config_;
# Optionally check wether all config values have corresponding
# option declarations.
config = pkgs.checker config_
config_.environment.checkConfigurationOptions
optionDeclarations config_;
}