diff --git a/wfvm/demo-image.nix b/wfvm/demo-image.nix index 0259c08..183f65c 100644 --- a/wfvm/demo-image.nix +++ b/wfvm/demo-image.nix @@ -41,7 +41,11 @@ wfvm.makeWindowsImage { if impureMode then [] else with wfvm.layers; [ - disable-autosleep disable-autolock disable-firewall + (collapseLayers [ + disable-autosleep + disable-autolock + disable-firewall + ]) anaconda3 msys2 msvc msvc-ide-unbreak ]; diff --git a/wfvm/layers/default.nix b/wfvm/layers/default.nix index 452b737..8fb9958 100644 --- a/wfvm/layers/default.nix +++ b/wfvm/layers/default.nix @@ -154,4 +154,15 @@ in win-exec "reg add HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Personalization /v NoLockScreen /t REG_DWORD /d 1" ''; }; + + # Chain together layers that are quick to run so that the VM does + # not have to be started/shutdown for each. + collapseLayers = scripts: { + name = pkgs.lib.concatMapStringsSep "-" ({ name, ... }: name) scripts; + script = builtins.concatStringsSep "\n" ( + map ({ script, ... }: script) scripts + ); + buildInputs = + builtins.concatMap ({ buildInputs ? [], ... }: buildInputs) scripts; + }; }