{ configuration ? import "NIXOS_CONFIG" , system ? builtins.currentSystem }: let eval-config = modules: import { inherit system; modules = modules ++ [({ config, lib, ... }: with lib; { imports = filter dir.has-default-nix (concatLists [ (map (p: p + "/2configs") [ ]) (map (p: p + "/3modules") [ ]) ]); krebs.current = { enable = true; host = config.krebs.hosts.${readFile /proc/sys/kernel/hostname}; user = config.krebs.users.${getEnv "LOGNAME"}; }; nixpkgs.config.packageOverrides = pkgs: let kpkgs = import { inherit lib pkgs; }; upkgs = import { inherit lib; pkgs = pkgs // kpkgs; }; in kpkgs // upkgs; })]; specialArgs = { lib = let nlib = import // builtins; klib = nlib // import { lib = nlib; }; ulib = klib // (with klib; let p = + "/4lib"; in optionalAttrs (dir.has-default-nix p) (import p { lib = klib; })); in ulib; }; }; eval = eval-config [ configuration ]; # This is for `nixos-rebuild build-vm'. vm = eval-config [ configuration ]; # This is for `nixos-rebuild build-vm-with-bootloader'. vm-with-bootloader = eval-config [ configuration { virtualisation.useBootLoader = true; } ]; in { inherit (eval) config options; system = eval.config.system.build.toplevel; vm = vm.config.system.build.vm; vmWithBootLoader = vm-with-bootloader.config.system.build.vm; # The following are used by nixos-rebuild. nixFallback = eval.pkgs.nixUnstable; }