feat(entrypoint): expose evalModules
for external interop
e.g. colmena can make use of it to declare an heterogeneous set of systems, mixing Liminix and NixOS systems. Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
This commit is contained in:
parent
00a99d16b5
commit
258c33f409
2 changed files with 33 additions and 13 deletions
24
lib/eval-config.nix
Normal file
24
lib/eval-config.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{ nixpkgs ? <nixpkgs>, pkgs ? (import <nixpkgs> {}), lib ? pkgs.lib }:
|
||||
args:
|
||||
let
|
||||
modulesPath = builtins.toString ../modules;
|
||||
in
|
||||
# FIXME: we could replace the `lib` by a lib-only minimal nixpkgs.
|
||||
(import "${nixpkgs}/lib/modules.nix" { inherit lib; }).evalModules (args // {
|
||||
specialArgs = (args.specialArgs or {}) // {
|
||||
inherit modulesPath;
|
||||
};
|
||||
modules = (args.modules or []) ++ [
|
||||
"${modulesPath}/hardware.nix"
|
||||
"${modulesPath}/base.nix"
|
||||
"${modulesPath}/busybox.nix"
|
||||
"${modulesPath}/hostname.nix"
|
||||
"${modulesPath}/kernel"
|
||||
"${modulesPath}/s6"
|
||||
"${modulesPath}/users.nix"
|
||||
"${modulesPath}/outputs.nix"
|
||||
# FIXME: we should let the caller inject `pkgs` and `lim` ideally...
|
||||
] ++ lib.optional (pkgs ? lim) {
|
||||
_module.args = { inherit (pkgs) lim; };
|
||||
};
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue