{ sources ? import ./nix/sources.nix # do // { nixpkgs = ...; } , nixos-config ? }: let eval = import (sources.nixpkgs + "/nixos/lib/eval-config.nix") { system = builtins.currentSystem; modules = [ nixos-config ]; specialArgs = { inherit sources; }; }; system = eval.config.system.build.toplevel; inherit (eval) pkgs; action = name: pkgs.writeShellScriptBin name '' ${pkgs.nix}/bin/nix-env -p /nix/var/nix/profiles/system --set ${system} # NIXOS_INSTALL_BOOTLOADER=1 ${system}/bin/switch-to-configuration ${name} ''; in pkgs.symlinkJoin { name = "switch-to-configuration"; paths = [ (action "boot") (action "switch") ]; }