liminix/lib/eval-config.nix
Raito Bezarius 258c33f409 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>
2024-05-24 17:36:05 +02:00

24 lines
796 B
Nix

{ 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; };
};
})