about summary refs log tree commit diff
path: root/pkgs/build-support/vm/windows/install/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support/vm/windows/install/default.nix')
-rw-r--r--pkgs/build-support/vm/windows/install/default.nix15
1 files changed, 12 insertions, 3 deletions
diff --git a/pkgs/build-support/vm/windows/install/default.nix b/pkgs/build-support/vm/windows/install/default.nix
index fec7dac0714e..0021bae87bc8 100644
--- a/pkgs/build-support/vm/windows/install/default.nix
+++ b/pkgs/build-support/vm/windows/install/default.nix
@@ -1,16 +1,15 @@
 { isoFile
 , productKey
-, sshPublicKey
 }:
 
 let
-  inherit (import <nixpkgs> {}) lib runCommand;
+  inherit (import <nixpkgs> {}) lib stdenv runCommand openssh;
 
   bootstrapAfterLogin = runCommand "bootstrap.sh" {} ''
     cat > "$out" <<EOF
     mkdir -p ~/.ssh
     cat > ~/.ssh/authorized_keys <<PUBKEY
-    $(cat "${sshPublicKey}")
+    $(cat "${cygwinSshKey}/key.pub")
     PUBKEY
     ssh-host-config -y -c 'binmode ntsec' -w dummy
     cygrunsrv -S sshd
@@ -21,6 +20,14 @@ let
     EOF
   '';
 
+  cygwinSshKey = stdenv.mkDerivation {
+    name = "snakeoil-ssh-cygwin";
+    buildCommand = ''
+      ensureDir "$out"
+      ${openssh}/bin/ssh-keygen -t ecdsa -f "$out/key" -N ""
+    '';
+  };
+
   packages = [ "openssh" ];
 
 in {
@@ -36,4 +43,6 @@ in {
     cygwinPackages = packages;
     inherit productKey;
   };
+
+  sshKey = "${cygwinSshKey}/key";
 }