e2372502d3
The motivation for this change is the following: As gnu-netcat, e. g. does not support ipv6, it is not suitable as default netcat. This commit also fixes all obvious build issues caused by this change.
50 lines
1.3 KiB
Nix
50 lines
1.3 KiB
Nix
pkgs:
|
|
|
|
let
|
|
bootstrapper = import ./bootstrap.nix {
|
|
inherit (pkgs) stdenv vmTools writeScript writeText runCommand makeInitrd;
|
|
inherit (pkgs) coreutils dosfstools gzip mtools netcat-gnu openssh qemu samba;
|
|
inherit (pkgs) socat vde2 fetchurl python perl cdrkit pathsFromGraph;
|
|
inherit (pkgs) gnugrep;
|
|
};
|
|
|
|
builder = ''
|
|
source /tmp/xchg/saved-env 2> /dev/null || true
|
|
export NIX_STORE=/nix/store
|
|
export NIX_BUILD_TOP=/tmp
|
|
export TMPDIR=/tmp
|
|
export PATH=/empty
|
|
cd "$NIX_BUILD_TOP"
|
|
exec $origBuilder $origArgs
|
|
'';
|
|
|
|
in {
|
|
runInWindowsVM = drv: let
|
|
newDrv = drv.override {
|
|
stdenv = drv.stdenv.override {
|
|
shell = "/bin/sh";
|
|
};
|
|
};
|
|
in pkgs.lib.overrideDerivation drv (attrs: let
|
|
bootstrap = bootstrapper attrs.windowsImage;
|
|
in {
|
|
requiredSystemFeatures = [ "kvm" ];
|
|
builder = "${pkgs.stdenv.shell}";
|
|
args = ["-e" (bootstrap.resumeAndRun builder)];
|
|
windowsImage = bootstrap.suspendedVM;
|
|
origArgs = attrs.args;
|
|
origBuilder = if attrs.builder == attrs.stdenv.shell
|
|
then "/bin/sh"
|
|
else attrs.builder;
|
|
|
|
postHook = ''
|
|
PATH=/usr/bin:/bin:/usr/sbin:/sbin
|
|
SHELL=/bin/sh
|
|
eval "$origPostHook"
|
|
'';
|
|
|
|
origPostHook = attrs.postHook or "";
|
|
fixupPhase = ":";
|
|
});
|
|
}
|